最近调试空调的485通信。
(1)PC通过485能够正常的空调通信
(2)自己的模块485通信和PC通信正常。//PC收发的数据(小于2K),都能够正常显示
(3)自模块和空调通信失败。
1、物理上的连线
尽量是用双绞线
2、通信配置
波特率设置,停止位,校验位的设置。
3、调试工具
串口调试工具,usb转485串口工具。
4、自模块和空调通信在中间使用usb转485工具进行监控
(1)PC向空调发送控制指令,空调端能够正常返回数据。同时关键点返回的数据自模块也能够正常的接收。
(2)由上一步判断,推断硬件上没有问题。
(3)目前锁定的发送的数据是否存在差异。
5、检测空调端485接收引脚。
这里注意:别人的设计中,即使是在一个微电电路中也使用了电源的隔离。因此,我发现空调电路板上的GND,其实并不是实际的地。
(1)对比PC向空调发送的数据和自模块向空调发送的数据。 //在使用示波器取点的时候,进行采用485芯片的地,同时判断接收引脚的数据情况。
(2)自模块向空调端发送数据,使用PC监控发现数据是正常的;那问题可能出现在哪里????
(3)下一步:自模块向空调发送的数据在延时上的问题。
PC
高低电平 830 us
起始位 800us
停止位 900us
自模块
高低电平延时 800 us
起始位 800 us
停止位 800us
延时停止位的延时相差100us,对于MCU处理性能较好的IC,那这方面是没有问题。是兼容的,所以就能够正常的通信。
6、最终问题的解决:
空调的电路设计上,输出的 并不是严格意义上的485信号,即使是我的模块似乎输出是行业内的标准也不整改正常的通信。
7、而且现在的问题是,为什么PC能够通信。
原因很简单,那就是PC首先输出的波形和理论上的延时是具有良好的兼容的。而空调就不能够实现。
8、从测试数据上看?
似乎没有问题,485上的总线数据都正常的。但是对于处理能够较为弱的空调IC来说,这就是本次问题的关键。
因此将停止位时间延长,便能够正常的通信。