在电子发烧友网站上,看到RS232转RS485的一个电路图,如下图所示。元件主要是HN232CP和MAX485CPA,也就是TTL转232电路和TTL转485电路的结合体。可是这个电路却不好分析,几经查找与思考,才得到一点觉悟。

  此电路在使用时,PC机RS232公口或者标准串口接“直连串口通讯线”的一端,串口线的另一端接接该电路最左端的RS232接口上;右端就是RS485输出端。注意串口通讯线分为“直连线”和“交叉线”,这里用的是“直连线”。这是因为标准串口的2脚、3脚分别为“接收端”和“发送端”。该电路的发送端(T1OUT)和接收端(R1IN)分别接的是3脚和2脚,已经对发送端和接收端进行了交叉调换,所以用直连线就可以了。

  在正式分析之前,先看一下HIN232的结构框图,有助于我们接下来的分析。当然此结构图也就是电平转换,但需要注意的是信号的流向,从哪儿进来,又从哪儿出去。此外,RS232是负逻辑电平,我们可以认为逻辑“1”的时候,RS232对应的是-12V;逻辑“0”,RS232对应的是+12V。

  以RS232端作为参考端,在接收时,数据从RS485端向左通过转换电路中绿线所示的通路流向RS232端。处于接收状态的接收端,不会发送数据,也就是处于等待状态,此时TX管脚输出逻辑1(协议规定)。TX在串口公口上对应的引脚是管脚3,RS232是负逻辑,所以输出-12V,经过反相调整后输出TTL高电平,约4.6V。再经过三极管的Q1反相,输出低电平,RE、DE都为低电平的时候,MAX485处于接收状态。

  发送的情况有些复杂,需要耐心分析。数据从RS232端向右通过转换电路中蓝线所示的通路流向RS485端。当输出逻辑低电平,TX(3管脚)对应输出+12V,经过反向调整输出TTL低电平,约0.4V。再经过三极管的Q1反相,输出高电平,RE、DE都为高电平的时候,MAX485处于发送状态,可以正确的将逻辑低电平发送。  

  倘若输出逻辑高电平的时候,TX(3管脚)对应输出-12V,经过反向调整输出TTL高电平,约4.6V。再经过三极管的Q1反相,输出低电平,RE、DE都为低电平的时候,MAX485处于接收状态,如何会将1发送出去呢?

MAX485发送和接收逻辑电平转换关系表

  

  从转换关系表--左图中,可以看出当RE、DE都为低电平的时候,输出为高阻态,也就是说此时485总线是处于高阻态。当232转485电路发送的时候,最右边的总线节点处于接收状态,意味着此节点上的max485cpa的RE、DE都为低电平(通常我们把RE、DE短接)。从转换关系表--右图中可以看出,485总线高阻态的时候,它接收的结果是1。这不正是我们要发送的数据吗。

  或许人提出这样的疑问:既然转换电路中的max485都已经处于接收状态了(RE、DE都为低电平),为何又说它在发送数据1?这是由于一帧数据的发送,包括起始位0、有效数据区、停止位等。从左边向右边传输1帧数据的时候,肯定会先发起始位0以同步右边的接收器。紧接着,加入发送数据1,虽然转换电路中的max485处于接收状态,虽然此时的总线为高组态,但是右边的接收器仍然要把这个高组态翻译成1,并且保存起来,只是因为这个传送已经启动,要把一帧数据完全接收。

  所以,可见这样的发送,是从最右端接收数据的角度来说。整个发送过程,转换电路中的max485可能不断的切换发送与接收的状态,但是从接收端来讲,始终是在接收数据,这是行的通的。

参考网页:RS232转RS485电路图

     基于3.3V供电RS485接口实现远距离通信的电路设计

RS232转RS485电路图分析的更多相关文章

  1. RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)

    前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...

  2. TTL、RS232、RS485、串口

    Point: 1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号). 2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电 ...

  3. RS232与RS485时序分析

    转载于:RS232,RS485波形分析 经常遇到初学者,对单片机串行通讯出了问题不知道如何办的情况.其实最有效的调试方法是用示波器观察收发数据的波形.通过观察波形可以确定以下情况: 是否有数据接收或发 ...

  4. 无源RS232转RS485(转)

    源:无源RS232转RS485 RS232  -485转换器主要包括了电源.232电平转换.485电路三部分.本电路的232电平转换电路采用了NIH232或者也可以直接使用MAX232集成电路,485 ...

  5. UART\RS232与RS485的关系

    https://blog.csdn.net/lhl161123/article/details/53510593 串口通讯是电子工程师面对的最基本的一个通讯方式,RS-232是其中最简单的一种.然而, ...

  6. 串口、COM口、TTL、RS-232、RS-485区别详解

    1.串口.COM口是指的物理接口形式(硬件).而TTL.RS-232.RS-485是指的电平标准(电信号).    2.接设备的时候,一般只接GND RX TX.不会接Vcc或者+3.3v的电源线,避 ...

  7. 【转】RS232、RS485、TTL电平、CMOS电平

    原文网址:http://blog.sina.com.cn/s/blog_63a0638101018grc.html RS232.RS485.TTL电平.CMOS电平 什么是TTL电平.CMOS电平.R ...

  8. UART和RS232/RS485的关系,RS232与RS485编程

    http://wpp9977777.blog.163.com/blog/static/4625100720138495943540/ 串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232 ...

  9. RS232、RS485和TTL电平与串行通信

    RS232.RS485和TTL 作为一个底层软件开发工程师,经常会碰到RS232.RS485和TTL这一类的问题. 之前总是碰到问题之后Google一下,把当下的问题解决了之后就不管了,过个一两天就忘 ...

随机推荐

  1. RadioGroup&RadioButton

    RadioGroup提供多选一机制:属性orientation:“vertlcal” or “horizontal” @Override public void onCheckedChanged(Ra ...

  2. algorithms中计算时间的渐近表示

    1.大写Ο符号大写Ο符号给出了函数f的一个上限. 定义[大写Ο符号]:f(n)=Ο(g(n)),当且仅当存在正的常数c和n0,使得对于所有的n≥n0,有 f(n)≤c*g(n) 上述定义表明,函数f至 ...

  3. Tinymce4 中Ajax多次加载时,会出现菜单在第二次进入时,显示的下拉菜单在左上角

    在项目中,ajax多次导入tinymce的js包 参考了: Having issues with Multiple AJAX refresh and TinyMCE load page with ti ...

  4. SqlServer2005安装错误解决方法

    前段时间在安装数据库SQL Server2005时,在系统检测这一步计算机报了一个错误,提示“性能监视器计数要求(错误)”,使得安装无法继续进行,于是在网上找了些方法来解决,其中有一个方法最有效,在这 ...

  5. 转载---SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法

    /*------------------------------------------------------------------------------+ #| = : = : = : = : ...

  6. Merge Into For Update Example

    Merge Into article aa Using ( SELECT md5_id, Min(article_id) as Min_Article_ID from article )) and s ...

  7. 多个UITableView横向切换的简单实现(有点类似网易新闻)

    实现多列表切换,位置监控,置顶等功能. 方法一: 创建一个TableView,在切换的时候请求各类目需要的数据,然后刷新列表,通过动画模拟出滑动效果. #import <UIKit/UIKit. ...

  8. Android--LowMemoryKiller知识点补充

    Android在内存管理上与linux有些小的区别.其中一个就是引入了Low memory killer . 1.引入原因: Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该 ...

  9. 用PL0语言求Fibonacci数列前m个中偶数位的数

    程序说明:求Fibonacci数列前m个中偶数位的数: 这是编译原理作业,本打算写 求Fibonacci数列前m个数:写了半天,不会写,就放弃了: 程序代码如下: var n1,n2,m,i; pro ...

  10. Java实战之02Hibernate-02映射、一级缓存、实体对象状态

    五.映射基础 1.实体类采用javabean的编写规范 JavaBean编写规范: a.类一般是public的 b.有默认的构造方法 c.字段都是私有的 d.提供公有的getter和setter方法 ...