串口上下电时候随机发送错误字节,如何解决?
时间:12-13
整理:3721RD
点击:
单片机外面用 MAX3232EEUE 扩展了RS232串口,3线的(RS232 TXD RXD GND)。PC机用USB
转RS232串口的转接线缆和扩展的这个串口连接,PC机上运行串口调试助手。现在发现板
子上电或者下电时候,串口调试助手能收到错误的数据,大部分情况下都是0x00,偶尔还
有其它的数比如0xF0,0xC0之类的。
不太清楚啥个原因,示波器测了点上下电时候的波形。通道1是RS232串口的TXD,通道2是
单片机串口的TTL电平的TXD。
1. 出现错误的原因是啥?
2. 这个情况如何解决为好呢?在RS232-TXD的位置加一个下拉电阻能成么...
有遇到这个情况的大侠么?多谢指教!
转RS232串口的转接线缆和扩展的这个串口连接,PC机上运行串口调试助手。现在发现板
子上电或者下电时候,串口调试助手能收到错误的数据,大部分情况下都是0x00,偶尔还
有其它的数比如0xF0,0xC0之类的。
不太清楚啥个原因,示波器测了点上下电时候的波形。通道1是RS232串口的TXD,通道2是
单片机串口的TTL电平的TXD。
1. 出现错误的原因是啥?
2. 这个情况如何解决为好呢?在RS232-TXD的位置加一个下拉电阻能成么...
有遇到这个情况的大侠么?多谢指教!
232的输入端已经有下拉电阻了。可能是地之间的电位差导致的吧。
有就有吧,靠软件把这些滤掉不就可以了。比如0x55 0xaa之后才是正确的数据。
MAX3232EEUE 的10 11脚对16脚接上拉电阻。
不过下电时若串口芯片电荷泵储能较多,则不能避免出现误发。
最好下电之前断开USB转RS232串口与MAX3232EEUE的连接。
大体原因是UART的CMOS电平默认1,0会给出起始位,触发接收。
具体细节和接收器的设计有关。
一般不管这个,靠数据校验/重传搞定,这样消耗最小。
解决的话,加电源监控,主电源不Good就关了232。
但这个过隔离器的话,要多一个PG的隔离通道。。。
或者,尽量长时间的保持CMOS TX为1,直到收发器的电荷泵没电了。。。
要3232干什么
直接用USB转成TTL串口连单片机不就行了
多谢各位的回复!
与收发器的设计和电荷泵有关的话,大伙有没有用过那种针对这个细节问题有妥善避开
的那种收发器啊?
电荷泵里面的能量有啥办法能够快速释放掉呢?
有些收发器有EN和供电控制脚,不过貌似为了节能降功耗用的,对我说的这个问题可能
没啥用吧。
多谢指教....
上边的高手们说的很好了,这个事最经济的解决方法就是软件过滤掉
无论是检测sof eof还是校验加超时,很简单,硬件解决这个问题代价太大了,真不值当的
用有Enable的收发器,单片机控制enable信号,不发送时disable掉发送。同时enable引
脚上拉/下拉,保证上电单片机还没有介入控制时发送是disable的。
感谢回复!
感谢楼上大侠们的回复!受教了!