【小知识】使用串口8bit,7bit和6bit数据格式的奇偶校验问题

这里以STM32H7为例进行说明,先看支持的校验格式:

 

主要是三种,6bit数据 + 1bit校验,7bit数据+1bit校验,8bit数据+1bit校验:

 

而发送寄存器和接收寄存器都是9bit格式的:

 

那么重点来了,校验位是串口外设硬件完成的,对应的数值也在发送/接收寄存器上。操作8bit数据+1bit格式的时候感觉不出来,因为我们一般都是仅读取寄存器的8bit。

操作6bit数据 + 1bit校验,7bit数据+1bit校验就有问题了,会把校验位数值也读出来。

简单的测试7bit数据+1bit校验的串口回环(RX和TX短接)奇校验效果:

发送hex数值11 ,22, 33, 44后,反馈的数据把校验位也给读出来了91, A2,B2,C4,即bit7都是1。

 

软件屏蔽校验位后,正常效果:

 

版权声明:本文为CSDN博主「Simon223」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/121657823

生成海报
点赞 0

Simon223

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

stm32cubemx+HAL+串口接收中断

stm32cubemxHAL串口接收中断 在cubemx配置完串口和global interrupt后需要在keil中添加如下代码。 第一步:在main函数中添加接收中断标志位开启函数 HAL_UART_Receive_IT