串口波特率(常用的串口波特率有哪些)

2022-07-08 17:00:11 发布:网友投稿
热度:74

串口波特率(常用的串口波特率有哪些)

1.波特率是多少?

无论是什么单片机,在使用串行通信时,都有一个非常重要的参数:波特率。什么是波特率:波特率是每秒传输的字节数。在数据传输过程中,波特率是一样的,这是通信成功的基本保证。以STM32单片机为例,说明串口波特率的计算方法。

2.与STM 32波特率相关的寄存器

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

波特率寄存器

该寄存器有16个有效位,前4位用于存储小数部分,后12位用于存储整数部分。波特率计算出来后,只需填写波特率即可。下面是如何计算的。

3.波特率计算方法

STM32的数据手册给出了计算方法,并有公式,如下图所示:

计算公式

在这个公式中,有三个变量,其中两个我们知道,Fck和Tx/Rx波特率已知,USARTDIV未知。根据这个公式的描述,如果使用USART1,那么Fck为PCLK2=72MHz,否则为PCLK1=36MHz,参数Tx/Rx波特率已知。只需计算USARTDIV的值,并将其分配给USART_BRR寄存器。以115200为例,公式变形后得到usart div = 72×1000000/(16×115200)= 39.0625。只需将39.0625写入USART_BRR即可。

如前所述,USART_BRR的前4位存储小数部分,后12位存储整数部分。

小数部分DIV _ Fraction = 0.0625× 16 = 1 = 0x01;

那个整数部分DIV _尾数= 39 = 0x27;

那么USART _ BRR = 0X271;

数据手册为我们提供了一份数据手册:

形式

在该数据手册上,已经计算出常用的波特率值,我们可以直接使用它们。但是如果我们想让波特率计算成为一个传递函数,

比如:USART_INIT(uint_t 16波特率),调用时只需要写USART_INIT(9600)和USART_INIT(115200)。程序怎么写?

4.方案的实施

以下是程序的注册版本。

代码部分

程序第一步包括两行:首先计算USART_DIV,这是之前公式的变形;

程序第二步第三行:获取USART_DIV的整数部分;

第三步,程序第四行:获取USART_DIV的小数部分;

程序的第四步是5行:将整数部分左移4位,即存入BRR寄存器的最后12位;

第五步,第六行:合并整数和小数部分,即重组前4位和后12位;

第6步,第7行:将计算值分配给BRR寄存器。

完成了以波特率为参数的功能。从以上来看,波特率的计算似乎并不是很难。

欢迎关注头条“玩嵌入式”,获取更多电子设计知识!

下一篇:铜管乐器有哪些(铜管乐包括哪些乐器)
上一篇:米奇儿童漆(米奇儿童漆官网价格表)