RS485知识记录。
1、发送端 AB间的电压差 +2 ~ +6v 逻辑“1” -2 ~ -6v 逻辑“0”
2、接收端 AB间的电压差 大于 +200mv 逻辑“1” 小于 -200mv 逻辑“0
3、协议符合RS232协议,停止位,起始位等
RS485问题记录
一、问题记录
最近做一个项目,需要使用RS485读取NS的重力传感器,我们自己的工控机使用的UART转RS485芯片是SN65HVD,接线完成后总是发现广播命令读取重力数据过程中时断时续,不稳定。
二、问题解决
1、先附上我们的485部分
2、因为读数不稳定,找了一个485串口同步测试,发现很稳定,怀疑是我们GPIO切换收发的问题,示波器测试了一下GPIO信号和返回数据的时序,见下
3、测试发现,总有一个传感器的数据返回时间特比快,命令发送完300us左右就会返回数据,但是我们的GPIO从发送切换到接收状态最短时间也是4-5ms,甚至有时候10ms左右
4、查阅传感器资料可知,当多个传感器节点接入485网络,数据返回时间可以根据传感器地址信号控制,返回时间=(N-1)*3ms,意思就是如果你是6号传感器,那么数据返回时间就是命令发送完的15ms。
5、因此把5个传感器地址改为了6,7,8,9,A。广播命令读取重力数据,5个传感器可以稳定读取!到此本以为问题已经解决,呵呵,我还是年轻了,因为又发现有单播的方式读取传感器数据,那是一个也读不到!!!稳稳的读不到,但是USB转485串口可以读到,又进一步了解了 一下,发现单播命令的时候,数据返回时间不受传感器自身地址的控制,每个返回时间都是300us。。。这还怎么玩,GPIO表示:臣妾做不到啊!没办法只能换了一个芯片,MAX13487
6、MAX13487这个芯片不需要外部控制收发,可以自己检测电平,实现收发控制。
7、更换芯片后,测试结果每次都能读取了,关于这个芯片更多细节可以下载规格书查看,总之就是告诉诸位,GPIO切换RS485收发这种设计,真的有点让人头大,系统不稳定的运行时间,导致GPIO切换时间每次不完全一致,读传感器不稳定。