扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

STM8AL HSI 校准偏差大解决:LSE 稳定时间延长实操

1小时前
92
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

STM8AL 使用 LSE(外部低速晶振)校准 HSI(内部高速振荡器)时,小批量试产中 3% 产品校准后频率与 16MHz 偏差较大,核心原因是 LSE 起振后未等待足够稳定时间,官方代码默认 60ms 延迟适配不了客户选用的晶振。本文基于 ST 官方 LAT1407 应用笔记,详解问题根源、1 分钟代码修改方案及校准关键原则,适用于 STM8L/STM8AL 系列依赖 HSI+LSE 校准的场景。

1. 核心问题与现象

1.1 应用场景

  • 硬件:STM8AL 芯片,LSE 选用 32.768kHz 外部晶振,HSI 作为系统时钟(目标频率 16MHz);
  • 软件:基于 ST 官方演示代码 STM8L15x_AN3101_FW_V1.1.0 开发,启用 LSE 作为 HSI 校准参考源;
  • 生产情况:小批量试产,约 3% 产品校准后 HSI 频率偏差超标,其余产品正常。

1.2 关键特征

  • 代码验证:客户代码与官方演示代码完全一致,跟踪执行无异常,排除代码移植问题;
  • 核心矛盾:仅部分产品异常,且异常与晶振型号相关,初步锁定 LSE 稳定时序问题。

2. 问题根源:LSE 稳定时间不足

2.1 LSE 的关键特性(参考手册 RM0031)

  • LSERDY 标志位:仅表示 LSE 起振成功,不代表频率稳定;
  • 稳定时间要求:LSE 起振后,需额外等待tSU(LSE)(稳定时间)才能达到稳定频率,不同型号晶振的tSU(LSE)差异极大;
  • 官方代码缺陷:ST 官方代码中 LSE 稳定延迟约 60ms(通过waitforstab=0x3C702循环实现,CPU 频率 16MHz 时,循环一圈 4 条指令,计算得约 61.89ms),该延迟是为官方开发板晶振设计,客户选用的晶振需要更长稳定时间。

2.2 时序不匹配的直接影响

  • 正常逻辑:LSE 稳定后,才能作为精准参考源校准 HSI,确保 HSI 频率偏差在允许范围;
  • 异常逻辑:部分产品的 LSE 未完全稳定就开始校准,参考频率不准,导致 HSI 校准后偏差超标。

3. 解决方案:延长 LSE 稳定延迟

无需修改硬件,仅需调整代码中 LSE 稳定等待的循环计数,确保晶振完全稳定后再启动校准:

3.1 代码修改位置

找到hsi_calibration.c文件中的CL_ConfigForHSI函数,定位 LSE 稳定等待代码:
#ifdef USE_REFERENCE_LSE
uint32_t counter=0, waitforstab=0x3C702; // 官方默认值,对应约60ms
// 启用LSE时钟、等待LSERDY置位等配置...
/* wait for stabilization of LSE clock */
while (counter < waitforstab)
{
  counter++;
}
#endif

3.2 延迟参数调整

waitforstab值修改为对应 90ms 的计数(按 16MHz CPU 频率计算),修改后代码:
#ifdef USE_REFERENCE_LSE
uint32_t counter=0, waitforstab=0x59784; // 对应约90ms(根据实际晶振微调)
// 其余配置不变...
while (counter < waitforstab)
{
  counter++;
}
#endif
  • 计算逻辑:16MHz CPU 每指令周期 62.5ns,循环 1 条指令(counter++)耗时 62.5ns,90ms 需循环次数 = 90ms / 62.5ns = 1.44×10^6,十六进制约为 0x15F90,实际可通过示波器观测 LSE 波形,微调至稳定后再确定最终值;
  • 验证效果:修改后,所有异常产品校准结果均达标,批量生产无偏差超标情况。

3.3 灵活调整技巧

若不确定具体延迟值,可按以下步骤测试:
  1. 先将waitforstab设为 0x80000(对应约 130ms),确保覆盖大多数晶振的稳定时间;
  2. 批量测试无异常后,逐步减小数值,找到最小稳定延迟(兼顾校准效率与稳定性)。

4. 关键注意事项

  1. 晶振选型必查规格书:不同品牌、型号的 32.768kHz 晶振,tSU(LSE)差异显著,需在规格书中确认最小稳定时间;
  2. 延迟时间适配:校准代码的 LSE 稳定延迟需大于晶振的tSU(LSE),避免 “刚好达标”,建议预留 20%~30% 裕度;
  3. 不依赖 LSERDY 标志:LSERDY 仅表示起振,不能作为稳定判断依据,必须额外添加延迟;
  4. 批量生产验证:小批量试产时需覆盖不同批次晶振,确保延迟时间适配所有来料。
STM8AL HSI 校准偏差大的核心是 “LSE 稳定时间不匹配”,官方代码的固定延迟无法适配所有晶振。通过延长 LSE 稳定等待时间(如调整至 90ms),即可彻底解决问题,无需复杂硬件改动。
该问题提醒我们,时序类校准场景中,不能直接复用官方代码的固定参数,需结合实际选用的外设(如晶振)规格书,针对性调整时序等待时间,确保参考源稳定后再执行核心操作。

相关推荐