本帖最后由 FSL_TICS_A 于 2014-10-21 15:23 编辑
KE02芯片OpenSDA调试时IRC频率问题
继上次与大家分享《 使用CodeWarrior10.5软件的PE工具trim芯片内部慢速时钟》之后,发现了一个很奇怪的问题:如果未修改trim配置,OpenSDA调试时也会自动为KE02芯片ICS_C3寄存器的SCTRIM位写入0x80这个固定值(CW10.6、Keil510均如此)。这直接导致了: OpenSDA调试时的IRC(内部慢速时钟)频率与非调试时的IRC频率不同。 如果大家使用OpenSDA调试KE02芯片且用到了IRC,为避免这种情况影响调试程序,建议大家将芯片IRC (用出厂SCTRIM、SCFTRIM值)trim到31.25KHz。
希望此经验对大家有所帮助,不足之处欢迎指正,同时也欢迎大家在论坛里讨论这个问题。
通过参考手册MKE02Z64M20SF0RM的“Figure 20-1. Internal clocksource (ICS) block diagram”(图1)可以看到SCFTRIM、SCTRIM位的值会影响IRC频率,从其所在寄存器ICS_C3、ICS_C4说明(图2)还可以看出非debug时SCTRIM、SCFTRIM的值将会自动从factoryprogrammed location处装载出厂默认值(这给了我们在非debug时以通过读ICS_C3、ICS_C4寄存器获得出厂SCFTRIM、SCTRIM值的可能)。更多trim信息可以在参考手册“20.4.5Internal reference clock”(图3)处看到。 从数据手册MKE02P64M20SF0的“Table 10.OSC and ICS specifications”中可知这款芯片出厂IRC频率(fint_t)在Typical1情况下被trim到了31.25KHz。由于每块芯片的IRC(内部慢速时钟)特性都不同,所以虽然出厂IRC频率都为31.25KHz,但是每块芯片此时对应的SCTRIM、SCFTRIM值均不同(表1)。这也就是OpenSDA调试时的IRC频率与非调试时的IRC频率不同的原因(出厂SCTRIM值不一定是0x80)。
图1
图2
图3
表1 非调试时、各编译环境OpenSDA调试时ICS_C3寄存器值
附件为文档形式的<KE02芯片OpenSDA调试时IRC频率问题.pdf>
KE02芯片OpenSDA调试时IRC频率问题.pdf
(380.52 KB)
PS:本帖可从 飞思卡尔MCU论坛 置顶帖 飞思卡尔Kinetis资料大本营 的 飞思卡尔论坛支持小组【经验分享】总汇 链接进入。
|