RS-485标准接口是单片机系统常用的一种串行总线之一。采用半双工通信方式,它文成TTL电平转换为RS-485电平的功能。
以MAX485芯片为例,其结构和引脚都非常简单,内部含有一个驱动器和接收器。MAX485的封装有DIP、SO和uMAX三种。
DIP封装如下
管脚的功能如下:
R0:接收器输出端,若A比B大200mV,RO为高(接收为高电平);反之则接收为低电平。
RE: 接收器使能端,RE为低时,RO有效(接收有效);RE为高,RO呈高阻状态。
DE:驱动器使能端,DE=1,DI有效(输出有效);若DE=0,则DI呈高阻态。
DI:驱动输入端。DI=0,有A=0,B=1; DI=1,则A=1,B=0。
GND:接地
A:同相接收器输入和同相驱动器输出。
B:反相接收器输入和反相驱动器输出
VCC:电源端,一般接3.3V(5V)。
以下为典型的485工作电路,平衡电阻Rp通常取100~300欧姆。
RS485一种比较常用的现场总线,运用领域比较广泛。
曾经写好的485程序,过段时间貌似好像又不行了,似乎没有改哪里。程序莫名其妙被更改了,可能么 ? 答案是NO。
那么应该是硬件上有问题,就要进行485功能调试,排除故障。假设硬件设计上没有问题。
出现过故障:
1、485通信能发不能收?
2、485发送不正常?
3. 485通信乱码(非波特率问题)
工具:电脑(USB转串口TTL再转RS485) 板上(UART口/RS485)
总的来说一个485程序经过以下几步调试应该OK。
1、确定板上UART与电脑通信正常(不经过485,证明MCU和电脑通信正常)。
2、切换各种波特率,UART与电脑通信
3、擦除板上程序,使用电脑USB-->TTL->RS485->RS485->TTL与电脑进行通信(若通信不正常,则一定是RS485部份存在问题,实现电脑通过两个485通信)
4、切换各波特率再与电脑进行通信
5、最后编写相应程序,采集485设备数据(与设备通信时,通常可能出现采集数据无响应,这时一般需要考虑两者的波特率是否匹配及是否存在线路干扰问题)
485通信能发不能收:使能RE/DE始终置1,
485发送:使能RE/DE始终清零。
总结——一个IC器件的硬件调试
1、熟悉IC器件的DataSheet,每个管脚在不同功能是的不同配置,以及不同功能的时序图,保证软件逻辑没有问题。
2、确定各管脚有没有虚焊、短路、短路,特别是电源和地不能短路。在上电后,确保各管脚输入没有问题。可以用无水酒精把板子擦洗一般,因为在调试过程中某些管脚总会搞进点污秽,引起短路,这个方法可以解决大约40%板子突然罢工的问题(确认是板上问题)。
3.在2的基础上如直接输出有问题,则很大的概率是IC器件挂了(一般很皮实的)
4.经过接口线外接器件时,外接器件收到有问题,很有可能是接口线问题,一般通说一步一步沿着信号传输的方向查找问题。