LSEDRV 寄存器会影响低电压下的 LSE 精度

2019-07-20 11:55发布

近期做一个自用设备用到了 STM32L4 的 LSE 做计时。

晶振用了某好买的 EPSON FC-135 32.768KHz 12.5pF ±20ppm。
用 3.3V 外接电源调试时一切正常,室温下计时误差在标称的 20ppm 以内。
之后换用 3.0V 电池供电,发现误差奇大(>1000ppm)。

印象中并没有“单片机电源电压会显著影响晶振频率”这样的事情,于是追加试验用 3.6V 的电池,计时精度正常。这时候意识到大概是掉了 LSE 驱动能力的坑了。

赶紧去找 AN2867 文档。
g_mcrit.png
按照晶振的手册计算出 g_mcrit 大概是 2.2μA/V 左右,对应 STM32L4 系列应该要用“High driving capability”了。
LSE_cap.png
检查了一下自己的程序发现没有动过 LSEDRV,默认的“Low driving capability”。
添加
[mw_shl_code=c,false]LL_RCC_LSE_SetDriveCapability(LL_RCC_LSEDRIVE_HIGH);[/mw_shl_code]
测试 3.0V 电池供电时误差正常,室温和冰箱测试都在 20ppm 以内。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。