串口是怎样传输数据的

✍概述
  ➹通过逻辑分析仪捕捉串口传输的数据来了解串口传输数据的实质。
  
  串行接口简称为串口,串行接口 (Serial Interface)是指数据一位一位地顺序传送。实现双向通信就需要一对传输线,即TX与RX线。
电路连接方式:
  串口如果要实现双向传输,则设备1与设备2,TX与RX要交叉相连。
在这里插入图片描述
串口数据解析
  利用电脑端的串口助手通过CH340串口模块将数据0x55发送出去,并通过逻辑分析仪来捕捉数据。下图为串口发送的数据,是以十六进制(hex)形式发送的。
在这里插入图片描述
逻辑分析仪捕捉数据:
在这里插入图片描述
我们看到逻辑分析仪成功将数据0x55捕捉到。接下来看串口的数据构成是怎样的。
查阅资料,串口传输一帧数据如下图所示:
在这里插入图片描述
所谓串口的一帧数据即串行的发送一次数据(比如0x55(0101_0101))时TX数据线上的电平变化。由上图可知串口一帧数据的构成为:起始位(1bit)+数据(8bit)+奇偶校验位+停止位(1bit),8bit数据传输的方式为先低位(LSB)再高位(MSB)即通过(D0_D1_D2_D3_D4_D5_D6_D7)的顺序将数据依次放置在TX数据线上。我们再看我们所用的串口助手:
在这里插入图片描述
我们的设置为传输数据位为8bit,检验位为0bit即没有校验位,停止位为1bit。所以我们串口一帧数据的构成为:起始位(1bit)+数据(8bit)+停止位(1bit),所以串口一帧数据的传输单位为10bit,平时我们所说的串口传输单位为1Byte即8bit是指传输的有效数据,即起始位(1bit)+数据(8bit)+停止位(1bit)中的8bit数据,那为什么要多此一举的在收尾处各加1bit的数据呢,其实是为了接收设备能去正确的接收到8bit的有效数据,起始位相当于一帧数据的帧头,停止位相当于一帧数据的帧尾。
起始位: 数据线TX由高电平变为低电平。
停止位: 数据线TX由低电平变为高电平。
起始位和停止位作用:
  如果接收设备检测到数据线由高电平变为低电平,就是接收到了来自发送设备的起始信号,表示开始数据的传输。如果接收设备检测到数据线由低电平变为高电平,就是接收到了来自发送设备的停止信号,表示一帧数据的结束,通过以上特点接收设备就可以将中间的8bit有效数据解析出来,这样就完成了一帧数据的传输。
解析逻辑分析仪捕捉的数据
  由以上分析知串口传输一帧数据构成:起始位(1bit)+数据(8bit)+停止位(1bit)。
解析逻辑分析仪获取的数据:
在这里插入图片描述
通道一:TX数据线
通道二:数据解析
通过通道一可以观察出一帧数据的格式确实为:起始位(1bit)+数据(8bit)+停止位(1bit)。中间8bit数据是通过(D0-D7:1010_1010)的顺序发送的,通过接收设备解析(高字节_低字节)为(D7-D0:0101_0101)即0x55。以上就为串口一帧数据的传输。
------所谓的波特率-----
进一步观察逻辑分析仪:
在这里插入图片描述
由标号①和②知1bit数据的传输时间为8.667us,那传输速率不就是 1 8.667 10 6 {1 \over {8.667*{{10}^{ - 6}}}} 其实就是115200bit/s。再看看我们串口助手设置的波特率就为115200,这样是不是明白波特率是什么了,其实不就是1s传输115200bit数据。
在这里插入图片描述
详情可以看看什么是波特率,波特率怎么计算

★★★如有错误,欢迎指导!