文章目录
- 通信接口
- 串口通信
- 硬件电路
- 电平标准
- 串口参数及时序
- 串口时序
通信接口
通信协议及特征
- 通信目的:将一个设备数据传送到另一个设备,扩展硬件系统,如 STM32 外挂芯片需通信实现数据交换和控制。
- 通信协议作用:制定通信规则,双方按规则收发数据,STM32 有多种通信协议,下面列出了典型参数配置。
- 各协议引脚:Usart 串口引脚 TX 和 RX 等,I2C 是 SCL 和 SDA ,SPI 有 SCLK ,MOSI, MISO,CS 等,CAN 是CAN_H,CAN_L 差分数据脚,USB 是 DP 和 DM 等。
- 双工模式:全双工通信双方能同时双向通信,有两根通信线;I2C、CAN 和 USB 是半双工,只有一根通信线,单工数据只能单向传输。
- 时钟特性:I2C 和 SPI 有单独时钟线为同步通信,串口、CAN 和 USB 无时钟线是异步通信,需约定采样频率并对齐采样位置。
- 电平特性:前三种协议是单端信号,通信双方需共地,CAN 和 USB 是差分信号,抗干扰强,USB 部分地方需单端信号仍需供电。
- 设备特性:串口和 USB 是点对点通信,中间三种可挂载多个设备,多设备通信需寻址确定对象。
串口通信
串口通信优势:应用广泛,成本低、易使用、线路简单,可实现设备互相通信,单片机串口能与电脑等通信,扩展应用范围。
相关模块:USB 转串口模块(芯片 CH340 可转换协议实现串口与电脑通信)、陀螺仪传感器模块(有串口和 I2C 引脚)、蓝牙串口模块(可与手机互联实现遥控)。
硬件电路
硬件电路连接:串口通信模块一般有 VCC、TX、RX、GND 引脚,VCC 供电视情况连接(需要按照从设备供电等),TX 与 RX 交叉连接,单向传输可只接一根通信线,电平标准不一致需加转换芯片。,也可以看做3根通信线,因为数字信号的输出和接收都是以GND为基准进行判断的。
电平标准
- 电平标准:规定数据 0 和 1 的表达方式,常见 TTL 电平(5 伏或 3.3 伏表示逻辑 1,0 伏表示逻辑 0 ),还有 RS232 电平(负三到负十五伏表示 1,正三到正 15 伏表示 0 )、RS485 电平(两线压差正 2 到正 6 伏表示 1,负二到负六伏表示 0 )。
- RS485电平为差分信号,抗干扰能力强,传输距离远。
串口参数及时序
软件层面数据帧:由起始位、数据位、停止位组成,数据位 8 位代表一个字节,可加奇偶校验位,校验位用于数据验证,有奇校验和偶校验等方式。
串口参数:波特率规定通信速率,反映每秒传输码元个数,二进制调制下波特率等于比特率;起始位固定为低电平标志数据帧开始;停止位固定为高电平用于数据帧间隔;数据位表示有效载荷,低位先行;校验位根据数据位计算,可判断传输是否出错。
串口参数
一、波特率(Baud Rate)
1. 定义与作用
- 核心功能:规定串口通信的速率,即每秒传输的码元个数,单位为 波特(Baud)。
- 异步通信基础:串口采用异步通信,需通信双方预先约定波特率,确保发送与接收的节奏一致,避免数据错位(如漏收或重复接收)。
2. 技术细节
- 与比特率的关系
- 在二进制调制(如 TTL 电平,高电平为 1、低电平为 0)中,1 个码元 = 1 比特(bit),此时波特率等于比特率(单位为 bit/s 或 BPS)。
- 在多进制调制中,波特率与比特率不同(如 1 个码元携带 2 比特信息时,比特率 = 波特率 × 2)。
- 典型取值:常见波特率有 9600、19200、115200 等,数值越大,通信速度越快,但抗干扰能力可能下降。
- 波形示例
- 波特率为 9600 时,每一位的传输时间为 1/9600 ≈ 104.17 微秒;
- 波特率为 4800 时,时间延长至 约 208.33 微秒(时长与波特率成反比)。
二、起始位(Start Bit)
1. 定义与作用
- 标志数据帧开始:固定为 低电平(逻辑 0),用于打破串口的空闲状态(空闲状态为高电平),通过下降沿通知接收方 “数据即将传输”。
- 关键意义:若无起始位,连续发送高电平(如 8 个 1)时,接收方无法判断数据帧的起始点,导致同步失败。
2. 技术特性
- 长度:固定为 1 位,占 1 个波特率周期(如 9600 波特率下为 104 微秒)。
- 波形表现:空闲状态为高电平,起始位触发下降沿,随后进入数据位传输阶段。
三、数据位(Data Bits)
1. 定义与作用
- 有效载荷载体:传输实际数据的部分,通常为 8 位(对应 1 字节),可扩展为 9 位(含 1 位校验位,见下文)。
- 传输顺序:低位先行(LSB First),即先发送字节的最低位(如字节 0X0F,二进制为
00001111
,实际发送顺序为11110000
)。
2. 技术细节
- 电平表示:逻辑 1 为高电平(如 TTL 电平的 3.3V 或 5V),逻辑 0 为低电平(0V)。
- 与校验位的关系
- 当使用校验位时,数据位为 8 位,校验位单独占用 1 位;
- 若不使用校验位,数据位可直接为 9 位(但较少见)。
四、停止位(Stop Bit)
1. 定义与作用
- 标志数据帧结束:固定为 高电平(逻辑 1),用于分隔相邻数据帧,同时将引脚恢复为空闲状态,为下一个起始位的下降沿做准备。
- 防止数据粘连:若无停止位,前一帧的最后一位(如 0)与下一帧的起始位(0)无法区分,导致帧同步错误。
2. 技术特性
- 长度可配置:常见为1 位、1.5 位或 2 位,具体取决于串口协议配置。
- 1 位停止位:数据帧紧凑,适用于高速通信;
- 2 位停止位:增加帧间隔,适合干扰较大的场景。
- 波形表现:数据位传输完毕后,引脚维持高电平至少 1 个波特率周期(如 1 位停止位)。
五、校验位(Parity Bit)
1. 定义与作用
- 数据验证机制:通过奇偶校验算法,检测数据传输过程中是否出现单比特错误。
- 工作原理
- 发送方:根据数据位中 “1 的个数” 生成校验位(0 或 1),使总个数为奇数(奇校验)或偶数(偶校验);
- 接收方:对接收到的数据位和校验位进行校验,若 “1 的个数” 不符合约定(如奇校验下为偶数),则判定传输错误。
2. 类型与特性
校验类型 | 规则 | 波形结构 |
---|---|---|
无校验 | 不添加校验位,仅起始位、数据位、停止位 | 3 部分:起始位 + 数据位 + 停止位 |
奇校验 | 数据位 + 校验位中 “1 的个数” 为奇数 | 4 部分:起始位 + 数据位 + 校验位 + 停止位 |
偶校验 | 数据位 + 校验位中 “1 的个数” 为偶数 | 4 部分:同上 |
3. 局限性与扩展
- 检出率:仅能检测单比特错误,无法检测双比特或偶数个错误(如两位同时翻转,奇偶性不变)。
- 替代方案:若需更高可靠性,可使用 CRC 校验(循环冗余校验),STM32 的 USART 外设支持该功能,但实现复杂度更高。
串口时序
仔细观察下面时序会更加了解串口通信。