欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

程序员文章站 2022-06-18 11:22:52
...

 串口通讯是电子工程师和嵌入式开发工程师面对的最基本问题,RS232则是其中最简单最常用的通讯方式。但是初学者往往搞不清有关的名词如UART和RS232或RS485之间是什么关系,因为它们经常被放到语句中同等的位置使用。在百度搜索二者的区别,可以看到排在最前面的答案充斥着混淆的概念。就此,谈谈我对这几个概念的理解,希望能帮初学者厘清它们之间的关系。

~
~

       通讯问题,和交通是一样的。串口通信,我们这里可以用公交来类比。

               

       公交运行可以简单分成两个部分:

       1、车站

       2、公路

       其中车站决定了车上装什么(人),怎么发送(班次)等。

       当汽车跑在路上,就要遵守公路交通的规则,过桥有过桥的规则,高速有高速的规则,和车站没有关系了。

~

       回到串口通讯,其实,UART就相当于车站,而RS232/RS485则对应于公路的规则。

       UART,是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),既然是“器”,显然,它就是个设备而已,要完成一个特定的功能的硬件,它本身并不是协议。那么它要完成什么功能呢?它的最基本功能,是串行数据和并行数据之间的转换。我们知道,计算机中的数据以Byte为基本单位,对一个Byte的存取是并行的,即,同时取得/写入8个bit。而串行通信,需要把这个Byte“打碎”,按照时间顺序来收发以实现串行。例如:

       内存中的数据是: 1 1 1 0 0 1 0 1

       串行发送的实际效果是(按时间排序【注1】):

       1

       0

       1

       0

       0

       1

       1

       1

      接收则是上述过程的逆过程。

      这就是UART做的最基本工作,进一步的,它还要控制“发车的班次”,比如确认一个Byte的这8个bit是什么时候开始的,又是什么时候结束的,两个班次之间至少要隔多长时间的缓冲,等等。这一部分,也具有协议的特征,但是相对于道路上的协议,更具有一般性,或曰,是与车在什么道路上开,相对独立的。

       那么道路上的规定是什么样的呢?

       RS232/RS485,是两种不同的电气协议,也就是说,是对电气特性以及物理特性的规定,作用于数据的传输通路上,它并不内含对数据的处理方式。比如,最显著的特征是:RS232使用3-15v有效电平,而UART,因为对电气特性并没有规定,所以直接使用CPU使用的电平,就是所谓的TTL电平(可能在0~3.3V之间)。更具体的,电气的特性也决定了线路的连接方式,比如RS232,规定用电平表示数据,因此线路就是单线路的,用两根线才能达到全双工的目的;而RS485, 使用差分电平表示数据,因此,必须用两根线才能达到传输数据的基本要求,要实现全双工,必需用4根线。但是,无论使用RS232还是RS485,它们与UART是相对独立的,但是由于电气特性的差别,必须要有专用的器件和UART接驳,才能完成数据在线路和UART之间的正常流动。

        

       RS232甚至规定了接口的具体样式,图为DB9接口

~
      总结:从某种意义上,可以说,线路上存在的仅仅是电流,RS232/RS485规定了这些电流在什么样的线路上流动和流动的样式;在UART那里,电流才被解释和组装成数据,并变成CPU可直接读写的形式。

~

~

      【注1】这里是例子是小端发送模式,是基本的串口传输方式,但是,大端模式的串口传输模式也是存在的,少见而已。

一、UART是什么

 

UART是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是设备间进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线(Rx 和Tx)就可以完成通信过程,因此也称为异步串行通信。

 

若加入一个合适的电平转换器,如SP3232E、SP3485,UART 还能用于RS-232、RS-485 通信,或与计算机的端口连接。UART 应用非常广泛,手机、工业控制、PC 等应用中都要用到UART。

 

 

二、RS-232标准

 

RS-232是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号。RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。需要说明一下,很多人经常把RS-232、RS-422、RS-485 误称为通讯协议,这是很不应该的,其实它们仅是关于UART通讯的一个机械和电气接口标准(顶多是网络协议中的物理层面)。

 

该标准规定采用一个25 个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC 机将RS-232 简化成了DB-9 连接器,从而成为今天的事实标准。而工业控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三条线。

 
 

三、RS-485/ RS-422标准

 

RS-232接口可以实现点对点的通信方式,但这种方式不能实现联网功能。于是,为了解决这个问题,一个新的标准RS-485产生了。RS-485的数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B。 

 

通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个逻辑状态,负电平在-2~6V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。

 

RS-422 的电气性能与RS-485完全一样。主要的区别在于:RS-422 有4 根信号线:两根发送、两根接收。由于RS-422 的收与发是分开的所以可以同时收和发(全双工),也正因为全双工要求收发要有单独的信道,所以RS-422适用于两个站之间通信,星型网、环网,不可用于总线网;RS-485 只有2 根信号线,所以只能工作在半双工模式,常用于总线网。

 

 

四、RS-232与RS-485性能对比

 

1、抗干扰性:RS485 接口是采用平衡驱动器和差分接收器的组合,抗噪声干扰性好。RS232 接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。

 

2、传输距离:RS485 接口的最大传输距离标准值为 1200 米(9600bps 时),实际上可达 3000 米。RS232 传输距离有限,最大传输距离标准值为 50 米,实际上也只能用在 15 米左右。

 

3、通信能力:RS-485 接口在总线上是允许连接多达128个收发器,用户可以利用单一的 RS-485 接口方便地建立起设备网络。RS-232只允许一对一通信。

 

4、传输速率:RS-232传输速率较低,在异步传输时,波特率为 20Kbps。RS-485 的数据最高传输速率为 10Mbps 。

 

5、信号线:RS485 接口组成的半双工网络,一般只需二根信号线。RS-232 口一般只使用 RXD、TXD、GND 三条线 。

 

6、电气电平值:RS-485的逻辑"1"以两线间的电压差为+(2-6) V 表示;逻辑"0"以两线间的电压差为-(2-6)V 表 示 。在 RS-232-C 中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-5- -15V;逻辑"0 " +5- +15V 。

 

RS485在linux下的调试

 

最近做485通讯,在这里梳理一下学习的内容。

1、ubuntu串口调试工具

ubuntu下的串口调试工具为:cutecom

sudo apt-get install cutecom 

打开

sudo cutecom

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

2、ubuntu串口查找

sudo cat /proc/tty/driver/serial

可以获得如下:

 
  1. 0: uart:16550A port:000003F8 irq:4 tx:0 rx:0

  2. 1: uart:unknown port:000002F8 irq:3 tx:12 rx:0

  3. 2: uart:unknown port:000003E8 irq:4

  4. 3: uart:unknown port:000002E8 irq:3

其中后面有tx的是拥有的接口,后面有DTR|RTS的是你开了调试工具的接口。

另外还有此函数

 ls -l  /dev |grep ttyUSB

3、串口权限开启

sudo chmod 777 /dev/ttyS0

程序跑不通试一下这个权限开启。

4、RS485和232的基础知识

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

串口、com口是指物理接口形式,而TTL、RS-232、RS-485是指的电平标准

RS-485与RS-232类似,但是采用查分信号负逻辑。即正电平为逻辑1(2—6V),负电平为逻辑0(负2---负6V)。

在软件上,TTL、RS232,RS485没有区别。

在工控机上使用的时候要注意哪个接口是RS485的可能需要进到bios中吧对应com口调成半双工RS485.

RS232引脚如下

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

RS485 4线(此表中“序号”与引脚没有对应关系,只是表示一个流水号,在实际连线中,需要根据设备定义决定所在的引脚。)

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

 

RS485 2线(此表中“序号”与引脚没有对应关系,只是表示一个流水号,在实际连线中,需要根据设备定义决定所在的引脚。)

UART和RS232/RS485的关系是什么?RS485在linux下的调试 ubuntu串口调试工具

 

RS232自检方式

把2、3引脚相连,发送什么理论上就会收到什么。不成功注意端子是否插严。

RS232串口通信三线连接法 
    通常的应用系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,比如PC和色温计,PC和单片机之间的通信,双方都能发送和接收,它们的连接只需要使用三根线即可,即RXD,TXD和GND

两个232对接需要注意一个RxD对应另一个的TxD,也就是一个收一个发。

 

 

 

相关标签: 串口通信