SYSCLK 时钟与 UART 速度的关系
比如在STM32G070中当 SYSCLK 时钟以 64MHZ 运行时,PC 的 UART 速度不可能达到 1152008MHZ 外部晶体。选择了 HSE 并选择了 PLLCLK。64MHZ / 115200 / 16 = 34.7222假设 CPU 选择 34 作为除数,则波特率为 117647.1误差2%,太高了但是设置为 59MHz,就能够在 921,600 处成功通信59MHZ / 921600 / 16 = 4.0012 (假设除数 = 4,则 99.9702% 准确率)59MHZ / 115200 / 16 = 32.009 (假设除数 = 32,则 99.9702% 准确率)
https://community.st.com/t5/image/serverpage/image-id/30013i7D5304AC9CE0A6E2/image-size/large?v=v2&px=999
当时钟频率不能整除计算出的分频值时,就会产生误差。 STM32G0 的 UART 外设时钟通常由系统时钟(SYSCLK)或其分频后的时钟(如 APB1 或 APB2 时钟)提供 在 STM32G0 中,UART1 和 UART2 的时钟通常来自 APB1 时钟,而 UART3(如果存在)可能来自 APB2 时钟(具体取决于芯片型号) 使用 STM32CubeMX 时,可以直观地查看时钟树和 UART 时钟频率 如果 SYSCLK 为 64 MHz,APB1 的时钟频率可能是 64 MHz(不分频)或 32 MHz(二分频) APB1 和 APB2 的时钟频率可以是 SYSCLK 的 1 倍、2 倍或其他分频值(取决于时钟配置) 在 STM32G0 系列微控制器中,SYSCLK(系统时钟)与 UART(通用异步收发传输器)速度之间存在直接关系,理解这种关系对于正确配置 UART 通信至关重要 USARTDIV 是一个 12 位的值,由整数部分和小数部分组成 较高的 UART 时钟频率可以提高波特率的精度,因为 USARTDIV 的小数部分可以更精确地表示 波特率误差可能导致通信错误,尤其是在高速通信或长距离通信中。通常建议波特率误差小于 2% 确保 SYSCLK 和 APB1/APB2 的时钟配置正确,可通过 STM32CubeMX 或手动配置时钟树。
页:
[1]