找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

RS-485收发自动控制

[复制链接]
admin 发表于 2013-5-23 18:20:00 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
RS-485是一种基于差分信号传送的串行通信链路层协议。它解决了RS-232协议传输距离太近(15m)的缺陷,是工业上广泛采用的较长距离数据通信链路层协议。
由于它使用一对双绞线传送差分信号,属半双工通信,所以需要进行接收和发送状态的转换。一般的8脚TTL电平到RS-485电平转换芯片的引脚定义如图1所示。
b98a2b129313b07e625e81b20cd7912396dd8c21.jpg
图1  8脚的RS-485芯片引脚定义
  其中,引脚意义如下:
  RO——接收数据的 TTL电平输出;
  RE——低电平有效的接收允许;
  DE——高电平有效的发送允许;
  DI——发送数据的TTL电平输入;
  A——485差分信号的正向端;
  B——485差分信号的反向端。
  在RS-485电路设计中,通常将和DE短接,用1根信号线来控制,这样可以做到收发的切换。
  RS-485芯片通常处于接收状态。当要发送数据时,由程序控制/DE 变为高电平,然后UART单元发送数据,程序要等待发送完毕后,再将RS-485芯片转换到接收状态。发送完毕的标志一般由UART的特定寄存器提供状态指示,程序需要去查询。
  在单片机电路中,一般用1根I/O线来控制RS-485芯片的接收和发送状态的转换。这样需要由软件来控制 I/O引脚的电平,以达到控制RS-485收发转换的目的。
这样的控制方法造成RS-485通信存在以下问题:
  ◇ 在想要发送数据和真正的能发送数据之间,存在一定的转换延时;
  ◇ 如果发送到接收的转换时机不当,则会造成数据丢失;
  ◇ 在接收和发送数据转换期间,容易引入干扰,使UART单元收到多余的杂乱数据。
  鉴于以上情况,笔者经过探索和参照其它相关电路,设计了一种可以实现RS-485接收和发送零延时转换的电路,如图2所示。
f0690a10b07eca80cce6e85d912397dda0448321.jpg
图2  RS-485零延时转换电路
  当不发送数据时,TTL电平的Tx信号为高电平,经V1反向为低电平,RS-485芯片处于接收状态。
  当发送数据时,① 若Tx为低电平,经V1反向后,DE/为高电平,发送允许。此时由于DI 接地,所以RS-485芯片的输出端A、B产生表示低电平的差分信号,低电平的Tx被送出。② 若Tx为高电平,经V1反向后,DE/为低电平,RS-485芯片的A、B端处于高阻态。此时靠电阻R1和R2的下拉和上拉作用,使总线上产生正的差分信号,从而将Tx的高电平信号送出。
  由以上分析看出,在使用这个电路时,只要程序能保证不同时进行接收和发送的操作,即保证是半双工传送数据,程序不必用指令控制DE/进行接收和发送的转换。转换由硬件本身完成。
  发送高电平的过程中,由于RS-485芯片处于接收状态,此时的发送信号必须是在总线上其它节点发送数据时,才能将高电平信号送出。所以,仍需要软件设计中做好总线仲裁。
  经过在没有严重干扰的实验室中的实验,在使用0.5mm2屏蔽平行线时,此电路的传送距离可达1200m。

arthur817 发表于 2013-5-27 14:28:00 | 显示全部楼层
实用性高,省了个管脚
....... 发表于 2013-5-30 19:45:32 | 显示全部楼层
不错啊啊0000
....... 发表于 2013-6-3 00:17:49 | 显示全部楼层
{:e179:}{:e179:}{:e179:}
ncutjun 发表于 2014-4-22 19:37:43 | 显示全部楼层
没试过,有机会试一下
akii 发表于 2016-8-19 02:02:26 | 显示全部楼层
没试过,有机会试一下  !!!
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 07:24 , Processed in 0.066153 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表