刚好有个项目用GD32F407系列,用到了RTC和纽扣电池。中间产品测试时,发现界面时钟没有更新,软件工程师调试反馈是LXTAL使能后无法稳定。于是,硬件来分析:
1)示波器查看,确实32768晶振两边都无明显规律波形。
2)查看生产BOM表、查看Datasheet,未发现异常。
因此同样的产品做过多次样机了,所以手上有一些OK的板子,就通过对调器件来分析。
3)对调电容,OK的还是OK,NG的还是NG。
4)对调晶振,OK的还是OK,NG的还是NG。
5)对调MCU,OK的板NG了,NG的板依然NG。
暂且认为高温把OK的MCU搞坏了吧。
重新领取库存全新物料,焊接到NG的板子上,也还是NG。
6)试一下匹配电容,从8.2pF——22pF(标称负载电容式12.5pF),都换过,NG。
————————————————————————————————————
当时正巧试产设备和一批研发样机,都出现了这个问题,于是赶紧反馈给双边供应商,寻求帮助。
————————————————————————————————————
开始自己调软件,发现故障现象莫名其妙:
A)LXTAL稳定失败
B)LXTAL稳定成功,但是RTC不计数
C)LXTAL稳定成功,但是掉电后不走时
D)IR32K稳定失败
E)IR32K稳定成功
再与软件工程师协作下,发现NG的板子烧写他的程序OK了。
不得不怀疑和软件有关,对比代码:
rcu_periph_clock_enable(RCU_PMU);
pmu_backup_write_enable();
上面两句很重要,需要弄在下面句子之前面。
rcu_osci_on(RCU_LXTAL);
if(SUCCESS==rcu_osci_stab_wait(RCU_LXTAL))
OK,LXTAL正常启动,示波器检测有波形,但是还是有些故障。
最后发现,去纽扣电池,掉电再上电,重新烧写程序,一切OK。
其实,本文没有完全解答怎么配置LXTAL才能100%正常。
以上信息,仅供参考阅读。