Over recent months we have started to adopt the NXP (formerly Freescale) Kinetis processors for most of our new designs. While developing the software for an embedded system using the MKE06Z128 we wanted to use the ARM SysTick timer. According to the KE06 Reference Manual (MKE06P80M48SF0RM Rev 3), the CLKSOURCE field in the SysTick Control and Status register selects either the core clock (when CLKSOURCE = 1) or a divide-by-16 of the core clock (when CLKSOURCE = 0). This feature is in common with a number of other Kinetis processors we have used. However, during testing, it became clear that with CLKSOURCE = 0, a divide-by-8 of the core clock is selected. NXP have confirmed this and at some point either the Reference Manual or the silicon will be updated.

It's worth noting that the NXP CMSIS SysTick_Config() function always sets CLKSOURCE to 1, so much code may never have tried CLKSOURCE=0, possibly explaining why this discrepancy has not previously been reported.

Categories: Development