嵌入式C语言学习进阶系列文章
GUN C编译器拓展语法学习笔记(一)GNU C特殊语法部分详解
GUN C编译器拓展语法学习笔记(二)属性声明
GUN C编译器拓展语法学习笔记(三)内联函数、内建函数与可变参数宏
数组存储与指针学习笔记(一)数据类型与存储、数据对齐、数据移植、typedef
文章目录
- 嵌入式C语言学习进阶系列文章
- 一、定义
- 二、数据协议
- 2.1 电气连接形式
- 2.2 帧格式
- 2.3 存在问题
- 三、协议常见应用
- 3.1 RS232通信接口(全双工通信)
- 3.2 RS485通信接口(半双工通信)
一、定义
通用异步收发传输器UART(Universal Asynchronous Receiver/Transmitter)。是一种串行、异步、全双工的通用数据通信协议。其特点是通信线路简单,只需要一对TX、RX的传输线即可实现双向通信,根据约定时序进行传输,但是相对而言传输速率不高。其衍生实体如基于TTL的UART通讯、基于RS232的UART通讯以及基于RS485的UART通讯等。
注:
USART是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。USART是指单片机的一个端口模块,可以根据需要配置成同步模式(增加了同步时钟),也可以将其配置为异步模式,后者就是UART。所以说UART姑且可以称之为一个与SPI,I2C对等的“协议”,而USART则不是一个协议,而是更应该理解为一个实体。
二、数据协议
2.1 电气连接形式
UART通信协议包含两根数据线分别为RX、TX,两个UART通信设备通信过程交错连接,实现全双工独立通信。双方通信设备通过约定好波特率、起始位、校验位、停止位等核心配置参数,实现数据传输。
2.2 帧格式
帧格式详解:
-
起始位:在开始一次通信传输时,发送方先发送一个逻辑
0
的低电平信号,表示传输字符开始。因为总线空闲时为高电平,所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平。 -
数据位:起始位发送完成后,接收方开始接收数据。起始位后面就是数据位,数据位可以是5、6、7、8,9位等,构成一个字符(一般都是8位),发送顺序为先发送最低位,最后发送最高位,使用低电平表示
0
高电平表示1
完成数据位的传输。 -
奇偶校验位:数据位加上这一位后,使得
1
的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。串口校验模式分为以下几种:- 无校验(
no parity
)。 - 奇校验(
odd parity
):如果数据位中1
的数目是偶数,则校验位为1
,如果1
的数目是奇数,校验位为0
。 - 偶校验(
even parity
):如果数据为中1
的数目是偶数,则校验位为0
,如果为奇数,校验位为1
。 - mark parity:校验位始终为
1
(不常用)。 - parity:校验位始终为
0
(不常用)。
- 无校验(
-
停止位:它是一个字符数据的结束标志。可以是
1
位、1.5
位、2
位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备之间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟的机会。停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。 -
空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为
1
即高电平,表示当前线路上没有数据传输。 -
波特率: 波特率是UART协议,或者说所有异步串行协议,非常重要的一个概念,波特率表示一秒内传输了多少个码元数量,一般波特率为300,1200,2400,9600,19200,38400,115200等。例如9600 Baud表示一秒内传输了9600个码元信息,当一个码元只含1 bit信息时,波特率=比特率。
2.3 存在问题
- 电气接口不统一。UART在通信过程中一般使用处理器的电平信号,即TTL电平,但不同处理器的电平一般存在差异,在通信时需要转换电平
- 抗干扰能力差。UART 在使用过程中使用TTL来表示逻辑
0
和逻辑1
,但是TTL抗干扰能力差,传输数据过程容易出错。 - 通信距离短。因为TTL的抗干扰能力差,因此传输距离很短,一般用于短距离传输。
三、协议常见应用
面对UART存在的问题,工业上对串口协议做出了改进,增强了其电气特性。如常用的RS232和RS485串行通信标准。我们来认识一下它们。
3.1 RS232通信接口(全双工通信)
RS232
通讯又叫串口通讯方式,是指计算机通过RS232国际标准协议用串口连接线和单台设备(控制器)进行通讯的方式。
- 电气接口:通常
RS-232
接口以9个引脚 (DB-9
) 或是25个引脚 (DB-25
) 的型态出现,一般个人计算机上会有两组RS-232
接口,分别称为COM1
和COM2
。 - 通讯距离:9600波特率下建议在13米以内。
- 通讯速率(波特率 Baud Rate):缺省常用的是
9600 bps
,常见的还有1200 2400 4800 19200 38400
等。波特率越大,传输速度越快,但稳定的传输距离越短,抗干扰能力越差。传输速率较低,在异步传输时,波特率为20Kbps。 - 电平特性:传输电平信号接口的信号电平值较高(信号
1
为-3V至-15V
,信号0
为3至15V
),易损坏接口电路的芯片,又因为与TTL电平(0~<0.8v,1~2.0V
)不兼容故需使用电平转换电路方能与TTL电路连接。另外抗干扰能力差。 - 抗干扰性:接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
- 多点通讯:
RS232
接口在总线上只允许连接1个收发器,不能支持多站收发能力,所以只能点对点通信,不支持多点通讯。
3.2 RS485通信接口(半双工通信)
RS485
通讯RS-232一样,都是串行通信标准,现在的标准名称是TIA485/EIA-485-A,但是人们会习惯称为RS-485标准,RS-485常用在工业、自动化、汽车和建筑物管理等领域。RS-485总线弥补了RS-232通信距离短,速率低的缺点,RS-485的速率可高达10Mbit/s,理论通讯距离可达1200米;RS-485和RS-232的单端传输不一样,是差分传输,使用一对双绞线,其中一根线定义为A,另一个定义为B
- 电气接口:通常
RS-485
接口以9个引脚 (DB-9
) 或是25个引脚 (DB-25
) 的型态出现。 - 通讯距离:
RS485
最大无线传输距离为1200米。最大传输速率为10Mbps,在100Kb/S的传输速率下,才可以达到最大的通信距离。采用阻抗匹配、低衰减的专用电缆可以达到1800米!超过1200米,可加中继器(最多8只),这样传输距离接近10Km。 - 通讯速率(波特率 Baud Rate):缺省常用的是
9600 bps
,常见的还有1200 2400 4800 19200 38400
等。波特率越大,传输速度越快,但稳定的传输距离越短,抗干扰能力越差。传输速率较低,在异步传输时,波特率为20Kbps。 - 电平特性:传输差分信号逻辑
1
以两线间的电压差为+(2—6) V表示;逻辑0
以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。 - 抗干扰性:接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
- 多点通信:RS485接口在总线上是允许连接多达128个收发器。即具有多站通讯能力,这样用户可以利用单一的RS485接口方便地建立起设备网络。
补充:共模传输和差模传输
:
采用共模传输方式时,共模噪声将会叠加在最终的输出信号上面,污染了原始的信号。
采用差模传输方式,则源端发出的信号+与信号-相位是相反的,而对于共模噪声而言在+/-两条线上都会存在,理想情况是等幅同相的,而接收端,相当于一个减法器,有用信号由于相位相反则经过减法器仍然保留,而噪声则会被抵消。而实际电路中,则会大幅度削弱。
由此可见,差模传输相对于共模传输方式,优势在于差模方式可以有效抵消共模干扰。