转自:http://www.dzsc.com/data/html/2007-5-28/41097.html

RS-485是一种基于差分信号传送的串行通信链路层协议。它解决了RS-232协议传输距离太近(15m)的缺陷,是工业上广泛采用的较长距离数据通信链路层协议。

  由于它使用一对双绞线传送差分信号,属半双工通信,所以需要进行接收和发送状态的转换。一般的8脚TTL电平到RS-485电平转换芯片的引脚定义如图1所示。

其中,引脚意义如下:

RO——接收数据的 TTL电平输出;

——低电平有效的接收允许;

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所示。

    当不发送数据时,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。

  • RS-485收发的零延时转换电路的更多相关文章

    1. 【转载】 Jointwave零延时视频传输for FPGA/ASIC进入军工领域

      半导体知识产权H.264/H.265 硅IP核供应商Jointwave公司的发布了一系列视频编解码RTL IP核,已经成功应用于军事工业领域的指挥作战,无人机UAV控制,航空和航天摄像机,视频记录黑匣 ...

    2. 单片机电平转换电路5V 3.3V串口通讯等(转)

      源: 单片机电平转换电路5V 3.3V串口通讯等

    3. 实用的4~20mA输入/0~5V输出的I/V转换电路(转)

      源: 实用的4~20mA输入/0~5V输出的I/V转换电路

    4. 一种简单实用的双向电平转换电路3.3V-5V

      当你使用3.3V的单片机的时候,电平转换就在所难免了,经常会遇到3.3转5V或者5V转3.3V的情况,这里介绍一个简单的电路,他可以实现两个电平的相互转换(注意是相互哦,双向的,不是单向的!).电路十 ...

    5. 简单实用的双向电平转换电路(3.3v-5v)

      当你使用3.3V的单片机的时候,电平转换就在所难免了,经常会遇到3.3转5V或者5V转3.3V的情况,这里介绍一个简单的电路,他可以实现两个电平的相互转换(注意是相互哦,双向的,不是单向的!).电路十 ...

    6. RS485模块(485与TTL信号的转换)

      1 综述 MAX3483, MAX3485, MAX3486, MAX3488, MAX3490以及MAX3491是用于RS-485与RS-422通信的3.3V,低功耗收发器,每个器件中都具有一个驱动 ...

    7. 泓格WINPAC主机与第三方模块rs 485 modbus rtu通信测试

      开发语言:C# 开发环境:VS2008(支持WINCE开发的最后一个版本) 运行环境:Windows CE 5.0~7.0 项目说明:多台涨格winpac系列的主机,原来使用泓格SDK开发的程序,采集 ...

    8. RS-485半双工延时问题

      学习485总线时,遇到延时问题,困扰很久.通过学习知道了485半双工收发时必须延时,以保证系统的稳定性.可靠性.好多资料都介绍了485 防静电.抗干扰电路.惟独没提 每一帧收发停止位(或第9位)的延时 ...

    9. TTL和COMS电平匹配以及电平转换的方法

      一.TTL TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源.1.输出高电平Uoh和输出低电平UolUoh ...

    随机推荐

    1. 我的Android进阶之旅------>Android无第三方Jar包的源代报错:The current class path entry belongs to container ...的解决方法

      今天使用第三方Jar包afinal.jar时候,想看一下源代码,无法看 然后像添加jar对应的源码包,也无法添加相应的源代码,报错如下:The current class path entry bel ...

    2. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)

      在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...

    3. header函数使用

      header('HTTP/1.1 200 OK'); //设置一个404头: header('HTTP/1.1 404 Not Found'); //设置地址被永久的重定向 header('HTTP/ ...

    4. The path "fos_user.from_email.address" cannot contain an empty value, but got null.

      The path "fos_user.from_email.address" cannot contain an empty value, but got null.. 修改 pa ...

    5. Linux ~ termios 串口编程

      ermios 结构是在POSIX规范中定义的标准接口,它类似于系统V中的termio接口,通过设置termios类型的数据结构中的值和使用一小 组函数调用,你就可以对终端接口进行控制. 可以被调整来影 ...

    6. 3.22课·········CSS样式表

      CSS(Cascading Style Sheet,叠层样式表),作用是美化HTML网页. /*注释区域*/    此为注释语法 一.样式表 (一)样式表的分类 1.内联样式表 和HTML联合显示,控 ...

    7. 每天一个Linux命令(18)loacte命令

      locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.     (1)用法:   用法:  Locate  [选项] [参数]     (2)功能: 功能:  在mlocate数据库中搜索 ...

    8. Android蓝牙串口通讯【转】

      本文转载自:http://blog.sina.com.cn/s/blog_631e3f2601012ixi.html Android蓝牙串口通讯 闲着无聊玩起了Android蓝牙模块与单片机蓝牙模块的 ...

    9. HTTP-接触

      [HTTP]http是基于TCP/IP协议的应用层协议,他不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认端口是80端口. 不同版本http协议里的相关概念[Conten ...

    10. 菜单栏(QMenuBar)与菜单(QMenu)

      之前一直搞不清楚什么是菜单栏,后来看了文档才知道是怎么一回事,下面是我本人对菜单栏和菜单的理解,可能存在理解错误. 一.菜单栏 菜单栏是容纳菜单的一个容器,里面可以存放菜单列表,用菜单栏的目的就是为了 ...