如何将USART波特率提高到2Mbps,3Mbps或4Mbps。我正在使用STM32L151RCT6A,我能够运行到921600.我已设置PLL 32MHz的时钟。在数据表上给出了,它表明它是可能的,有没有人做过这个?
答案 0 :(得分:2)
数据表仅概述了具体部件及其外围设备和电气特性。有关如何使用设备的信息,您需要Reference Manual。这给出了波特率的以下等式:
Tx / Rx波特率= CK_APB1 /(8 x(2 - OVER8)x USARTDIV)
其中USARTDIV是在USART_BRR寄存器上编码的无符号定点数。
USART位于APB1总线上,参考手册中的图12是时钟树,它显示了APB1时钟是如何从PLL时钟得到的。最大APB1时钟为32MHz。更高的速度需要OVER8 = 1,给出:
波特= 32X10 6 /(USARTDIV x 8)。
所以USARTDIV = 32X10 6 /(波特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工具。