串口通信原理详解

串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。

串行通讯的特点是:

  • 数据是按位(bit)逐位依次传输的,只需一根传输线即可完成单向传输通信;
  • 如果有一对传输线就可以实现双向全双工通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢;

1、串口划分标准

串行接口按时钟同步方式不同,可以分为同步串行接口与异步串行接口。同步串行通信接口(Synchronous Serial Interface,简称SSI)是一种常用的工业用通信接口。常见的SPI接口也是同步串行接口的一种。

异步串行通信接口,一般特指通用异步收发送器(Universal Asynchronous
Receiver/Transmitter,简称UART)。它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。说到串口,如果不指名同步或异步,则通常特指异步串行接口。

UART本身并没有规定电气特性,而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。

(1)UART-TTL电平标准:TXD/RXD/DTR/CTS信号的逻辑“0”输出电平要求小于0.4V;逻辑“1”输出电平要求大于2.4V,典型3.4V,上限不超过TTL电源5V。

(2)UART-RS232标准:RS (Recommeded Standard) 代表推荐标准,232是标识号。RS232标准主要规定了指电平定义、信号引脚功能的定义及应答协议等。RS232是全双工的,最小只需要3根信号线,一根数据线专门负责发送数据,另一根数据线专门接收数据,还有一根共地线。但是RS232只能单机通信。RS232接口标准定义的电平是负逻辑而且电压范围大:“1”(-3V~-15V),“0”(+3~+15V),所以,当一个微控制器中的UART相连于PC时,它需要一个RS232驱动器来转换电平。RS232电平是UART的默认标准,除此之外还有TTL电平以及CMOS电平,工程应用中要注意匹配。通常DIY人士常说的TTL线刷工具,就是将设备的TTL_UART口转接到PC的USB口的转换连接器。

(3)UART-RS485标准:RS485是采用差分线来进行串行数据通信的总线型接口规范。在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。RS485采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓朴结构在同一总线上最多可以挂接32个结点。

(4)UART-RS485标准:实际上就是具有两对差分线的RS485,可实现全双工通信。

2、串口通信协议

UART协议是全双工的异步收发协议,数据发送信号线TX与接收信号线RX各自独立并行工作,互不影响。通讯双方的传输速度(波特率)、检验位类型、停止位数目需要事先相互约定,否则无法正确通讯。

通过UART协议每传输的一个字节数据,都要在前面增加其同步作为的起始位,后面还要增加校验位及停止位。起始位是逻辑“0”电平,要求必须从下降沿开始,也就是说在起始位前沿必须是“1”(停止位或者空闲位);而停止位没有前沿的要求,只要是“1”即可。在不传输数据时,数据线上必须保持“1”(空闲位)。

注意,除了空闲位,其他位的宽度都是相同的(等于波特率的),如果串口数据连续无延迟发送,则每一字节发送完毕后经过停止位后不会插入空闲位。

UART 数据传输时序:

关于波特率的概念说明:波特率(BaudRate)表示每秒钟传输的bit数,其单位是bps(bitper second),这里的bit不仅仅是指数据位,还包括起始位、校验位、停止位,而且每1位的时间宽度都是是1/BaudRate。

假设串口配置为(9600bps、1个起始位、8个数据位、1个奇校验位、1个停止位,共11位),则每秒可以传输的字节数为 9600/11=872 Bytes。 

3、UART-TTL

UART-TTL就是采用TTL电平的全双工UART接口。也就是说,UART串口的各I/O引脚,包括TXD、RXD、DTR、CTS等信号逻辑“0”输出电平要求小于0.4V;逻辑“1”输出电平要求大于2.4V,典型3.4V,上限不超过TTL电源5V。

UART-TTL接口的常见实物形式有: USB转TTL串口线(刷机线/下载线)、USB转TTL串口适配器(USB Dongle),如下图所示。

UART-TTL 适配器:

由于UART-TTL的应用场景中,通常只需要RXD/TXD/GND/VCC这4根线,因此常见的USB转TTL接口也只引出这四根线。 

4、UATT-RS232

UART-RS232就是采用232电平的全双工UART接口。RS232接口标准定义的电平是负逻辑而且电压范围大:“1”(-3V~-15V),“0”(+3~+15V)。RS232电平是UART的默认标准,由于RS232电平幅值较大,相比TTL电平具更大的噪声容限及更长的传输距离。RS232串口最大传输距离标准值为15米,最长距离不要超过20米。

UATT-RS232的接口形式,通常都是DB9形式,即9针D形接口,并且分公头母头两种形式。

UART-RS232-DB9 接口公母头:

UART-RS232 串口引脚定义(DB9):

5、UART-RS485

UART-RS485属于总线类型,最小只需要两根数据线(差分信号:A线与B线),差分线之间的压差反映传输信号值,因此可以抵制共模干扰,抗干扰能力强,理论传输距离可以达到1200米。

RS485电平的逻辑1(正)是指电压B>A的情形,逻辑0(负)则是指电压A>B的情形。并且对于RS485电平发送器, 发送的差分电平要求满足A线与B线间电压差的绝对值在2v~6v之间;对于RS485电平接收器,只要求检测到AB线之间的压差绝对值不小于200mv即可表示数据,否则表示总线空闲。

单组差分信号线的RS485设备只能半双工通信,也就是同一时刻要么接收数据,要么发送数据(设备的输入/输出模式的切换有专门的引脚控制)。由于RS485没有总线仲裁机制,只能有上层软件来保证通信可靠性。因此,用户编程时必须遵循二个原则:(a) “仅在要发送数据时才强占总线(将设备切换为发送模式),一旦发送完数据则立即释放总线(切换为输入模式)” ;(b) 强占总线前最好先检测下总线是否空闲(比如,用低电平或高电平保持一定的时间作为空闲状态)。RS485与PC通信时,通常将RS485转换为RS232。

为了抑制干扰,RS-485需要2个终接电阻,接在传输总线的两端,其阻值要求等于传输电缆的特性阻抗,通常取120欧的电阻。在短距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。

6、UART-RS422

RS422和RS485都是串行总线类型,电气特性完全一样。唯一的区别是RS422有两对差分线,可以实现全双工通信;而RS485只有一对差分线,只能半双工通信。

猜你喜欢

转载自blog.csdn.net/qq_35029061/article/details/130738565