串口通信数据格式与解析

串口通信的传输格式:
串行通信中,线路空闲时,线路的 TTL 电平总是高,经反向 RS232 的电平总是低。一个数据
的开始 RS232 线路为高电平,结束时 Rs232 为低电平。数据总是从低位向高位一位一位的传
输。示波器读数时,左边是数据的高位。
例如,对于 16 进制数据 55aaH,当采用 8 位数据位、1 位停止位传输时,它在信号线上的波
形如图 1(TTL 电平)和图 2(RS-232 电平)所示。
55H=01010101B,取反后 10101010B,加入一个起始位 1,一个停止位 0,55H 的数据格式为
1010101010B;
aaH=10101010B,取反后 01010101B,加入一个起始位 1,一个停止位 0,55H 的数据格式为

1101010100B;


串口通信的接收过程:(异步通信:接收器和发送器有各自的时钟;同步通信:发送器和接收 器由同一个时钟源控制。RS232 是异步通信) (1)开始通信时,信号线为空闲(逻辑 1),当检测到由 1 到 0 的跳变时,开始对“接收时钟” 计数。 (2)当计到 8 个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”,而不 是干扰信号。 (3)接收端检测到起始位后,隔 16 个接收时钟,对输入信号检测一次,把对应的值作为 D0 位数据。若为逻辑 1, 作为数据位 1;若为逻辑 0,作为数据位 0。 (4)再隔 16 个接收时钟,对输入信号检测一次,把对应的值作为 D1 位数据。….,直到全部 数据位都输入。 (5)检测校验位 P(如果有的话)。 (6)接收到规定的数据位个数和校验位后,通信接口电路希望收到停止位 S(逻辑 1),若此时 未收到逻辑 1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据 位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在 状态寄存器中置奇偶错标志。 (7)本幀信息全部接收完,把线路上出现的高电平作为空闲位。 (8)当信号再次变为低时,开始进入下一幀的检测。