6.1 STM32串口简介
在之前的51单片机开发中已经详细地描述过串行通信协议,但是51中的串口有一个缺点,就是为了使用串口的波特率必须将晶振更换为11.0592MHz,如果采用12MHz晶振就会导致波特率误差太大,以致于串口无法正常收发,但是如果使用11.0592MHz晶振又会存在定时器计数误差(即定时器计数不准确),在STM32中很好地解决了这个问题,并且扩展了串口的应用。
STM32F103ZET6最多可提供5路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持LIN、支持调制解调器操作、智能卡协议和IrDASIRENDEC规范、具有DMA等。STM32的USART模块结构框图如下图所示。
我们可以从框图发现,STM32的波特率是低4位表示小数部分,高12位表示整数部分,这就是为什么STM32可以在不更换晶振的条件下使用串口通信。
6.2 相关寄存器
6.2.1 控制寄存器USART_CR1
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | UE | M | WAKE | PCE | PS | PEIE | TXEIE | TCIE | RXNEIE | IDLEIE | TE | RE | RWU | SBK |
Bit 13:USART使能
0:USART分频器和输出被禁止
1:USART模块使能
Bit 12:字长
0:一个起始位,8个数据位,n个停止位
1:一个起始位,9个数据位,n个停止位
Bit 11:唤醒的方法
0:被空闲总线唤醒
1:被地址标记唤醒
Bit 10:检验控制使能
0:禁止校验控制
1:使能校验控制
Bit 9:校验选择
0:偶校验
1:奇校验
Bit 8:PE中断使能
0:禁止产生中断
1:当USART_SR中的PE为1时,产生USART中断
Bit 7:发送缓冲区空中断使能
0:禁止产生中断
1:当USART_SR中的TXE为1时,产生USART中断
Bit 6:发送完成中断使能
0:禁止产生中断
1:当USART_SR中的TC为1时,产生USART中断
Bit 5:接收缓冲区非空中断使能
0:禁止产生中断
1:当USART_SR中的ORE或者RXNE为1时,产生USART中断
Bit 4:IDLE中断使能
0:禁止产生中断
1:当USART_SR中的IDLE为1时,产生USART中断
Bit 3:发送使能
0:禁止发送
1:使能发送
Bit 2:接收使能
0:禁止接收
1:使能接收,并开始搜寻RX引脚上的起始位
Bit 1:接收唤醒
0:接收器处于正常工作模式;
1:接收器处于静默模式
Bit 0:发送断开帧
0:没有发送断开字符
1:将要发送断开字符
6.2.2 波特率寄存器USART_BRR
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
USARTDIV_Mantissa[11:0] | USARTDIV_Fraction[3:0] |
Bit 15~Bit 4:波特率整数部分
Bit 3~Bit 0:波特率小数部分
注:波特率的计算公式
6.2.3 数据寄存器USART_DR
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | DATA[8:0] |
Bit 8~Bit 0:数据值
包含了发送或接收的数据。由于它是由两个寄存器组成的,一个给发送用TDR,一个给接收用RDR,该寄存器兼具读和写的功能。当USART_CR1中PCE位被置位进行发送时,写到MSB的值(根据数据的长度不同,MSB是第7位或者第8位)会被后来的校验位取代。当使能校验位进行接收时,读到的MSB位是接收到的校验位。
上一篇:探秘STM32U5安全特性|硬件加解密引擎与软件算法对比
下一篇:Stm32采用环形缓冲区接收rk3588的数据代码
推荐阅读最新更新时间:2024-11-17 11:49
设计资源 培训 开发板 精华推荐
- 用于电池充电指示器的 NCP301LSN26T1 2.6V 电压检测器的典型应用
- 使用 Analog Devices 的 LT1512CS8 的参考设计
- EVAL-AD7622CBZ,AD7622 评估板,16 位,2 Msps PulSAR 模数转换器
- NSV45020AT1G 恒流 LED 灯串的典型应用
- NFC指纹无线台式机开机棒
- LTC6990CS6#TRMPBF 过压检测器/警报的典型应用。压电报警器直接驱动
- TAR5S23U 点稳压器(低压差稳压器)的典型应用
- L298N电机驱动器
- 用于微处理器复位电路的 NCP301LSN31T1 3.1V 电压检测器的典型应用
- LT1952MPGN 高效率 36V 至 72V 输入至 3.3V/30A 输出、有源复位正激转换器的典型应用电路