【原创】KL03不能正常进入低功耗模式的原因及解决办法
0赞KL03系列是Kinetis L系列的第二代产品,相比于第一代的同一级别的KL02,的确是新添了不少特色。包括出厂自带Boot ROM(IAP功能,直接通过串口,I2C或者SPI下载程序),内部集成了全温度范围精度在1%的48M晶振(所以去掉了冗余的FLL和PLL倍频部分,即省电又省成本,使用起来也比较方便),内部集成1.2v的电压基准源并且对功耗方面做了进一步的优化(虽然KL02本身功耗已经很低了)。所以俺还是很看好它的,哈哈~
别的先不提,前面我说到KL03对功耗方面做了进一步的优化,自然刚到手KL03就打算先测测它的功耗啦。但是在调试KL03低功耗的时候,通过触发跟KL02类似的进入低功耗指令时却发现KL03并没有真正的进入低功耗模式,此时功耗虽然比全速运行时的小了不少但是仍然还有几百个uA(正常来讲,进入VLPS模式低功耗时应该保持在1~2uA左右),虽然在此状态下也能正常唤醒,但是这种状态却是让人费解的。找了半天的原因,看手册,对代码,一直也没找出真正问题所在,结果最后在KL03的官方Errata(勘误表)里才找到根本原因,如下图,即在进入低功耗模式前需要先把RTC的中断标志清零才可以,看来是一个芯片的小bug了。
看来自己还是过于激动,疏忽大意了,呵呵,不过既然知道了问题所在那就好办了,只需在程序开始部分把RTC的中断标志清掉即可,当然RTC的TIF标志清零过程还是需要先打开RTC的Clock Gate才行,具体如下图所示。然后我们重新编译整个工程再下载进入,让其进入VLPS低功耗模式下再测一下电流,竟然直接降到1.7uA(实测数据),正常进入低功耗模式,貌似比KL02还真低了不少,顿时有种捶胸顿足的兴奋劲,哈哈。
经历了这么一次小阻碍之后,再次感叹真是“没病不死人啊”,呵呵,一个小小的问题如果找不到症结所在真的会让你如梗在喉啊。好了,卡着的刺终于摘出来了,可以拍拍灰继续向前了,下次再聊,未完待续~