STM32(14)USART

USART:一种片上外设,用来实现串口通信,就是stm32内部的串口

USART简介

串并转换电路

串行通信和并行通信

串行:一根数据线,逐个比特位发送

为什么要串并转换

移位寄存器

USART的基本模型

通过查询SR(状态寄存器) 可知数据有没有发完,有没有接收到数据等

CR(配置寄存器)

BPR(波特率寄存器)

产生一个频率可调的脉冲信号

数据的发送

双缓冲和连续发送

TDR和移位寄存器分别对应两个缓冲

数据发送过程中的问题

1.数据发送过快导致数据覆盖

2.数据说明时候发送完成

SR(状态寄存器)

通过读取标志位获取USART的工作状态

每次向TDR中写值之前,先查询TXE标志位

TXE=1,则TDR寄存器为空,可以写

TC=1,则两个寄存器都为空,表明数据发完了

单个数据的发送

数据的连续发送

错为什么错:并不是双缓冲的连续发送

数据的接收

存在的问题:不知道什么时候读数据

有数据时,要赶紧读RDR里的数据

接收单个数据

接收多个数据

错误标志位

接收方:

数据接收方会采集码元,过采样的方式采集,以16倍的波特率采集,三次采的都是1则1,

过载错,没有及时的读数据,导致接收方的移位数据寄存器中的数据被后来的数据覆盖,则ORE为1

错误标志位只对数据的接收方有效

所以这些程序只写在数据接收方

为什么要先备份:

错误标志位指示的是当前在RDR寄存器里的数据的错误情况,第三步把数据读出来后,标志位会清空

相关推荐
xuxie997 小时前
start9 霍尔双相编码器
单片机
兆龙电子单片机设计7 小时前
【STM32项目开源】STM32单片机语音分类垃圾桶-蓝牙APP
stm32·单片机·嵌入式硬件·物联网·开源·自动化·毕业设计
零涂毕业设计8 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
阿龙的工作记录9 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
ye150127774559 小时前
220V转5V1A隔离芯片WT5602
单片机·嵌入式硬件·其他·硬件工程
武汉万象奥科10 小时前
AGV导航控制器方案 | 基于HD-RK3576系列核心板的算控融合一体化平台
arm开发·嵌入式硬件·arm核心板·单板机
ye1501277745511 小时前
DC24V-100V转3.3V500mA隔离芯片WT5602
单片机·嵌入式硬件·其他·硬件工程
Lumos6fly11 小时前
51单片机从零到实战(15)——数字时钟温度计
单片机·嵌入式硬件·51单片机
gwf21611 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
zlinear数据采集卡13 小时前
从“脏信号”到“纳伏级纯净”:硬核拆解DABL7606的多级抗混叠滤波与24位过采样算法
arm开发·科技·嵌入式硬件·fpga开发·开源