当前位置:文档之家› STM32单片机的串口通信波特率计算方法

STM32单片机的串口通信波特率计算方法

STM32单片机的串口通信波特率计算方法
1. 什么是波特率
不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。

什么是波特率:波特率就是每秒传送的字节数。

双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。

下面以STM32单片机为例,讲解一下串口波特率的计算方法。

2. STM32波特率相关的寄存器
STM32单片机设置波特率的寄存器只有一个:USART_BRR寄存器,如下图所示。

该寄存器的有效位数为16位,前4位用于存放小数部分,后12位用于存放整数部分。

将波特率算出来后,数值填入这个波特率就可以了。

下面介绍如何计算。

3. 波特率计算方法
STM32的数据手册给出了计算方法,有一个公式,如下图所示:
在这个公式上,共有三个变量,其中两个我们是知道的,Fck和Tx/Rx波特率这两个是已知的,USARTDIV是未知的。

通过该公式的描述可以看出如果使用USART1的话,那Fck 就是PCLK2=72MHz,否则就是PCLK1=36MHz,Tx/Rx波特率这个参数是已知的。

只需要计算出USARTDIV的值赋值给USART_BRR寄存器就可以了。

以115200为例,将公式变形后得到:USARTDIV = 72×1000000/(16×115200) = 39.0625。

即将39.0625写入USART_BRR即可。

前文说过,USART_BRR的前4位存放小数部分,后12位存放整数部分。

那小数部分DIV_Fraction = 0.0625×16 = 1 = 0x01;那整数部分DIV_Mantissa = 39 = 0x27;那USART_BRR = 0X271;
数据手册给我们提供了一张数据表:
在这张数据表上,已经算出了常用的波特率值,我们可以拿来直接用。

但是如果我们想把。

相关主题