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

串口波特率(常用的串口波特率有哪些)
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寄存器 。
完成了以波特率为参数的功能 。从以上来看,波特率的计算似乎并不是很难 。
欢迎关注头条“玩嵌入式”,获取更多电子设计知识!

    推荐阅读