本帖最后由 liqingfeng123 于 2022-4-10 12:00 编辑
很多工程师们在选型的时候不清楚如何查看和配置uart的波特率,这对uart有特殊应用的产品选型造成一定困难,特此描述: 我们以M0+产品为例:如何粗略算出MCU最高波特率? 1.型号:APM32F030C8T6;
2.查看系统框图,找到uart的时钟源:
从框图中可以清晰找到Uart1/2是挂在APB桥接上。
3.查看并分析时钟树:
从uart1上可以看出,主要时钟是从PCLK1上来的。
4.综上查找道APB最高主频为48Mhz,不管是外部时钟还是内部时钟,PCLK1则为APB分频得出,这里取1分频,相当于PCLK1为48Mh,
作为uart1的时钟源。
5.公式计算:M0+的时钟源计算方式:
波特率分频系数(USARTDIV)是一个 16 位的数字,包含 12 位整数部分和 4 位
小数部分。它与系统时钟的关系:
波特率=PCLK1/[16×(USARTDIV)]
USART1的系统时钟为 PCLK1;(操作注意事项:必须在时钟控制单元使能系统时钟之后再使能 USART) 5.USARTDIV解释:也有说法是 波特率寄存器(USART_BR) ,实际上是USART_BR包含了USARTDIV,具体解释如下:
USART_BR(32bit)= 高16bit(保留自用)+USARTDIV(低16bit);
USARTDIV(低16bit)= IBR(15:4bit) +FBR(3:0bit);
IBR(15:4bit) = 整数,取最大值就是2进制12位:0b 1111 1111 1111 ,转10进制:1;
FBR(3:0bit) = 小数,取最大值就是2进制4位:0b 1111,转10进制:16;USARTDIV最小为:1;
当然这个是理论值,实际操作值建议在:(与配置和误码率相关)
Baud Rate 在 123 Bits/s and 500 KBits/s.
|