[应用方案] N76E003 之 RS485 通讯

[复制链接]
5278|12
 楼主| 晓伍 发表于 2021-7-2 13:26 | 显示全部楼层 |阅读模式
1、RS485技术参数
  • 两线电压差2~6V,兼容TTL电平
  • 10m距离,最高速度35Mbps。1km距离,100Kbps
  • 一般最多支持32个节点,某些特制芯片可达400
  • 终端电阻:120R
  • 通讯链路方式:总线型(如下图1)
  • 通讯方式:半双工

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ3OTg1OTA=,size_16,color_FFFFFF,t_70.jpg


 楼主| 晓伍 发表于 2021-7-2 13:27 | 显示全部楼层
2、硬件电路

如下图2,R15、R16取值参考了原子哥的设计,RO、D1分别对应串口RX和TX,而中间的RE和DE则是(发送\接受)控制端,当端口为1时,为发送模式、为0时,为接受模式。

485协议中的,半双工模式则要求一方为发送模式,一方为接收模式
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ3OTg1OTA=,size_16,color_FFFFFF,t_70.jpg


 楼主| 晓伍 发表于 2021-7-2 13:29 | 显示全部楼层
3、程序逻辑
由于RS485不能像某些IIC器件一样,设置硬件地址位(其实也是软件设置的),所以我们需要使用一种方法来对该总线下的单片机设置地址,这里推荐的做法是使用单片机模拟EEPROM,这样就可以不用每次都去设置地址,修改方式可以为复用下载器的CLK\DAT两个端口,作为串口1使用,如果不想让用户二次修改,可以在程序中判别该位置是否被读写过。

另外的一种方法就是使用拨码开关,但此种办法需要占用IO,并不推荐。

由于RS485通讯模式类似广播。所以需要在通讯过程中,建议做好数据包的校验,添加报头、报尾、校验位、地址位等,可以在串口接收中断中进行校验,提高程序的执行效率(N76E003使用多个中断时,可能会出现速度变慢的问题)。

如果从机需要从接收器转换为发送器,直接翻转控制RE、DE的IO口电平即可。最好每次发送或正确接收完了,就切换到另一种状态下。


稳稳の幸福 发表于 2021-7-4 17:15 | 显示全部楼层
485是一个自定义很强的通信标准。
xinxianshi 发表于 2021-7-5 09:28 | 显示全部楼层
工业应用都是485,传输距离长,更可靠
sparrow054 发表于 2021-7-14 15:15 | 显示全部楼层
N76E003是啥?#¥……%……
勇敢的大白菜 发表于 2021-7-14 16:08 | 显示全部楼层
如果要是挂上很多设备的话,是不是需要对每个设备进行地址的设置?
木木guainv 发表于 2021-8-6 20:35 | 显示全部楼层
最多能挂多少设备啊
xiaoqizi 发表于 2021-8-6 20:36 | 显示全部楼层
需要加隔离吗  
wakayi 发表于 2021-8-6 20:38 | 显示全部楼层
比较可靠的传输距离说多远啊
renzheshengui 发表于 2021-8-6 20:38 | 显示全部楼层
这个芯片的应用还是很多的
paotangsan 发表于 2021-8-6 20:40 | 显示全部楼层
每个设备都需要分别设置地址吗
asmine 发表于 2021-8-10 15:09 | 显示全部楼层
兼容TTL么?不是吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

4362

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部