嵌入式调试笔记
一、MAX13487芯片产生数据回环问题
前言
记录一下调试电路板过程中遇到的问题。由遇到的问题回顾所涉及的知识点。
一、MAX13487芯片-支持自动换向
MAX13487E/MAX13488E是+5V供电、半双工、具有±15kV ESD保护的RS-485/RS-422兼容收发器,包含一路驱动器和一路接收器。MAX13487E/MAX13488E具有热插拔功能,可以消除上电或热插入时总线上的故障瞬变信号。
MAX13487E/MAX13488E具有Maxim专有的自动选向控制功能。这种结构使其非常适合多种应用,比如:隔离的RS-485端口(这种情况下,驱动器输入用于连接驱动器使能信号,以便驱动差分总线) 。MAX13487E具有低摆率驱动器,能够减小EMI和不恰当的电缆端接所引起的反射,实现高达500kbps的无差错数据传输。MAX13488E驱动器的摆率未被限制,允许高达16Mbps的传输速率。
芯片资料
二、设计摘要
1.功能框图
2.引脚说明
RE接高电平,设置为自动收发。
3.应用电路
对应到实际应用电路
三、数据回环问题
现象:
调试过程中发现,串口发送数据后,首先会接收到相同的数据。
分析:
1.MAX13487E这款RS485收发器具备自动收发控制功能,其接收器在关闭接收器(/RE = “1”)时,接收器输出为高阻态,这一点与普通的RS485收发器有所不同。如果在RO引脚没有接上拉电阻,此时将会耦合噪声,产生所谓的“回声”。另外,为了建立可靠地通信,同样需要在RO引脚加上拉电阻。加上拉电阻后,确保Rx关闭时处于高电平,可解决这一问题。
2.参考功能框图,接收引脚RO的使能由RE引脚或者内部状态机制决定,而内部状态机制有DI和A-B的当前状态这两个输入决定。DI为低电平时,器件将总线驱动至低电平;DI为高电平时,器件在短时间内将总线驱动至高电平,随后关断驱动器释放总线。
简单的讲,DI为高电平的时候,短时间后,驱动器失能,接收器使能,此时A-B因为上下拉电阻的存在,使RO为高电平;DI为低电平的时候,驱动器使能,接收器失能,RO电平有MCU电平决定。而MCU的RX引脚程序里默认是下拉,这就导致RO引脚的电平变化跟DI引脚的电平变化时一致的,由此造成了数据回环现象。
解决办法:
根据分析的原因,有两个解决方法。
1.在程序中,将RXD引脚初始化为上拉输入,经测试问题解决。
2.设计电路时,将RO引脚接上拉电阻。
总结
参考文章:
https://ez.analog.com/cn/interface-isolation/w/wiki/28949/max13487e
https://blog.csdn.net/key_qt1/article/details/97926251