波特率(单片机中的波特率是什么?)
想学习单片机的同学可以关注、私信我或者在评论区回复我要入门。在我们学习单片机的时候,经常会看到波特率这个词,它的作用是什么样的呢?今天我来告诉你。
1.什么是波特率
不管是任何单片机,在使用串口通信的时候,有一个非常重要的参数,那就是波特率。波特率实际上就是每秒传输的字节数。双方在传输数据的过程中,要想通讯成功首先要保证的是波特率一致。
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;
数据手册给关于波特率部分有一张数据表:在这张数据表上,已经算出了常用的波特率值,我们可以拿来直接用。
本期先分享到这里,想要进群学习单片机编程的同学可以私信我,回复“我要入门”,与我们一起成长,喜欢的可以点个赞关注我们!