485通信在发送状态切换到接收状态多发送个0的解决办法
最近调试485的通讯的问题,在485由发送状态切换到接收状态时候多出一个字节的00的问题,查阅相关资料算是暂时解决,做一下笔记,也希望能帮到需要的童鞋。
大概现象就是这样的:
下面是以我这边的485的原理设计
使用的485的芯片为MAX3486,将485上的A和B信号转换为串口的TXD和RXD方式传送到控制芯片,就上面提到的问题大概分析为:
在485发送完成后,TX为高电平,485总线上A线电压 > B线电压;
将485从发送切换到接收,485接口芯片的促使A、B线为高阻态;
此时由于A、B线之间的匹配电阻120R,使A、B线的电压差减小到0;
那有可能有两种情况:
1、如果考虑总线上电感的因素,有可能导致B线的电压 > A线电压;
因此,这个时刻对于接收端来说,会出现一个0电平。
2、由于在转换为接收状态的的时候,A、B信号线转换为高阻状态,但是RS232在空闲时期TTL电平总为高电平状态,在485转换状态切换时候控制器端TTL变为低电平,满足了232的起始的条件。
由于在232的硬件里边,接收端RX脚上出现一个下降沿,满足232的起始位条件,可以认为是一个字节传输的开始。
所以就导致了接收端接收了一个“0”字节。
至于接收端认为启动了一个字节的传输,满足了起始条件,但是并不满足232传输的停止位;这个问题就不清楚了。
综上说明,简单的几个解决的方法为:
1、在串口的RXD信号线上接一个上拉电阻(我开始使用上拉电阻的阻值为6.8K,没有解决问题,换成4.7K的阻值,解决了);
2、在485的A、B线上,分别对地接一个小电容;
3、120R的匹配电阻,可以换成其他阻值,或者如果短距离的话可以不接匹配电阻;