RS485芯片与单片机接口中的一个容易忽略的隐患
  
   
本站广告
  ENC28J60+uIP DHCP动态获取IP及UDP广播服务端示例
  ENC28J60+uIP 基于TCP的MODBUS IO示例
  C720H5上实现MODBUS远程IO
  ENC28J60+uIP HTTP GET方式将温度数据上传到web服务器
  FM1702读写S50(也叫M1)卡相关资料
 
 
 如下图,这是一个RS485芯片与单片机连接的典型电路,通常我们用一个IO口来控制485的发送与接收选择引脚。

 
 

 

那么隐患在哪里呢?在单片机的接收引脚RXD上。当单片机发送数据时方向控制引脚DIR变高,使485芯片处于发送状态,再看看485芯片的内部原理图:

 

当DE和RE两个引脚拉高时,R三态门是处于关闭状态,其输出RO也是处于不稳定的电平状态,输出高还是输出低那要看运气了,如果是高,那你的程序可能没有任何问题,但如果是低那你的程序会出现莫名其妙的问题,原因是单片机的UART是全双工的,发送的同时也处于接收状态,在RXD引脚上一旦出现低电平那就触发一个接收逻辑,你会发现单片机一发送,目标还没有响应你的程序会收到一个无用的数据,当然如果在编写程序时意识到这个问题,当然可以通过程序的方法来解决此事,但还是不如从源头上解决此事来的爽快。

解决办法1:RXD引脚接一个上拉电阻

解决办法2:在程序中打开RXD引脚上的内部上拉电阻

 

 

 

 

 

 

芯艺工作室    蒙ICP备06005492号

Copyright© 2004-2020 ChipArt Studio All Rights Reserved