简介
- 关于串口通信的学习笔记
维基百科中关于串口通信
- 串行接口(Serial port),也称串行接口或串行端口,串行通信接口,COM接口,简称串口。主要用于串行式逐位数据传输。常见的有一般电脑应用的RS-232(使用25针或9针连接器)和工业电脑应用的半双工RS-485与全双工RS-422.
- 串行接口按电气标准及协议来分,包括RS-232-C,RS-422,RS485,USB等。RS-232-C,RS-422与RS-485标准只对接口的电气特性做出规定,不涉及插件,电缆或协议。USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。
RS-232-C
- 它也称标准串口,是目前最常用的一种串行通讯串口。它是在1970年由美国电子工业协会(EIA),联合贝尔系统,调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
- 它的全名是:数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准。
- 电脑一般有两个串行口:COM1和COM2,9针D型接口通常在计算机后面能看到。现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。
RS-422
- 为改进RS-232通信距离短,速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺,并允许在一条平衡总线上连接最多10个接收器。
- RS-422是一种单机发送,多机接收的单向,平衡传输规范,被命名为 TIA/EIA-422-A标准
RS-485
- 为扩展应用范围,EIA又于1983年在RS-422基础上定制了RS-485标准,增加了多点,双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。
Universal Serial Bus(通用串行总线)
- 简称USB,是目前电脑上应用较广泛的接口规范,由Intel,Microsoft, Compaq, IBM,NEC,Northern Telcom等几家大厂商发起的新型外设标准。USB接口是电脑主板上的一种四针,其中中间两个针传输数据,两边两个针给外设供电。USB接口速度快,连接简单,不需要外界电源,传输速度5Gbps。
串口通信
- 串口通信的方式包括串口同步通信和串口异步通信
- 串口同步通信:在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持同步,以保证通信双方在发送和接收数据时具有完全一样的定时关系。
- 串口异步通信:也称为起止式异步通信,是以字符为单位进行传输的,字符之间没有固定的时间间隔要求,每个字符中的各位则以固定的时间传送。
串口通信原理详解
- 串行接口简称串口,也称串口通信接口(通常指COM接口),是采用串行通信方式的扩展接口。
- 串行通讯的特点是
- 数据是按位(bit)逐位依次传输的,只需一根传输线即可完成单项传输通信。
- 如果有一对传输线就可以实现双向全双工通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
串口划分标准
- 串行接口按时钟同步方式不同,可以分为同步串行接口和异步串行接口。同步串行通信接口(Synchronous Serial Interface,简称SSI)是一种常用的工业通信接口。常见的SPI接口也是同步串行接口的一种。
- 异步串行通信接口,一般特指通用异步收发送器(Universal Asynchronous Receiver/Transmitter, 简称UART)。它包括了RS232,RS499,RS423,RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。说到串口,如果不指明同步或异步,则通常特指异步串行接口。
- UART本身并没有规定电气特性,而RS232,RS499,RS423,RS422和RS485等,是对各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性,传输速率,连接特性和接口的机械特性等内容,实际上是属于通信网络中的物理层的概念,于通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层的概念。
串口通信协议
UART协议是全双工的异步收发协议,数据发送信号线TX和接收信号线RX各自独立并行工作,互不影响。通讯双方的传输速度(波特率),校验位类型,停止位数目需要事先相互约定,否则无法正确通讯。
通过UART协议每传输的一个字节数据,都要在前面增加其同步作为的起始位,后面还要增加校验位及停止位。
- 起始位是逻辑 0 电平,要求必须从下降沿开始,也就是说在起始位前沿必须是 1(停止位或者空闲位)
- 而停止位没有前沿的要求,只要是 1 即可。在不传输数据是,数据线上必须保持 1(空闲位)
注意,除了空闲位,其他位的宽度都是相同的(等于波特率),如果串口数据连续无延迟发送,则每一字节发送完毕后经过停止位后不会插入空闲位。
关于波特率的概念说明
- 波特率(BaudRate)表示每秒钟传输的bit数,其单位是 bps(bit per second),这里的bit不仅仅是指数据位,还包括起始位,校验位,停止位,而且每1位的时间宽度都是 1/BaudRate
- 假设串口配置为(9600bps,1个起始位,8个数据位,1个奇校验位,1个停止位,共11位),则每秒可以传输的字节数为 9600 / 11 = 872 Bytes