问题现象
调试串口和RS485共用同一个Uart,通过RS485与Mcu通信,可以正常收发数据;通过调试串口和Mcu通信,Mcu可以正常发送数据,但是Mcu无法接收来自Pc的数据。
原因分析
分别测试Rs485通信和调试串口通信时Mcu的Rxd管脚的信号,发现Rs485通信时,Mcu的Rxd管脚信号正常;调试串口通信时,Mcu的Rxd引脚上的信号幅度只有Rs485通信时信号幅度的一半。怀疑Rs485导致调试串口接收异常,结合实际电路原理图和Rs485芯片数据手册,发现Rs485芯片默认处于接收状态,此时Rs485芯片的Txd管脚(连接Mcu的Rxd)将推挽输出高电平,导致调试串口输出的信号不完整,Mcu无法识别。
解决方案
使用调试串口通信时,将Rs485切换到发送状态,此时Rs485芯片的Txd管脚默认处于浮空状态,调试串口的数据可以正常传输,Mcu和调试串口通信正常,问题解决。