1、RS485技术参数
两线电压差2~6V,兼容TTL电平10m距离,最高速度35Mbps。1km距离,100Kbps一般最多支持32个节点,某些特制芯片可达400终端电阻:120R通讯链路方式:总线型(如下图1)通讯方式:半双工
2、硬件电路
如下图2,R15、R16取值参考了原子哥的设计,RO、D1分别对应串口RX和TX,而中间的RE和DE则是(发送\接受)控制端,当端口为1时,为发送模式、为0时,为接受模式。
485协议中的,半双工模式则要求一方为发送模式,一方为接收模式
3、程序逻辑
由于RS485不能像某些IIC器件一样,设置硬件地址位(其实也是软件设置的),所以我们需要使用一种方法来对该总线下的单片机设置地址,这里推荐的做法是使用单片机模拟EEPROM,这样就可以不用每次都去设置地址,修改方式可以为复用下载器的CLK\DAT两个端口,作为串口1使用,如果不想让用户二次修改,可以在程序中判别该位置是否被读写过。
另外的一种方法就是使用拨码开关,但此种办法需要占用IO,并不推荐。
由于RS485通讯模式类似广播。所以需要在通讯过程中,建议做好数据包的校验,添加报头、报尾、校验位、地址位等,可以在串口接收中断中进行校验,提高程序的执行效率(N76E003使用多个中断时,可能会出现速度变慢的问题)。
如果从机需要从接收器转换为发送器,直接翻转控制RE、DE的IO口电平即可。最好每次发送或正确接收完了,就切换到另一种状态下。