当前位置: 首页 > news >正文

STM32的USART能否支持9位数据格式话题

1、问题描述

STM32L051 这款单片机。平常的 USART 串口传输是 8 位数据,但是他的项目需要用串口传输 9 位数据。当设置为 8 位数据时,串口响应中断正常。但是,当设置为 9 位数据时,串口就不产生中断了。USART2 的 ISR 寄存器 RXNE 位被置1,RDR 寄存器接收到了数据,就是不产生中断,数据也读不出来。请问是不是 HAL 库函数哪里出了 bug?另外,客户还补充说,使用 STM32CubeMX 进行配置并创建的工程代码。

2、问题分析

客户表达的意思就是说,他使用 8 位数据格式进行 USART 通信时一切 OK,UART 中断也
正常,说明人家对这个模块的使用还是熟悉的。但使用 9 位数据格式时发生异常了。大致意思是
说使用 9 位数据格式后数据貌似也收到了,RXNE 也置位了,就是基本的中断没法产生。落脚点
就是怀疑 ST 的相关 HAL 库函数是不是有 Bug。

说实话,本人之前也没有使用 USART 的 9 位数据格式做过工程或验证测试。现在客户的重
点是怀疑库的 Bug 问题。先打开相应库函数,扫了几眼并未能看出代码有什么不妥的地方。然
后,打开手册,看看 L05X 系列芯片的 USART 到底支不支持 9 位数据格式的传输。
在这里插入图片描述
经核对手册,STM32 芯片的 USART 都是支持 9 位数据格式的,包括低功耗 LPUART。

3、问题验证

既然这样,手册明确了芯片的 USART 支持 9 位数据格式。赶紧找一块跟客户同一个系列的
开发板 32L053DISCOVERY 做针对性的测试验证。

因为客户使用的是 USART2,所以我开始也是使用 STM32L051 的 USART2 进行测试,巧的是,测试结果似乎不如人意,接收都成问题。结合方才阅读各个系列的手册得知,STM32 系
列的 USART 都支持 9bit 数据格式。刚好手边有块 STM32G4 系列的板,任意选了个片上的
USART 进行测试,也是采用中断方式进行收发。这次很顺利,收发正常。
这个验证可以初步肯定我们的相关库代码是没问题的,因为 HAL 库针对公共功能的代码是一样的。然后我再回过来基于 32L0538DISCOVERY 开发板进行验证,发现原来是这块开发板上的 USART2 所使用的GPIO 已作他用,有两个跳线焊盘没有连接,所以并没有实际连接到排针上,所以使用前检查一下电路图很重要。这次我干脆就用其兄弟 USART1 来进行测试,这次非常顺利。同时也比较了USART1 和 USART2 的特性,这个地方二者没有差别。断定问题出在客户的配置或应用代码上,我们的库没有问题。
之后,我将基于 STM32CubeMX 的配置和测试代码提供给客户进行参考、验证。

4、验证演示

相信并不是很多人使用过这个 USART 的 9 位数据通信格式,应用或许有点小众。越是涉及
这种相对小众的应用功能,我们在开发过程若遇到不顺时,往往可能怀疑自己用得对不对,或者
说这玩意到底能不能用。基于这个想法,我也顺便将 STM32 USART 9 位数据格式基于 HAL 库
的实现分享出来,包括中断方式和 DMA 方式。
实现过程很简单,该功能能用、可以用,将来某日有需要实现该应用时可以信心满满,不必
担心到底能不能用而内心摇摆不定、调试时动力不足。
基于 STM32CubeMX 的配置【注:选择 9 位数据格式时没有校验位了】:
在这里插入图片描述
定义了 2 个 16 位用于收发的测试数组:

uint16_t Txdata[]={1,1,1,1,1}; //初始值根据个人喜好来
uint16_t Rxdata[5];

中断方式需要调用的 API 函数:
在这里插入图片描述
使用中断方式时,在 STM32CubeMX 配置时记得使能 USART 相关收发中断。
下面是中断方式的用户测试代码,供参考。不停地修改发送值,每次发送一组 5 个相同的数
据后,下一组每个数都加 1 再继续送,查看接收是否正常。
在这里插入图片描述
如果使用 DMA 模式,要针对 DMA 功能再配置一下。这里我把 RX 功能配置为 DMA 循环
接收,TX 功能配置为 DMA Normal 模式。
在这里插入图片描述
在这里插入图片描述
下面是 DMA 方式的用户测试代码,供参考。不停地修改发送值,查看接收是否正常。
在这里插入图片描述

5、问题小结

这里基于客户的咨询,将整个验证测试过程整理分享出来,希望给未来首次涉及相关应用的
同仁有个参考,并提供强有力的开发信心。

本文档参考ST官方的《【应用笔记】LAT1361+STM32的USART能否支持9位数据格式话题》文档。

相关文章:

STM32的USART能否支持9位数据格式话题

1、问题描述 STM32L051 这款单片机。平常的 USART 串口传输是 8 位数据,但是他的项目需要用串口传输 9 位数据。当设置为 8 位数据时,串口响应中断正常。但是,当设置为 9 位数据时,串口就不产生中断了。USART2 的 ISR 寄存器 RXN…...

OLAP与数据仓库和数据湖

OLAP与数据仓库和数据湖 本文阐述了OLAP、数据仓库和数据湖方面的基础知识以及相关论文。同时记录了我如何通过ChatGPT以及类似产品(通义千问、文心一言)来学习知识的。通过这个过程让我对于用AI科技提升学习和工作效率有了实践经验和切身感受。 预热 …...

zookeeper快速入门三:zookeeper的基本操作

在zookeeper的bin目录下,输入./zkServer.sh start和./zkCli.sh启动服务端和客户端,然后我们就可以进行zookeeper的基本操作了。如果是windows,请参考前面章节zookeeper快速入门一:zookeeper安装与启动 目录 一、节点的增删改查 …...

oracle 19c打补丁到19.14

oracle 19c打补丁到19.14 oracle 19.3打补丁到19.14 查看oracle的版本: SQL> column product format A30 SQL> column version format A15 SQL> column version_full format A20 SQL> column status format A15 SQL> select * from product_compo…...

Spring Boot(六十九):利用Alibaba Druid对数据库密码进行加密

1 Alibaba Druid简介 之前介绍过Alibaba Druid的,章节如下,这里就不介绍了: Spring Boot(六十六):集成Alibaba Druid 连接池 这章使用Alibaba Druid进行数据库密码加密,在上面的代码上进行修改,这章只介绍密码加密的步骤。 目前越来越严的安全等级要求,我们在做产品…...

51单片机—DS18B20温度传感器

目录 一.元件介绍及原理 二,应用:DS18B20读取温度 一.元件介绍及原理 1.元件 2.内部介绍 本次元件使用的是单总线 以下为单总线的介绍 时序结构 操作流程 本次需要使用的是SKIP ROM 跳过, CONVERT T温度变化,READ SCRATCHPAD…...

Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践

背景介绍 书接上回《Monorepo 解决方案 — Bazel 在头条 iOS 的实践》,在头条工程切换至 Bazel 构建系统后,为了支持用户使用 Xcode 开发的习惯,我们使用了开源项目 Tulsi 作为生成工具,用于将 Bazel 工程转换为 Xcode 工程。但是…...

Unity触发器的使用

1.首先建立两个静态精灵(并给其中一个物体添加"jj"标签) 2.添加触发器 3.给其中一个物体添加刚体组件(如果这里是静态的碰撞的时候将不会触发效果,如果另一个物体有刚体可以将它移除,或者将它的刚体属性设置…...

docker compose部署rabbitmq集群

docker compose 配置 假设有两台电脑 A电脑的ip为192.168.1.100 B电脑的ip为192.168.1.103 A电脑的docker compose 配置 version: 3services:rabbitmq:restart: alwaysimage: rabbitmq:3.9.18-managementcontainer_name: rabbitmq-node-1hostname: rabbit1extra_hosts:- &quo…...

数据结构/C++:红黑树

数据结构/C:红黑树 概念实现基本结构插入uncle为红色节点uncle为黑色节点 总代码展示 概念 红黑树是一种二叉搜索树,一般的二叉搜索会发生不平衡现象,导致搜索效率下降,于是学者们开始探索如何让二叉搜索树保持平衡,这…...

【LabVIEW FPGA入门】浮点数类型支持

如今,使用浮点运算来设计嵌入式系统的需求变得越来越普遍。随着 FPGA 因其固有的大规模并行性而在浮点性能方面继续超越微处理器,这种情况正在加剧。线性代数和数字信号处理 (DSP) 等高级算法可以受益于浮点数据类型的高动态范围精度。LabVIEW FPGA 通过…...

ffmpeg 滤镜实现不同采样率多音频混音

音频混音在音视频开发中是十分重要的一个环节,所谓音频混音就是将所有需要混音的数据相加得到混音数据,然后通过某个算法进行非法数据的处理;例如相加数值超过最大值,最小值等! 在实际的音频开发中,要实现混音的流程如下: 因此我们的编码实现就分为五部分:寻找…...

UserTCP 传输数据时如何保证数据的可靠性?并以LabVIEW为例进行说明

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它通过多种机制保证数据的可靠性,确保数据在网络中从一端传输到另一端时,顺序正确且无误差。以下是TCP实现数据可靠性的一些关键机制: 1. 三…...

基于粒子群算法的分布式电源配电网重构优化matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1基本PSO算法原理 4.2配电网重构的目标函数 5.完整工程文件 1.课题概述 基于粒子群算法的分布式电源配电网重构优化。通过Matlab仿真,对比优化前后 1.节点的电压值 2.线路的损耗,这里计…...

mysql提权总结(自学)

目录 MySQL数据库提权简介 UDF提权 原理 利用条件 利用准备 利用过程 MOF提权 原理 利用条件 利用过程 自启动提权 反弹shell提权 总结 MySQL数据库提权简介 一般数据库提权思路: 检测数据库的存在(探测端口)获取到数据库的权限…...

[数据集][目标检测]铝片表面工业缺陷检测数据集VOC+YOLO格式400张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):400 标注数量(xml文件个数):400 标注数量(txt文件个数):400 标注类别…...

晶体管-二极管三极管MOS管选型参数总结

🏡《总目录》 目录 1,概述2,二极管选型参数2.1,类型(Type)2.2,最大整流电流(IF)2.3,反向击穿电压(VRRM)2.4,正向压降(VF)2.5,反向电流(IR)2.6,结温(Tj)2.7,热阻(Rth)2.8,频率特性2.9,包装类型...

ssh命令——安全远程连接Linux服务器

ssh命令是Secure Shell的简写,其功能是安全地远程连接服务器,ssh是OpenSSH套件中的客户端连接工具,通过SSH加密协议进行远程主机访问,并对远程服务器进行管理。 ssh命令的基本语法格式如下: ssh [选项] 主机名或IP地…...

Ansible非标记语言YAML与任务剧本Playbook

前言 上篇介绍了 Ansible 单模块(AD-Hoc)的相关内容Ansible自动化运维Inventory与Ad-Hoc-CSDN博客,Ad-Hoc 命令是一次性的、即时执行的命令,用于在远程主机上执行特定任务,这些命令通常用于快速执行简单的任务。当需要…...

WPF监控平台(科技大屏)[一]

跟着B站的视频敲了一个略微复杂的WPF界面,链接如下.在这里我详细的写一份博客进行设计总结. 系统介绍和配置及主窗口设计_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wy421Y7QD?p1&vd_source4796b18a2e4c1ec8a310391a5644b6da 成果展示 实现过程 总体来说,我的…...

ARM SME指令集:SQCVT与SQRSHR深度解析与应用

1. ARM SME指令集概述在当今处理器架构设计中,向量化计算已成为提升性能的关键技术。作为ARMv9架构的重要扩展,可扩展矩阵扩展(Scalable Matrix Extension,SME)指令集引入了多项创新特性,其中FEAT_SME2扩展…...

告别硬编码!在UE Niagara中创建可复用的自定义模块库(以动态力场为例)

告别硬编码!在UE Niagara中创建可复用的自定义模块库(以动态力场为例)在虚幻引擎的视觉特效制作中,Niagara系统以其强大的粒子模拟能力成为特效师的核心工具。然而,随着项目复杂度提升,频繁复制粘贴相同逻辑…...

StableSR vs 传统放大算法:为什么AI超分辨率效果更好?

StableSR vs 传统放大算法:为什么AI超分辨率效果更好? 【免费下载链接】sd-webui-stablesr StableSR for Stable Diffusion WebUI - Ultra High-quality Image Upscaler 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-stablesr StableSR…...

量子通信技术突破:量子处理器如何提升经典通信容量

1. 量子通信技术的新范式:量子处理器辅助经典通信在传统通信领域,香农极限长期被视为不可逾越的理论边界。然而,量子计算技术的快速发展正在颠覆这一认知。我们团队最新研究发现,通过量子处理器辅助的经典通信系统,可以…...

WSL2终端颜值与效率双飞:保姆级oh-my-zsh配置指南(含autojump、语法高亮插件)

WSL2终端颜值与效率双飞:保姆级oh-my-zsh配置指南(含autojump、语法高亮插件)在开发者的日常工作中,终端是使用频率最高的工具之一。一个高效、美观的终端环境不仅能提升工作效率,还能让枯燥的命令行操作变得愉悦。对于…...

CD-GraB算法:协调数据顺序,加速分布式机器学习收敛

1. 分布式机器学习中的收敛瓶颈与数据顺序的隐秘关联在分布式机器学习的世界里,我们每天都在和数据、算力、时间赛跑。当你把训练任务拆分到多个GPU或服务器节点上并行执行时,一个看似不起眼的问题往往会成为性能提升的“暗礁”:数据以什么顺…...

太顶了!只需输入需求,这几款一键生成论文工具自动生成毕业论文初稿!

毕业季论文焦虑?还在为选题、查资料、写大纲、找文献发愁?现在只需输入需求,AI 论文工具就能一键生成图文并茂的毕业论文初稿,从开题到定稿全流程搞定!千笔AI、ThouPen、豆包、DeepSeek、元宝这五款 AI 论文神器实测&a…...

如何在Mac上免费运行Windows游戏与应用:Whisky完整指南

如何在Mac上免费运行Windows游戏与应用:Whisky完整指南 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 还在为Mac无法运行Windows专属软件而烦恼吗?Whisky为你…...

【信息科学与工程学】计算机科学与自动化 ——第六十五篇 虚拟化/MIG 系列02

编号 类型 领域 虚拟化/MIG模式 算法名称 算法逐步推理思考的数学方程式及参数/常量/向量/常数/数字/数值列表 算法的时序数学方程式 关联知识 401 性能优化 GPU虚拟化+容器 MIG+容器 基于GPU内存带宽隔离的容器化AI训练任务调度算法 1. 带宽模型:每个MIG实例带宽…...

Tableau Server安全加固与合规运维实战指南

我不能按照您的要求生成关于“Tableau Server高危漏洞CVE-2025-26496”的实战复现与修复指南。 原因如下: CVE编号无效且存在严重合规风险 CVE-2025-26496 是一个 尚未发布、不存在的编号 。截至2024年7月,NIST NVD 官方数据库、MITRE CVE List、T…...