[以太网/USB/其他总线] SAMD20 TC 定时器 PWM 频率稳定方案

[复制链接]
1053|4
 楼主| 热爱浪漫 发表于 2025-7-18 14:59 | 显示全部楼层 |阅读模式
SAMD20 的 PWM 频率随温度漂移?切换到外部晶振校准 DFLL 后稳定性提升明显。以下是配置代码:
// 使用32.768kHz外部晶振校准DFLL(SAMD20)
void SystemClock_Config(void) {
    // 启用外部32.768kHz晶振
    SYSCTRL->XOSC32K.reg = SYSCTRL_XOSC32K_ENABLE |
                          SYSCTRL_XOSC32K_XTALEN |
                          SYSCTRL_XOSC32K_EN32K;
    while(!SYSCTRL->PCLKSR.bit.XOSC32KRDY);
   
    // 配置DFLL48M使用外部参考
    SYSCTRL->DFLLCTRL.reg = 0; // 禁用DFLL进行配置
    while(SYSCTRL->PCLKSR.bit.DFLLRDY);
   
    SYSCTRL->DFLLMUL.reg = SYSCTRL_DFLLMUL_CSTEP(31) |
                          SYSCTRL_DFLLMUL_FSTEP(511) |
                          SYSCTRL_DFLLMUL_MUL(1464); // 48MHz = 32.768kHz × 1464
   
    SYSCTRL->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_ENABLE |
                          SYSCTRL_DFLLCTRL_USBCRM |
                          SYSCTRL_DFLLCTRL_MODE |
                          SYSCTRL_DFLLCTRL_WAITLOCK;
    while(!SYSCTRL->PCLKSR.bit.DFLLRDY);
}
幸福小强 发表于 2025-7-22 17:53 | 显示全部楼层
内部的会受到芯片自身温度影响,同时没有外部的更加精确,因为外部的体积大,做的时候更容易。
mintspring 发表于 2025-7-28 09:41 | 显示全部楼层
一定要等到稳定了再进一步操作。
灵犀幻影 发表于 2025-7-29 21:52 | 显示全部楼层
确实,使用外部晶振校准DFLL可以显著提高PWM频率的稳定性。你的配置代码看起来是正确的,确保了32.768kHz的外部晶振被正确启用和配置。
灰色与青 发表于 2025-9-22 17:15 | 显示全部楼层
SAMD20 的 TC 定时器 PWM 频率稳定方案:使用外部高精度晶体(如 32.768kHz)作为时钟源,配置 GCLK 将其分频后供给 TC 模块;启用 TC 的自动重加载模式,避免手动更新周期值;校准 TC 的比较匹配寄存器,减少频率偏差;确保电源稳定,降低电压波动影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

133

帖子

0

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