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


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

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为例,公式变形后得到usart div = 72×100000/(16×115200)= 39.0625。将39.0625写入BRR USART。

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

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

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

USART _ BRR = 0x 271;

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

形式

在这个数据表上,已经计算出了常用的波特率值,我们可以直接使用。但是如果我们想让波特率的计算成为传递参数函数的一种方式,

比如USART_INIT(uint_t 16 Baud)调用时只需要写USART_INIT(9600)和USART_INIT(115200),那么程序怎么写呢?

4.计划的实施。

以下是该程序的注册版本。

代码部分

程序第一步2行:首先计算USART_DIV,这是前面公式的变体;

第2步,3行程序:获取USART_DIV的整数部分;

程序第4行第3步:获取USART_DIV的小数部分;

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

第5步,6行程序:将整数和小数部分组合在一起,即前4位和后12位重新组合;

第6步,第7行:将计算出的值赋给BRR寄存器。

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

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

本文地址:[https://chuanchengzhongyi.com/kepu/93807760c29d0cb8.html]
80个家常小炒(家常小炒菜谱1000大全,食谱大全窍门)
上一篇 2024-05-04
探索地外文明有效的3个途径
下一篇
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

相关推荐