[STM32G0] SYSCLK 时钟与 UART 速度的关系

[复制链接]
570|12
 楼主| Treasure101 发表于 2025-5-30 10:00 | 显示全部楼层 |阅读模式
比如在STM32G070中当 SYSCLK 时钟以 64MHZ 运行时,PC 的 UART 速度不可能达到 115200
8MHZ 外部晶体。选择了 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% 准确率)


烟雨蒙蒙520 发表于 2025-5-31 23:04 | 显示全部楼层
当时钟频率不能整除计算出的分频值时,就会产生误差。
远山寻你 发表于 2025-6-9 17:00 | 显示全部楼层
STM32G0 的 UART 外设时钟通常由系统时钟(SYSCLK)或其分频后的时钟(如 APB1 或 APB2 时钟)提供
江河千里 发表于 2025-6-9 18:55 | 显示全部楼层
在 STM32G0 中,UART1 和 UART2 的时钟通常来自 APB1 时钟,而 UART3(如果存在)可能来自 APB2 时钟(具体取决于芯片型号)
冰春彩落下 发表于 2025-6-9 22:19 | 显示全部楼层
使用 STM32CubeMX 时,可以直观地查看时钟树和 UART 时钟频率
别乱了阵脚 发表于 2025-6-9 22:37 | 显示全部楼层
如果 SYSCLK 为 64 MHz,APB1 的时钟频率可能是 64 MHz(不分频)或 32 MHz(二分频)
光辉梦境 发表于 2025-6-9 23:00 | 显示全部楼层
APB1 和 APB2 的时钟频率可以是 SYSCLK 的 1 倍、2 倍或其他分频值(取决于时钟配置)
一秒落纱 发表于 2025-6-10 01:00 | 显示全部楼层
在 STM32G0 系列微控制器中,SYSCLK(系统时钟)与 UART(通用异步收发传输器)速度之间存在直接关系,理解这种关系对于正确配置 UART 通信至关重要
暖了夏天蓝了海 发表于 2025-6-10 06:00 | 显示全部楼层
USARTDIV 是一个 12 位的值,由整数部分和小数部分组成
三生万物 发表于 2025-6-10 09:00 | 显示全部楼层
较高的 UART 时钟频率可以提高波特率的精度,因为 USARTDIV 的小数部分可以更精确地表示
淡漠安然 发表于 2025-6-10 11:00 | 显示全部楼层
波特率误差可能导致通信错误,尤其是在高速通信或长距离通信中。通常建议波特率误差小于 2%
夜阑风雨 发表于 2025-6-10 15:41 | 显示全部楼层
确保 SYSCLK 和 APB1/APB2 的时钟配置正确,可通过 STM32CubeMX 或手动配置时钟树。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

58

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部