最近调试485的通讯的问题,在485由发送状态切换到接收状态时候多出一个字节的00的问题,查阅相关资料算是暂时解决,做一下笔记,也希望能帮到需要的童鞋。

大概现象就是这样的:

cubemx RS485每次切接收会收到一个数据 rs485发送对接收不对_MAX3486

下面是以我这边的485的原理设计

cubemx RS485每次切接收会收到一个数据 rs485发送对接收不对_上拉电阻_02

使用的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的匹配电阻,可以换成其他阻值,或者如果短距离的话可以不接匹配电阻;

cubemx RS485每次切接收会收到一个数据 rs485发送对接收不对_RS485_03