串口波特率(常用的串口波特率有哪些)
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寄存器 。
完成了以波特率为参数的功能 。从以上来看,波特率的计算似乎并不是很难 。
欢迎关注头条“玩嵌入式”,获取更多电子设计知识!
推荐阅读
- 做溜肉段的步骤及做法 溜肉段的家常做法
- 8个生活中比较实用的冷知识 史上最有用的冷知识
- 正常人腋下的体温是在36到37度之间 人体腋下正常体温
- 常见的50个英语昵称 常见英文名字
- 常规学生宿舍床的尺寸 学生宿舍床尺寸
- 液晶显示器常见故障分析与维修 液晶显示器故障
- 常用office办公软件有这几个 office办公软件包括哪些
- win10系统应该怎么删除无用的注册表 怎样清理注册表
- 如何正确理解 SQL 中的 NULL null有哪些常见的意思?
- 使用空调的几点小常识 空调使用常识