问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32 USART中的奇偶校验控制

创作时间:
作者:
@小白创作中心

STM32 USART中的奇偶校验控制

引用
CSDN
1.
https://blog.csdn.net/mftang/article/details/139006167

本文主要介绍STM32 USART的奇偶校验控制的实现原理,包括串口协议实现、奇偶校验控制、校验位计算以及接收和发送时的奇偶校验处理等内容。文章内容较为专业,主要面向STM32开发人员,具有一定的技术深度和实用性。

概述

本文主要介绍STM32 USART的奇偶校验控制的实现原理,以及和其相关的寄存器的状态位含义和计算方法等内容。

1. 串口协议实现

串口波形如下:

一个协议包由如下bit位构成

1)bit -0: 启动位, 电平变化1----->0

2)bit-1~bit8: 数据位, 如果存在奇偶校验位,则数据位可选择为7bit或者8bit, 最高bit位为奇偶校验位

3)停止位吗,电平变化0---->1

2 奇偶校验控制

USART_CR1寄存器中的PCE 位置 1,可以使能奇偶校验控制(发送时生成奇偶校验位,接收时进行奇偶校验检查)。根据 M 位定义的帧长度, 下表列出了可能的USART帧格式。

  1. 图注: SB:起始位, STB:停止位, P:奇偶校验位。

USART_CR1寄存器中的PCE 的相关信息

控制寄存器 1 (USART_CR1)

Control register 1

偏移地址: 0x0C

复位值: 0x0000 0000

位 8 PEIE: PE 中断使能 (PE interrupt enable)

此位由软件置 1 和清零。

0:禁止中断

1:当 USART_SR 寄存器中 PE=1 时,生成 USART 中断

3 校验位计算

3.1 偶校验

对奇偶校验位进行计算,使帧和奇偶校验位中“1”的数量为偶数(帧由 7 个或 8 个 LSB 位组成,具体取决于 M 等于 0 还是 1)。

例如:

数据=00110101; 4 个位置 1 => 如果选择偶校验( USART_CR1 寄存器中的 PS 位=

0),则校验位是 0。

3.2 奇校验

对奇偶校验位进行计算,使帧和奇偶校验位中“1”的数量为奇数(帧由 7 个或 8 个 LSB 位

组成,具体取决于 M 等于 0 还是 1)。

例如:

数据=00110101; 4 个位置 1 => 如果选择奇校验( USART_CR1 寄存器中的 PS 位=

1),则校验位是 1。

3.3 接收时进行奇偶校验检查

如果奇偶校验检查失败,则 USART_SR 寄存器中的 PE 标志置 1;如果 USART_CR1 寄存器中 PEIE 位置 1,则会生成中断。 PE 标志由软件序列清零(从状态寄存器中读取,然后USART_DR 数据寄存器执行读或写访问)。

注意:

如果被地址标记唤醒:会使用数据的 MSB 位而非奇偶校验位来识别地址。此外,接收器不会对地址数据进行奇偶校验检查(奇偶校验出错时, PE 不置 1)。

状态寄存器 USART_SR

状态寄存器 (USART_SR)

Status register

偏移地址: 0x00

复位值: 0x00C0 0000

位 0 PE:奇偶校验错误 (Parity error)

当在接收器模式下发生奇偶校验错误时,该位由硬件置 1。该位由软件序列清零(读取状态

寄存器,然后对 USART_DR 数据寄存器执行读或写访问)。将 PE 位清零前软件必须等待

RXNE 标志被置 1。如果 USART_CR1 寄存器中 PEIE = 1,则会生成中断。

0:无奇偶校验错误

1:奇偶校验错误

3.4 发送时的奇偶校验生成

如果USART_CR1寄存器中的PCE位置 1,则在数据寄存器中所写入数据的 MSB 位会进行传送,但是会由奇偶校验位进行更改(如果选择偶校验 (PS=0),则“1”的数量为偶数;如果选择奇校验 (PS=1),则“1”的数量为奇数)。

注意:

用于管理发送过程的软件程序可以激活软件序列,进而将 PE 标志清零(从状态寄存器中读取,然后对数据寄存器执行读或写访问)。在半双工模式下工作时(具体取决于软件),这可能会导致 PE 标志意外清零

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号