RS485问题记录
背景介绍
遇到设备不能正常启动的问题,只有打开串口后设备才可以正常工作,最后终于定位到问题点:
RS485芯片不工作时AB线间电压差代表的默认应该是逻辑高(异步串行通信(UART)的起始位是低电平,结束位是高电平),如果是低(A低B高差值大于一定范围)那么就会导致串口一直在收数,如果程序里没有针对接收字长的限制就有可能导致接收缓存数组buf越界,导致程序跑飞。而正常运行后也会导致cpu占用率过高(一直在接收数据),影响产品的性能。
所以硬件上485A、B一定要做好上下拉。
在自己的硬件有上下拉的情况下也有可能被连接的485设备将电平拉错。