STM32
登录
直播中
爱与友人
9年用户
1000经验值
擅长:可编程逻辑 模拟技术 存储技术
私信
关注
[问答]
如何去计算STM32串口接收器和发送器的波特率呢
开启该帖子的消息推送
波特率
stm32串口
接收器
如何去计算
STM32
串口接收器和发送器的波特率呢?设置波特率时的误差该如何去计算呢?
回帖
(1)
颜小玲
2021-12-9 11:20:56
一、分数波特率的产生
一、接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同。 =
这里的fck是给外设的时钟(PCLK1用于USART2、 3、 4、 5, PCLK2用于USART1)USARTDIV是一个无符号的定点数。这12位的值设置在USART_BRR寄存器。
注: 在写入USART_BRR之后,波特率计数器会被波特率寄存器的新值替换。因此,不要在通信进行中改变波特率寄存器的数值。如何从USART_BRR寄存器值得到USARTDIV
例1:
如果 DIV_Mantissa = 27 , DIV_Fraction = 12 (USART_BRR=0x1BC),通用同步异步收发器(USART)于是:
Mantissa (USARTDIV) = 27
Fraction (USARTDIV) = 12/16 = 0.75
所以 USARTDIV = 27.75
例2:
要求 USARTDIV = 25.62,
就有:
DIV_Fraction = 16
0.62 = 9.92
最接近的整数是: 10 = 0x0A
DIV_Mantissa = mantissa (25.620) = 25 = 0x19
于是, USART_BRR = 0x19A
例3:
要求 USARTDIV = 50.99
就有:
DIV_Fraction = 16
0.99 = 15.84
最接近的整数是: 16 = 0x10 => DIV_frac[3:0]溢出 => 进位必须加到小数部分DIV_Mantissa = mantissa (50.990 + 进位) = 51 = 0x33
于是: USART_BRR = 0x330, USARTDIV=51
二、设置波特率时的误差计算
注: 1. CPU的时钟频率越低,则某一特定波特率的误差也越低。可以达到的波特率上限可以由这组数据得到。
2. 只有USART1使用PCLK2(最高72MHz)。其它USART使用PCLK1(最高36MHz)。
一、分数波特率的产生
一、接收器和发送器的波特率在USARTDIV的整数和小数寄存器中的值应设置成相同。 =
这里的fck是给外设的时钟(PCLK1用于USART2、 3、 4、 5, PCLK2用于USART1)USARTDIV是一个无符号的定点数。这12位的值设置在USART_BRR寄存器。
注: 在写入USART_BRR之后,波特率计数器会被波特率寄存器的新值替换。因此,不要在通信进行中改变波特率寄存器的数值。如何从USART_BRR寄存器值得到USARTDIV
例1:
如果 DIV_Mantissa = 27 , DIV_Fraction = 12 (USART_BRR=0x1BC),通用同步异步收发器(USART)于是:
Mantissa (USARTDIV) = 27
Fraction (USARTDIV) = 12/16 = 0.75
所以 USARTDIV = 27.75
例2:
要求 USARTDIV = 25.62,
就有:
DIV_Fraction = 16
0.62 = 9.92
最接近的整数是: 10 = 0x0A
DIV_Mantissa = mantissa (25.620) = 25 = 0x19
于是, USART_BRR = 0x19A
例3:
要求 USARTDIV = 50.99
就有:
DIV_Fraction = 16
0.99 = 15.84
最接近的整数是: 16 = 0x10 => DIV_frac[3:0]溢出 => 进位必须加到小数部分DIV_Mantissa = mantissa (50.990 + 进位) = 51 = 0x33
于是: USART_BRR = 0x330, USARTDIV=51
二、设置波特率时的误差计算
注: 1. CPU的时钟频率越低,则某一特定波特率的误差也越低。可以达到的波特率上限可以由这组数据得到。
2. 只有USART1使用PCLK2(最高72MHz)。其它USART使用PCLK1(最高36MHz)。
举报
更多回帖
rotate(-90deg);
回复
相关问答
波特率
stm32串口
接收器
怎样
去
解决
STM32
F1
串口
的最高
波特率
问题
呢
2021-12-14
2491
如何
计算
STM32
下的
波特率
?
2021-03-18
2429
STM32
F103
串口
发送
数据后需要更改
波特率
应该用什么做判断?
2018-09-04
4824
Stm32
串口
波特率
如何切换?
2021-12-06
1977
如何对
STM32
F4
串口
进行初始化
呢
2021-12-07
2181
stm32
串口
波特率
如何设置?
2021-12-15
2350
基于
stm32
的自动识别
波特率
的设计
2016-09-14
7851
STM32
串口
的相关操作有哪些
呢
2021-12-07
823
什么是
串口
?怎样
去
设置串行
口
的
波特率
呢
2022-02-16
967
USART初始化结构体详解
2021-12-07
4121
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分