如何将USART波特率增加到2Mbps、3Mbps或4Mbps。我正在使用STM32L151RCT6A,我可以运行到921600。我已经用PLL 32MHz设置了时钟。从数据表上可以看出,这是可能的,有人做过吗?

最佳答案

数据表仅概述了特定部件及其外围设备和电气特性。有关如何使用设备的信息,您需要Reference Manual。这给出了波特率的以下公式:
发送/接收波特率=CK_APB1/(8 x(2-OVER8)x USARTDIV)
其中USARTDIV是在USART_BRR寄存器上编码的无符号定点数。
当OVER8=0时,小数部分用4位编码,并由
USART_BRR寄存器中的DIV_分数[3:0]位
当OVER8=1时,小数部分用3位编码,并由
必须保留USART_BRR寄存器中的DIV_fraction[2:0]位和位DIV_fraction3
变明朗。
USART位于APB1总线上,参考手册中的图12是时钟树,它显示了APB1时钟是如何从PLL时钟派生出来的。最大的APB1时钟是32兆赫。对于更高的速度,需要OVER8=1,给出:
波特率=32X106/(USARTDIV x 8)。
所以USARTDIV=32X106/(波特x 8)
因此,对于4Mbps,USARTDIV=1(详见表138 S.No.12)。对于2Mps,USARTDIV=2。要达到3Mbps,必须将APB1时钟降低到24MHz,并将USARTDIV设置为1(见表131)。但请注意,所有其他APB1外围设备的时钟速率也会发生变化。
正确编程USART波特率的最简单方法是通过STM32L1xx standard peripheral library。此外,要确定正确的外围时钟设置(及更多),并生成初始化代码,您可以使用STM的MicroXplorer工具。

关于c - USART达到4MBps!怎么样? STM32L151xx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20490419/

10-09 22:13