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

stm32usart通信接口

1.目的:将一个设备的数据传输到另一个设备,扩展硬件系统

2.通信协议:指定通信的规则,通信双方按照协议规则进行数据收发

1.全双工:双方能够同时进行双向通信(一班有两根通信线,一根发送,一根接收)

2.单工:只能从一个设备到另一个设备

3.时钟特性:接收方可以在时钟信号的指引下进行采样,无时钟线需要约定一个频率(异步通信,还需要加帧头和帧尾,进行采样位置对齐)

4.电平特性:

1.单端:引脚高低电平都是对GND的电压差,所以通信双方必须共地(把GND接在一起)

3.串口通信:单片机的串口可以使单片机与单片机,单片机与电脑与各种模块互相通信

4.串口模块

1.USB转串口:

1.搭载了可以把串口协议转换为USB协议的CH340芯片,实现单片机与电脑的通信

2.陀螺仪

1.可以测量角速度,加速度这些姿态参数

2.左右各有4个引脚,一边是串口,另一边是I2C

3.蓝牙串口模块

1.模块中的芯片可以和手机互联

5.硬件电路

1.TX发送RX接收

2.TX,RX需交叉连接

3.当只需单向数据传输时,可以只接一根通信线

4.当电平标准不一致时,需要加电平转换芯片

6.电平标准

1.电平标准是数据1和0的表达式,是传输线缆中认为规定的电压与数据的关系

2.常用电平标准

1.TTL:+3.3或+5为1,0伏表示0

2.RS232:-3--15为1,+3-+15为0

3.RS485:两线压差+2-+6为1,-2--6为0(差分信号)

7.串口参数及时序

1.波特率:串口通信的速率

2.起始位:标志一个数据帧的开始,固定为低电平

3.数据位:数据帧的有效载荷,1为高电平,0为低电平,低位先行

4.校验位:用于数据验证,根据数据位计算而来(奇校验在传输数据为末尾补1,保证1为奇数,接收方验证1的个数还是奇数,就认为数据没出错,偶校验同理)

5.停止位:用于数据帧间隔,固定为高电平

6.串口时序波形

8.usart简介

1.usart是stm32内部集成硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,可从tx发射,也可自动接收rx的数据帧拼接为一个字节数据,存放在数据寄存器里

2.自带波特率发生器,最高达4.5MBits

3.可配置数据位长度(8/9),停止位长度(0.5/1.5/2)

4.可选校验位(无校验/奇校验/偶校验)

5.支持同步模式,硬件流控制,DMA,智能卡,IrDA,LIN

9.电路示意图

1.TDR和RDR共用一个地址

2.nRTS是输出脚,nCTS是输入脚(n意思是低电平有效)

接线方法:

1.找另一个支持流控的串口,TX接到这个串口RX,RTS要输出一个能不能接收的反馈信号,接到对方的CTS,能接收时,RTS就置低电平,请求对方发送,对方CTS接收到之后,就可以一直发,处理不过来时,RTS就会置高电平,对方CTS接收到之后,就会暂停发送,知道接收数据寄存器被读走,RTS置低电平,新的数据才会继续发送

2.CTS和RTS要交叉连接

3.SCLK是用于产生同步的时钟信号,配合发送移位寄存器输出,发送寄存器没移位一次,同步时钟电平就跳变一个周期(只支持输出,不支持输入)

用途

1.兼容别的通信协议

2.做自适应波特率

4.唤醒单元

1.作用:实现串口挂载多设备,发送指定地址时,此设备唤醒开始工作

5.中断输出控制:配置中断是否能通向NVIC

1.中断申请位:状态寄存器的各种标志位(TXE发射寄存器空,RNXE接收寄存器非空,用于判断发送状态和接收状态)

6.波特率发生器(分频器):APB时钟进行分频,得到发送和接收移位的时钟

1.时钟输入:fPCLKx(x=1或2,USART挂载在APB2(72M)其他的USART挂载在APB1(36M))

2.进行分频:除一个USARTDIV的分频系数,分频完成后,再除以16,得到发送器和接收器时钟,通向控制部分

3.TE为1,发送器失能,发送的波特率就有效,RE为1,接收器使能,接收部分的波特率就有效

10.基本结构图

1.寄存器往右移,低位先行

2.数据由数据寄存器转到移位寄存器时,会置一个TXE标志位,判断标志位就可以知道是不是可以写下一个数据

3.写入DR寄存器时数据走上面这条路,进行发送,读取时走下面这条路,进行接收

11.数据帧

再程序中配置8位字长和9位字长(数据位长度)进行波形对比

1.stm32的串口可以配置停止位长度为0.5,1,1.5,2四种,四种参数的区别是停止位市场不一样

2.起始位侦测

1.当输入电路侦测到一个数据起始位后,就会以波特率的频率,连续采样一帧数据,同时,从起始位开始,采样位置就要对齐到位的正中间(第一位对齐,后面肯定对齐)

2.采样时钟会以波特率16倍频率进行采样(1位的时间进行16次采样)

3.开始置1,采到0之后证明出现下降沿

4.数据采样

1.从1-16,是一个数据位时间的长度(在1个数据位,有16个采样时钟)

2.数据采样过程判定标准为2:1(两次以上为1返回1,两次以上为0返回0)

3.波特率发生器(分频器)

1.发送器和接收器的波特率有波特率寄存器BRR里的DIV决定

2.计算公式:波特率=fPCLK2/1/(16*DIV)

12.库函数

1.void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);:用于配置同步时钟输出,包括时钟是否要输出,时钟的极性相位等参数

2.void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);:可开启USART到DMA的触发通道

3.void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);:发送和接收数据

13.串口接收有查询和中断两种方法

1.查询

1.流程:在主函数里不断判断RXNE标志位,置1则说明收到数据,在读取DR寄存器即可

2.中断

1.流程:开启RXNE标志位到NVIC输出

2.在if函数内若读取DR则自动清除,若没读取则手动清除

http://www.cnnetsun.cn/news/4132861.html

相关文章:

  • Qt文件浏览器进阶:QFileSystemModel与QTreeView深度定制与性能优化
  • DeepSeek Harness智能体框架实战:从零部署大肥鱼宠物插件
  • GEO行业服务商怎么选?六家代表企业多维度实测!差距明显
  • IOP旗下工程综合刊《Engineering Research Express》,EI检索 3.5月录用,硕博毕业/评职晋升新选择!
  • CachyOS:极致性能的Arch Linux发行版安装与优化指南
  • TensorRT nvinfer配置参数模板:从核心原理到实战调优指南
  • Firth惩罚Logit结果解读:稀有事件的偏差修正估计
  • Java集合框架与数据结构面试全解析
  • macOS把OBS画面变成系统级虚拟摄像头:obs-mac-virtualcam从安装到排障的完整指南
  • springboot湘超足球联赛在线购票系统95656-计算机课程设计、毕业设计
  • 大厂面试中的LLM与RAG技术解析与优化策略
  • 时间序列分析实战:从ARIMA到SARIMA的建模全流程解析
  • LTspice仿真流程八步法:从原理图到可靠结果的工程化实践
  • 基于SpringBoot的二手车交易平台源码+文档
  • VVC仿射运动补偿:从原理到实践,提升视频编码效率的关键技术
  • 场边检下机旅客实时无感定位系统建设方案——基于人脸识别、视频结构化数据与衣着、姿态、微动作特征多模态融合及镜像视界单视频三维重构
  • 罗技鼠标宏LUA脚本编程指南:从原理到实践,探索硬件自动化
  • 大模型时代职业发展指南:从技术栈到求职策略
  • 量化招聘专家:连接顶尖人才与量化机构的核心桥梁
  • 【MATLAB例程分享,车联网14】基于V2X通信的匝道汇入协同速度控制仿真——对比无协同与V2X协同策略下的汇入间隙、延误、最大制动及风险指标。附完整代码的下载链接
  • Gym-V:统一视觉环境接口,加速Agentic Vision与视觉强化学习研究
  • 计算病理学临床整合:基础模型与智能体AI如何重塑诊断范式
  • 从零构建Am29000处理器模拟器:深入机器码与窗口化OS交互
  • Ansible Day 3 实验总结(实验 14-18)
  • 自动化发布 Release:语义化版本与自动生成 Release Notes
  • YOLOv4精读:从核心架构到实战调优,掌握目标检测工程化精髓
  • 2026智能巡检机器人选型指南:从场景需求倒推技术规格
  • 放射性废水扩散建模:从对流-扩散方程到Python数值求解实战
  • LangGraph多智能体系统实战:从架构到代码的完整指南
  • Vibe-FDTR:面向代理的FDTR热物性数据分析框架,实现可复现性