关于MAX3485芯片导致的多串口通讯首字节00问题


MAX3485的芯片不多解释了,就是3.3V版的485通讯芯片,具体功能请百度手册,下面具体说一下使用该芯片注意的一个问题。

众所周知,485采用半双工模式通讯,且控制 485芯片读写方向的管脚在主机(如MCU等,相对于外设)这一侧,所以决定了正确的485通讯次序,应该是,MCU需要向外设写数据的时候就把485的写引脚拉高,写完后马上拉低,代表马上进入等待接收外设数据的状态,大部分的时候MCU都是处在等待外设数据进来的状态,所以485通讯中,发起通讯请求的一定是主机或MCU这一侧,丛机或外设只能被动响应,不应发起主动请求,否则整个485通讯就乱套了,尤其是485总线上挂了多个外设的时候,理论上要求主机或MCU只能有一个存在,且通讯只能有主机或MCU主动发起。

下面进入正题,之前小编做了个多功能板,其中涉及到一个MAX3485芯片,因为事先没有充分的查阅资料,绘制出的原理图如下:


实际进入代码操作的时候,发现串口助手收到的数据中第一个字节总是00,百思不得解,网上各种说法都有,后来通过断点方式,一步一步排查,把问题点缩小到485通讯上,然后回看原理图,比对485标准接法,发现上图的A和B端点竟然没有接上,下拉电阻!!!而AB之间仍然跨接了匹配电阻,这样可能导致的一个问题是,AB差分出来的信号不稳定,尤其是A,B引脚处在悬空状态的时候,容易引发一个0信号,让MAX3485芯片误以为有信号进入,然后把0传递给了MCU,这就是问题所在。见其他说法:下图是MAX3485的引脚说明:

网上搜到的这个说法(红线框内的应该有代表性,在板子实在不想飞线(小编承认有些颜控增加上下拉电阻的情况下,果断把R19摘掉,重新烧录,上电测试,一切正常 。如下图 两片板之间的 485通讯正常

 

单板回环的232收发数据也正常了,没有了讨厌的00首字节!至此,该硬件彻底OK。

不过,如果板子要用在工矿场合,真正实现远距离传输的时候,最好还是原理图上加上下拉电阻和匹配电阻,标准接法永远不会错!如果只是作为工具,短距离调试之用,那么上下拉电阻和匹配电阻统统去掉也无妨!注意是一并去掉,不能不要上下拉而保留匹配电阻。

点击数: 772   打印  添加到收藏   发布时间: 2019-09-30




上一篇:微波雷达的两个明显作用
下一篇:手动安装opkg方法ipk包-openwrt系统lede





» 相关内容
  PID程序中DAC输出范围的限定区..
  MCU中断编写注意事项
  数据校验原理及简化实现
  一片顶两片的LDO
  三步实现ModelSim仿真Quartus..
  数字下变频的理解
  匿名IMU版本4.34的下位机协议..
  轻量级数据库SQLite大小的说明
  BUFF的有效性理解
  PHP页面顶端出现空白问题
  高速数据采集的一些关键点
  软硬件通用加密思路-针对PC端..
  隔离变压器的作用
  GSM下Unicode和中文字符转码
  Teamview远程ID和PWD自动回传..