串口是串行接口(serial port)的简称也稱为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式 串ロ按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等
在串行通信中,数据在1位宽的单条线路上进行传输一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此接收方还必须能够确定一个信息组的开始和结束。常用的两种串行通信方式包括同步通信和異步通信
TTL电平:+5V等价于逻辑”1”,0V等价于逻辑”0”;
RS232电平: 串口的一个标准采用负逻辑。
-
在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通ON狀态,正电压高电平)= +3V~+15V,信号无效(断开OFF状态,负电压低电平) = -3V~-15V
(PS:本节中电平为TTL电平)
同步通信(SYNC:synchronous data communication)是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步)这样就保证了通信双方在发送和接收数据时具有完全一致的定时关系。
異步通信(ASYNC:asynchronous data communication)是以字符为单位进行传输的,字符之间没有固定的时间间隔要求而每个字符中的各位则以固定的时间传送。
异步通信中收发双方取得同步是通过在字符格式中设置起始位和停止位的方法来实现的。具体来说就是在一个有效字符正式发送之前,发送器先發送一个起始位然后发送有效字符位,在字符结束时再发送一个停止位起始位至停止位构成一帧。停止位至下一个起始位之间是不定長的空闲位并且规定起始位为低电平(逻辑值为0),停止位和空闲位都是高电平(逻辑值为1)这样就保证了起始位开始处一定会有一個下跳沿,由此就可以标志一个字符传输的起始而根据起始位和停止位也就很容易的实现了字符的界定和同步。
(PS:本节电平为TTL电平)
一個数据帧包括:1个起始位(低电平)8个数据位,1个校验位1个停止位(高电平,表示数据帧结束)如下图所示。
-
数据位(Data Bits):起始位の后就是传送数据位数据位一般为8位一个字节的数据(也有6位、7位的情况),标准的ASCII码是0~127(7位)扩展的ASCII码是0~255(8位),低位(LSB)在前高位(MSB)在后;
-
Bit):校验位一般用来判断接收的数据位有无错误,分为NONE(无校验位)/ODD(奇校验)/EVEN(偶校验)/MASK(标志位校验位一直为1)/SPACE(涳白,校验位一直为0)例如,如果数据是1011那么对于偶校验,校验位为1保证逻辑高的位数是偶数个,如果是奇校验校验位为0,保证邏辑低的位数是奇数个一般是奇偶校验,在使用中该位常常取消;
- 停止位:停止位在最后,用以标志一个字符传送的结束它对应于邏辑1状态;
- 位时间:即每个位的时间宽度,起始位、数据位、校验位的位宽度是一致的停止位有1位、1.5位、2位格式,一般为1位
发送数据嘚具体步骤如下:
-
初始化后或者没有数据需要发送时,发送端输出逻辑1可以有任意数量的空闲位;
-
当需要发送数据时,发送端首先输出邏辑0作为起始位;
-
接着开始输出数据位,发送端首先输出数据的最低位D0然后是D1,最后是数据的最高位;
-
如果设有奇偶检验位发送端輸出检验位;
-
最后,发送端输出停止位(逻辑1);
-
如果没有信息需要发送发送端输出逻辑1(空闲位),如果有信息需要发送则转入步驟2;
-
如果是以232电平发送的,示波器上看到的发送端信号应是上述数据包取反后的结果(负逻辑)
在异步通信中,接收端以接收时钟和波特率因子决定每一位的时间长度下面以波特率因子等于16(接收时钟每16个时钟周期使接收移位寄存器移位一次)为例来说明:
-
开始通信,信号线为空闲(逻辑1)当检测到由1到0的跳变时,开始对接收时钟计数;
-
接收端检测到起始位后隔16个接收时钟对输入信号检测一次,把對应的值作为D0位数据;
-
再隔16个接收时钟对输入信号检测一次,把对应的值作为D1位数据直到全部数据位都输入;
-
接收到规定的数据位个數和校验位之后,通信接口电路希望收到停止位(逻辑1)若此时未收到逻辑1,说明出现了错误在状态寄存器中置“帧错误”标志;若沒有错误,对全部数据位进行奇偶校验无校验错时,把数据位从移位寄存器中取出送至数据输入寄存器若校验错,在状态寄存器中置“奇偶错”标志;
-
本帧信息全部接收完把线路上出现的高电平作为空闲位;
-
当信号再次变为低时,开始进入下一帧的检测
发送7B3D2A,无奇偶校验位