公司的一款产品,使用485自动收发电路,测试的时候,接收和发送的内容是错误的,但是电路在其它产品上是ok的。
使用MCU的串口去和485进行数据通信,发送单字节内容,数据正常;发送多字节内容,数据错误。485电路和MCU的串口断开后测试,各自功能验证,收发数据正常。以为是电路问题,尝试在485和串口之间上下拉电阻,串接电阻等方法,现象依旧。后来同事提点,原来时485的使用搞错了。
发送多字节数据的时候,不能够进行数据接收任务,这样误把485当作全双工使用,其实485是半双工的通信方式。
485是一主多从的通信方式,主机查询从机时,对应的从机进行作答,其它从机不能进行数据发送任务,等当前从机发送完后,其它从机在主机呼叫后才可以进行作答。
一开始的方向是怀疑MCU程序中串口的配置初始化有问题,后来怀疑硬件电路问题,最后才找到原因,485的通信机制搞错了。好几天的事情,终于解决了,没文化真可怕。