串口通信的分类

UART属于串行、异步、全双工通信

串行通信与并行通信

根据传输数据的位宽,串口通信可分为串行通信与并行通信,串行通信是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯方式。UART\SPI\I2C等均为串行通信,DDR为并行通信。

在数据传输速率相同的情况下,并行通信传输的数据量要大于串行通信,但在通信距离、抗干扰能力以及成本上串行通信要更胜一筹,另外由于并行通信对同步要求比较高,所以目前采用串行通信较多。

同步通信与异步通信

同步通信中,收发设备双方会使用一根信号线表示时钟信号,发送方和接收方在同一时钟的控制下,实现同步传输。 通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。

异步通信不带时钟同步信号,使用各自的时钟控制。 但需要双方相互约定好数据传输速率。一般用波特率作为传输速率的衡量方式。单位:bps(位/秒)

在同步通信中,数据信号所传输的内容大部分都是有效数据,而异步通信为了实现更好的同步会包含有帧的各种标识符,所以同步通信的效率更高,但是双方的时钟允许误差较小,而异步通信下可以允许较大时钟误差的存在。

单工、半双工、全双工通信

单工通信:只需要一根数据线。在任何时刻都只能进行一个方向的通信,即一个固定为发送设备,另一个固定为接收设备通信。

半双工通信:需要两根数据线。可以进行两个方向的传输,但不能同时进行。

全双工通信:需要两根数据线。在同一时刻可以进行两个方向的传输,即两个设备可以同时收发数据。

UART通信标准

UART本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。可以理解为简单的串并转换功能。

 

UART通信标准可分为两层:物理层和协议层。

物理层

物理层主要规定具体的物理实现标准,即接口标准。

串口通讯的物理层有很多标准及变种,常见的有 RS-232 、RS485、RS422标准,这些标准主要规定了信号的用途、通信接口以及信号的电平标准。

RS-232采用负逻辑电平,以数据线电平和地线电平的差值为传输数据 

最初RS-232 串口标准常用于计算机、路由器与调制调解器(MODEN,俗称“猫” )之间的通信 ,在这种通信系统中,设备被分为数据终端设备 DTE(计算机、路由)和数据通讯设备 DCE(调制调解器)。RS-232常见接口为DB9

 

目前的串口通信一般只使用 RXD、 TXD 以及 GND 三条信号线,直接传输数据信号。 

RS422:采用差分传输方式,以两根数据线电平的差值作为传输的数据,抗干扰性强。

RS485:能实现多点间相互通信。

协议层

协议层主要规定通信逻辑,统一双方的数据收发标准,即数据格式。

数据构成:起始位+ 数据位 + 校验位 + 停止位

起始位、停止位:即起始和停止信号。数据包的起始信号由一个逻辑 0 的数据位表示(因为总线空闲时为高电平,所以开始一次通信时先发送一个明显区别于空闲状态的信号即低电平),而数据包的停止信号可由 0.5、 1、 1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。

数据位:5~8位,可以在MCU中设置。

校验位:0~1位, 无校验/奇校验/偶校验。

数据传输顺序:即传输方向,看数据是从高位(MSB)开始传输还是从低位(LSB)开始传输。

波特率(调制速率):指有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。针对串口异步通讯,由于没有时钟信号,收发设备之间需要约定好波特率。

附:

通信速率:

通信速率是衡量通信性能的一个非常重要的参数,通常以比特率(Bitrate)来表示,即每秒钟传输的bit数,单位为比特每秒(bit/s)。另外一个是“波特率”(Baudrate),表示每秒钟传输了多少个码元。而码元是通信信号调制的概念,通信中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用 0V 表示数字 0, 5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致相等。如果在通讯传输中,有 0V、2V、 4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。因为很多常见的通信中一个码元都是表示两种状态,所以常常直接用波特率来表示比特率。

串口校验:

1.无校验(no parity)
2.奇校验(odd parity):如果数据位中“1”的数目是偶数,则校验位为“1”,如果“1”的数目是奇数,3.校验位为“0”。
4.偶校验(even parity):如果数据为中“1”的数目是偶数,则校验位为“0”,如果为奇数,校验位为“1”。
5.mark parity:校验位始终为1(不常用)。
6.parity:校验位始终为0(不常用)。

参考:串口通信基础知识(UART)_White__Sun的博客-CSDN博客_uart串口通信

          USART协议详解_Alfred.HOO的博客-CSDN博客_usart协议

          UART串口通讯协议解析_记帖的博客-CSDN博客_串口协议解析

          UART串口通信_IoT_Joker的博客-CSDN博客_uart串口通信

           

物联沃分享整理
物联沃-IOTWORD物联网 » 了解UART串口通信协议

发表评论