STM32H562----------串口通信(UART)
1、串口介绍
1.1、 数据通信概念
在单片机中我们常用的通信方式有 USART、IIC、SPI、CAN、USB 等;
1、数据通信方式
根据数据通信方式可分为串行通信和并行通信两种,如下图:
串行通信基本特征是数据逐位顺序依次传输,优点:传输线少成本低,抗干扰能力强可用于远距离传输,缺点传输速率低
并行通信特征是数据各位可通过多条线同时传输,优点传输速率高,缺点是成本高,抗干扰能力差;
2、数据传输方向
按照数据传输方向可分为全双工、半双工和单工通信,如下图所示:
3、数据同步方式
根据数据同步方式可分为同步通信和异步通信,如下图所示:
同步通信要求通信双方共用同一时钟信号,在总线上保持统一的时序和周期完成信息传输。
异步通信不需要时钟信号,而是在数据信号中加入开始位和停止位等一些同步信号,一般通信双方还会约定传输速率。
4、通信速率
在数字通信系统中,通信速率(传输速率)指数据在信道中传输的速度,分为两种:传信率和传码率
传信率:每秒钟传输的信息量,即每秒钟传输的二进制位数,单位为 bit/s(即比特每秒),因而又称为比特率
传码率:每秒钟传输的码元个数,单位为 Baud(即波特每秒),因而又称为波特率;
码元是信号被调制后的概念,每个码元可以表示一定 bit 的数据信息量。例如子啊 TTL 电平标准的通信中,0V 表示逻辑 0
5V 表示逻辑 1,这时码元就只可以表示两种状态。若在其它通信标准电平中电平信号 0V、2V、4V 和 6V 分别表示二进制
00、01、10、11,这时候码元就可以表示四种状态。
比特率和波特率的关系可以用以下关系式表示:
比特率 = 波特率 * log2 M
M 表示码元承载的信息量,可以理解 M 为码元的进制数
1.2、串口通信协议简介
串口按位(bit)发送和接收字节。串口通信协议是指规定了数据包的内容,内容包含了起始位、数据区、校验位及停止位,
在串口通信中,常用的协议包括 RS-232、RS-422 和 RS-482 等;如下图所示:
1、波特率
UART 是串口异步通信,不需要时钟信号,只需约定好两个设备之间的波特率,常见的波特率是 4800、9600、115200 等;
2、数据帧格式
串口通信的数据帧包括起始位、停止位、有效数据位以及校验位;
起始位:一般由一个逻辑 0 的数据位表示
有效数据位:起始位之后就是数据位,有效数据位一般会被约定为 5、6、7 或者 8 个位长,一般是低位(LSB)在前高位(MSB) 在后
校验位:一般用来判断接受的数据有无错误,校验方法有:奇校验、偶校验、0 校验、1 校验及无校验;
奇校验:指有效数据的和与校验位中"1"的个数为奇数,如一个 8 位长有效数据为 11001100,共 4 个"1",为达到奇校验效果
校验位则为"1";
偶校验:与上述奇校验要求相反,要求帧数据与校验位中"1"的个数为偶数;如数据帧为 11001100,则此时偶校验位为"0"
0 校验:指不管数据帧的内容,校验位总为"0"
1 校验:即校验位总为"1"
无校验:指数据帧中不包含校验位,一般不使用
停止位:一般通信双方需约定 0.5、1、1.5 或 2 个逻辑 1 的数据位表示;
1.3、STM32H5 串口外设介绍
STM32H562 的最多可提供 6 路串口(5 路普通串口和 1 路低功耗串口),支持 8/16 倍过采样、支持自动波特率检测、支持 Modbus
通信、支持同步单线通信和半双工单线通讯、支持 LIN、支持调制解调操作、智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA 功能;
USART 框图如下所示:
1、时钟与波特率
该部分主要功能是为 USART 提供时钟以及配置波特率;
如上图,我们可以看到两个时钟域,usart_pclk 时钟域及 usart_ker_ck 内核时钟域。
usart_pclk 是外设总线时钟;
usart_ker_ck 是 USART 时钟源,独立于 usart_pclk,由 RCC 提供;
波特率,即每秒钟传输的码元个数,波特率计算公式分为 16 倍过采样和 8 倍过采样;
16 倍过采样下,波特率计算公式如下:
baud = usart_ker_ckpres/USARTDIV
8 倍过采样下,波特率计算公式如下:
baud = (2*usart_ker_ckpres)/USARTDIV
2、收发数据
USART 双向通信有两个引脚 TX/RX;
USART_TDR 是 USART 发送数据寄存器,USART_RDTR 是 USART 接收数据寄存器,这两个寄存器都是低 9 位有效;
可通过 USART_CR1 寄存器的 M 位设置字长:
7 位字符长度:M[1:0] = “10”
8 位字符长度:M[1:0] = “00”
9 位字符长度:M[1:0] = “01”
基本都是使用 8 位数据字长;
3、控制寄存器
可以通过控制寄存器控制 USART 数据的发送、数据接收、各种通信模式的设置、中断、DMA 模式及唤醒单元等;
4、DMA 和中断功能
USART 支持 DMA 传输,可实现高速数据传输;
5、USART 信号引脚
在 RS232 硬件流控制模式下需要以下两个引脚:
CTS(清除以发送):发送器在发送下一帧数据之前会检测 CTS 引脚,若为低电平,表示可发送数据;若为高电平则在发送完当前数据之后停止发送
RTS(请求以发送):若为低电平,则该信号用于指示 USART 已准备好接收数据。
在 RS485 硬件控制模式下需要下面该引脚:
DE(驱动器使能):该信号用于激活外部收发器的发送模式。
在同步主/从模式和智能卡模式下需要以下引脚:
CK:该引脚在同步主模式和智能卡模式下用作时钟输出,在同步从模式下用作时钟输入。
NSS:该引脚在同步从模式下用作从器件选择输入。
2、代码详解
代码如下:
UART_HandleTypeDef UART1_Handler;
DMA_HandleTypeDef UART1TxDMA_Handler;
DMA_HandleTypeDef UART1RxDMA_Handler;//发送接收缓冲区
uint8_t rx_buffer[512];
uint8_t tx_buffer[256];volatile uint8_t rxComplete = 0;
volatile uint16_t rxlen = 0;
volatile uint8_t dma_tx_busy = 0;void HAL_UART_MspInit(UART_HandleTypeDef *huart)
{GPIO_InitTypeDef GPIO_Initure;if(huart->Instance == USART1){__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_Initure.Pin = GPIO_PIN_9 | GPIO_PIN_10;GPIO_Initure.Mode = GPIO_MODE_AF_PP;GPIO_Initure.Pull = GPIO_NOPULL;GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH;GPIO_Initure.Alternate = GPIO_AF7_USART1;HAL_GPIO_Init(GPIOA,
相关文章:

STM32H562----------串口通信(UART)
1、串口介绍 1.1、 数据通信概念 在单片机中我们常用的通信方式有 USART、IIC、SPI、CAN、USB 等; 1、数据通信方式 根据数据通信方式可分为串行通信和并行通信两种,如下图: 串行通信基本特征是数据逐位顺序依次传输,优点:传输线少成本低,抗干扰能力强可用于远距离传…...
C++基础进阶:函数、内联函数与Lambda函数详解
引言 在C编程的旅程中,函数是构建复杂程序的基本单元。它们像乐高积木一样,允许我们将代码分解成更小、更易于管理的部分。今天,我们将深入探讨C中的三种重要函数类型:普通函数、内联函数以及Lambda函数。掌握它们,将…...
大话软工笔记—需求调研的准备
需求调研前需做好充分的准备: 1. 背景资料来源 可以通过企业官网、宣传资料、人员沟通获取客户企业信息。 2. 背景资料汇总 根据获得的信息做出一份背景分析报告,主要包含以下内容: 2.1 企业基本信息 企业发展愿景&#…...
如何计算1920*1080分辨率的YUV或RGB图像数据占用大小?
好多开发者在对接大牛直播SDK的时候,经常问到的问题是,1920*1080分辨率的YUV或RGB图像数据,到底多少字节?在音视频图像开发中,19201080(即 Full HD)是一种极其常见的分辨率。但很多开发者在处理…...

webpack其余配置
webpack搭建本地服务器 首先是要安装一个webpack-dev-server npm install webpack-dev-server -D 安装后在package.json中添加: {"name": "babel_core_demo","version": "1.0.0","main": "index.js"…...
ArkUI-X与Android桥接通信之消息通信
平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。本文主要介绍Android平台与ArkUI交互,ArkUI侧具体用法请参考…...

【CUDA 】第5章 共享内存和常量内存——5.3减少全局内存访问(2)
CUDA C编程笔记 第五章 共享内存和常量内存5.3 减少全局内存访问5.3.2 使用展开的并行规约思路reduceSmemUnroll4(共享内存)具体代码:运行结果意外发现书上全局加载事务和全局存储事务和ncu中这两个值相同 5.3.3 动态共享内存的并行规约reduc…...

Python 训练营打卡 Day 46
通道注意力 一、什么是注意力 注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景,聚焦于图片中的主体(如猫、汽车)。 transformer中的叫做自注意力机制,他是一种自己学习自…...
MySQL(56)什么是复合索引?
复合索引(Composite Index),也称为多列索引,是在数据库表的多列上创建的索引。它可以提高涉及多个列的查询性能,通过组合多个列的值来索引数据。复合索引特别适用于需要同时过滤多列的查询。 复合索引的优点 提高多列…...

Rust学习(1)
声明:学习来源于 《Rust 圣经》 变量的绑定和解构 变量绑定 let a "hello world":这个过程称之为变量绑定。绑定就是把这个对象绑定给一个变量,让这个变量成为它的主人。 变量可变性 Rust 变量默认情况下不可变,可以通过 mut …...

鸿蒙仓颉语言开发实战教程:商城应用个人中心页面
又到了高考的日子,幽蓝君在这里祝各位考生朋友冷静答题,超常发挥。 今天要分享的内容是仓颉语言商城应用的个人中心页面,先看效果图: 下面介绍下这个页面的实现过程。 我们可以先分析下整个页面的布局结构。可以看出它是纵向的布…...
vue3 eslint ts 关闭多单词命名检查
无效做法 import { globalIgnores } from eslint/config import {defineConfigWithVueTs,vueTsConfigs, } from vue/eslint-config-typescript import pluginVue from eslint-plugin-vue import skipFormatting from vue/eslint-config-prettier/skip-formatting// To allow m…...
横向对比npm和yarn
🔧 基本概况 维度npmYarn所属Node.js 官方工具(npm, Inc.)Meta(Facebook)主导开发初始发布时间2010 年2016 年(为了解决 npm 的一些痛点而诞生)默认安装Node.js 安装后自带需要手动安装最新版本…...

智能生成完整 Java 后端架构,告别手动编写 ControllerServiceDao
在 Java 后端开发的漫长征途上,开发者们常常深陷繁琐的基础代码编写泥潭。尤其是 Controller、Service、Dao 这三层代码的手动编写,堪称开发效率的 “拦路虎”。从搭建项目骨架到填充业务逻辑,每一个环节都需要开发者投入大量精力,…...

Python----目标检测(yolov5-7.0安装及训练细胞)
一、下载项目代码 yolov5代码源 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite yolov5-7.0代码源 Release v7.0 - YOLOv5 SOTA Realtime Instance Segmentation ultralytics/yolov5 GitHub 二、创建虚拟环境 创建一个3.8…...
MySQL EXPLAIN 命令详解
文章目录 MySQL EXPLAIN 命令详解EXPLAIN 输出的基本结构id2. select_type3. table4. partitions5. type6. possible_keys7. key8. key_len9. ref10. rows11. filtered12. Extra 使用 EXPLAIN 的注意事项示例 MySQL EXPLAIN 命令详解 EXPLAIN 是 MySQL 中一个非常有用的命令&a…...

【Linux】文件赋权(指定文件所有者、所属组)、挂载光驱(图文教程)
文章目录 文件赋权创建文件 testChmod查看文件的当前权限使用 chmod 命令修改权限验证权限关键命令总结答案汇总 光驱挂载确认文件是否存在打包压缩压缩验证创建 work 目录将压缩文件复制到 work 目录新建挂载点 /MNT/CDROM 并挂载光驱答案汇总 更多相关内容可查看 此篇用以解决…...

第22讲、Odoo18 QWeb 模板引擎详解
Odoo QWeb 模板引擎详解与实战 Odoo 的 QWeb 是其自研的模板引擎,广泛应用于 HTML、XML、PDF 等内容的生成,支撑了前端页面渲染、报表输出、门户页面、邮件模板等多种场景。本文将系统介绍 QWeb 的核心用法、工作原理,并通过实战案例演示如何…...
OpenJudge | 大整数乘法
总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积。 输入 有两行,每行是一个不超过200位的非负整数,没有多余的前导0。 输出 一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342&am…...

【原理解析】为什么显示器Fliker dB值越大,闪烁程度越轻?
显示器Fliker 1 显示器闪烁现象说明2 Fliker量测方法2.1 FMA法2.2 JEITA法问题答疑:为什么显示器Fliker dB值越大,闪烁程度越轻? 3 参考文献 1 显示器闪烁现象说明 当一个光源闪烁超过每秒10次以上就可在人眼中产生视觉残留,此时…...

Bootstrap Table开源的企业级数据表格集成
Bootstrap Table 是什么 Bootstrap Table 是一个基于 Bootstrap 框架的开源插件,专为快速构建功能丰富、响应式的数据表格而设计。 它支持排序、分页、搜索、导出等核心功能,并兼容多种 CSS 框架(如 Semantic UI、Material Design 等&am…...
JDK8新特性之Steam流
这里写目录标题 一、Stream流概述1.1、传统写法1.2、Stream写法1.3、Stream流操作分类 二、Stream流获取方式2.1、根据Collection获取2.2、通过Stream的of方法 三、Stream常用方法介绍3.1、forEach3.2、count3.3、filter3.4、limit3.5、skip3.6、map3.7、sorted3.8、distinct3.…...

vue3表格使用Switch 开关
本示例基于vue3 element-plus 注:表格数据返回状态值为0、1。开关使用 v-model"scope.row.state 0" 会报错 故需要对写法做些修改,效果图如下 <el-table-column prop"state" label"入学状态" width"180" …...

【11408学习记录】考研写作双核引擎:感谢信+建议信复合结构高分模板(附16年真题精讲)
感谢信建议信 英语写作2016年考研英语(二)真题小作文题目分析写作思路第一段第二段锦囊妙句9:锦囊妙句12:锦囊妙句13:锦囊妙句18: 第三段 妙句成文 每日一句词汇第一步:找谓语第二步:…...

一套个人知识储备库构建方案
写文章的初心是做知识沉淀。 好记性不如烂笔头,将阶段性的经验总结成文章,下次遇到相同的问题时,查起来比再次去搜集资料快得多。 然而,当文章越来越多时,有一个问题逐渐开始变得“严峻”起来。 比如,我…...

行李箱检测数据集VOC+YOLO格式2083张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2083 标注数量(xml文件个数):2083 标注数量(txt文件个数):2083 …...
QT进阶之路:带命名空间的自定义控件在Qt设计器与qss中的使用技巧
文章目录 0.前言1.带命名空间Qt自定义类在QT设计器中的使用技巧1.1 定义一个带命令空间QLabel自定义类1.2 在QT设计器中引入自定义控件类 2.带命名空间Qt自定义类在qss中的使用技巧2.1 命名空间在 QSS 中的特殊语法2.1 在QSS中定义带命名空间的样式 3.在项目中使用带命名空间的…...
矩阵详解:从基础概念到实际应用
矩阵详解:从基础概念到实际应用 目录 矩阵的基本概念矩阵的类型矩阵运算特殊矩阵矩阵的逆与伴随矩阵的秩与等价分块矩阵矩阵的应用 矩阵知识体系思维导图 mindmaproot((矩阵))基本概念定义mn数表元素aij矩阵记号基本术语行数和列数方阵与非方阵矩阵相等矩阵类型…...
Prompt工程学习之自我一致性
自我一致性 (Self-consistency) 概念:该技术通过对同一问题采样不同的推理路径,并通过多数投票选择最一致的答案,来解决大语言模型(LLM)输出的可变性问题。通过使用不同的温度(temp…...

实践提炼,EtherNet/IP转PROFINET网关实现乳企数字化工厂增效
乳企数字化工厂的核心技术应用 1. 智能质检:机器视觉协议网关的协同 液态奶包装线(利乐罐装)的漏码检测生产线,其高速产线(20,000包/小时)需实时识别微小缺陷,但视觉系统(康耐视Ca…...