在STM32L476芯片中,串口波特率的计算公式为:
波特率 = FCK / (8 * (2 - OVER8) * (USARTDIV + 1))
其中,FCK是串口时钟频率,OVER8位于USART_CR1寄存器中,用于设置串口采样分频系数,OVER8为0时分频系数为16,OVER8为1时分频系数为8。USARTDIV位于USART_BRR寄存器中,表示分频系数,计算公式为:
USARTDIV = 整数部分 + 小数部分
整数部分的计算公式为:
整数部分 = FCK / (波特率 * 16)
小数部分的计算公式为:
小数部分 = ((整数部分 - 整数部分的取整值) * 16) + 0.5
根据上述公式,计算得到波特率为3Mhz时的USARTDIV为4.5,但STM32L476芯片的USARTDIV寄存器的设置值是整数,不支持小数部分。因此,实际设置的USARTDIV值为4,对应的波特率为2.86MHz。所以,实际测量的波特率与理论值有些差距是正常的,不代表芯片内部出现问题。
在STM32L476芯片中,串口波特率的计算公式为:
波特率 = FCK / (8 * (2 - OVER8) * (USARTDIV + 1))
其中,FCK是串口时钟频率,OVER8位于USART_CR1寄存器中,用于设置串口采样分频系数,OVER8为0时分频系数为16,OVER8为1时分频系数为8。USARTDIV位于USART_BRR寄存器中,表示分频系数,计算公式为:
USARTDIV = 整数部分 + 小数部分
整数部分的计算公式为:
整数部分 = FCK / (波特率 * 16)
小数部分的计算公式为:
小数部分 = ((整数部分 - 整数部分的取整值) * 16) + 0.5
根据上述公式,计算得到波特率为3Mhz时的USARTDIV为4.5,但STM32L476芯片的USARTDIV寄存器的设置值是整数,不支持小数部分。因此,实际设置的USARTDIV值为4,对应的波特率为2.86MHz。所以,实际测量的波特率与理论值有些差距是正常的,不代表芯片内部出现问题。
举报