使用芯片:D211BBV
使用Luban Lite SDK版本:V1.2.0
串口模式:RS232 normal
原因分析:
串口轮循发送数据函数返回时,实际串口发送数据并没有结束。如果此时控制485芯片收发引脚,会导致最后几个字节发送失败。原因是官方SDK中串口轮询发送函数发送数据没有检测数据是否发送完成导致的。
错误现象:
解决办法:
调用hal_usart_flush函数,确保串口数据真正发送完成。
rt_device_write(serial1, 0, uart[1].tx_buf, uart[1].tx_len);
hal_usart_flush(serial1->user_data, USART_FLUSH_WRITE);
正常发送数据
最近编辑记录 lqcfly (昨天 07:21:27)
离线
芯片支持RS-485硬件自动控制收发方向,即串口支持RS485模式。用硬件RS485-DE引脚不是更方便简单?
这个方式是可以,但是为了兼容以前的硬件和程序,没办法直接使用RS485模式
离线