FRDM-KW36包含带有32 kHz晶体振荡器的RTC模块。RTC模块以极低功耗模式运行并为MCU提供32 kHz时钟源。该振荡器包括一组可编程调节的负载电容CLOAD,改变这些负载电容的值可以调整振荡器提供的频率。
此可配置电容的范围为0 pF(禁用电容器组)至30 pF,步长为2 pF。 这些值是通过组合启用的电容器获得的。可用值为2 pF,4 pF,8 pF和16 pF。这四个数值可以任意组合。如果外部电容可用,建议禁用这些内部电容器(将RTC控制寄存器SFR中的SC2P,SC4P,SCS8和SC16位设置为0)。
要调整振荡器提供的频率,必须首先能够测量该频率。最好使用频率计数器测了频率,因为它提供了比示波器更精确的测量。另外还需要KW36通过IO输出振荡器频率。要输出振荡器频率,以任意一个低功耗蓝牙演示应用程序为例,执行以下操作:
调整频率示例
本示例将利用低功耗蓝牙演示应用程序的心率传感器演示(freertos版本),并假定开发人员具有从SDK到IDE导入或打开项目的知识。
|
/* Function to mux PTB3 to RTC_CLKOUT */void BOARD_EnableRtcClkOut (void);
void BOARD_EnableRtcClkOut(void){/* Enable PORTB clock gating */CLOCK_EnableClock(kCLOCK_PortB);/* Mux the RTC_CLKOUT to PTB3 */PORT_SetPinMux(PORTB, 3u, kPORT_MuxAlt7);/* Select the 32kHz reference for RTC_CLKOUT signal */ SIM->SOPT1 |= SIM_SOPT1_OSC32KOUT(1); }
|
#define RTC_OSC_CAP_LOAD_0 0x0U /*!< RTC oscillator, capacitance 0pF */#define RTC_OSC_CAP_LOAD_2 0x2000U /*!< RTC oscillator, capacitance 2pF */#define RTC_OSC_CAP_LOAD_4 0x1000U /*!< RTC oscillator, capacitance 4pF */#define RTC_OSC_CAP_LOAD_6 0x3000U /*!< RTC oscillator, capacitance 6pF */#define RTC_OSC_CAP_LOAD_8 0x800U /*!< RTC oscillator, capacitance 8pF */#define RTC_OSC_CAP_LOAD_10 0x2800U /*!< RTC oscillator, capacitance 10pF */#define RTC_OSC_CAP_LOAD_12 0x1800U /*!< RTC oscillator, capacitance 12pF */#define RTC_OSC_CAP_LOAD_14 0x3800U /*!< RTC oscillator, capacitance 14pF */#define RTC_OSC_CAP_LOAD_16 0x400U /*!< RTC oscillator, capacitance 16pF */#define RTC_OSC_CAP_LOAD_18 0x2400U /*!< RTC oscillator, capacitance 18pF */#define RTC_OSC_CAP_LOAD_20 0x1400U /*!< RTC oscillator, capacitance 20pF */#define RTC_OSC_CAP_LOAD_22 0x3400U /*!< RTC oscillator, capacitance 22pF */#define RTC_OSC_CAP_LOAD_24 0xC00U /*!< RTC oscillator, capacitance 24pF */#define RTC_OSC_CAP_LOAD_26 0x2C00U /*!< RTC oscillator, capacitance 26pF */#define RTC_OSC_CAP_LOAD_28 0x1C00U /*!< RTC oscillator, capacitance 28pF */#define RTC_OSC_CAP_LOAD_30 0x3C00U /*!< RTC oscillator, capacitance 30pF */
#define cPWR_UsePowerDownMode 0#define gLEDSupported_d 0
此时,可以用频率计数器测量PTB3输出的频率,并进行频率调整。每次对电路板进行编程时,都需要执行POR以获得正确的测量值。下表是从FRDM-KW36板rev B获得的,可用作调整频率的参考。 请注意,电容不仅由启用的内部电容组成,还包括封装、焊线、焊垫和 PCB 走线中的寄生电容。因此,尽管下面给出的参考测量值应接近实际值,但您还应该在电路板上进行测量,以确保频率是专门针对您的电路板和布局进行调整的。
启用的电容器 |
CLOAD |
电容定义 |
频率 |
- |
0pF |
RTC_OSC_CAP_LOAD_0 (bank disabled) |
32772.980Hz |
SC2P |
2pF |
RTC_OSC_CAP_LOAD_2 |
32771.330Hz |
SC4P |
4pF |
RTC_OSC_CAP_LOAD_4 |
32770.050Hz |
SC2P, SC4P |
6pF |
RTC_OSC_CAP_LOAD_6 |
32769.122Hz |
SC8P |
8pF |
RTC_OSC_CAP_LOAD_8 |
32768.289Hz |
SC2P, SC8P |
10pF |
RTC_OSC_CAP_LOAD_10 |
32767.701Hz |
SC4P, SC8P |
12pF |
RTC_OSC_CAP_LOAD_12 |
32767.182Hz |
SC2P, SC4P, SC8P |
14pF |
RTC_OSC_CAP_LOAD_14 |
32766.766Hz |
SC16P |
16pF |
RTC_OSC_CAP_LOAD_16 |
32766.338Hz |
SC2P, SC16P |
18pF |
RTC_OSC_CAP_LOAD_18 |
32766.038Hz |
SC4P, SC16P |
20pF |
RTC_OSC_CAP_LOAD_20 |
32765.762Hz |
SC2P, SC4P, SC16P |
22pF |
RTC_OSC_CAP_LOAD_22 |
32765.532Hz |
SC8P, SC16P |
24pF |
RTC_OSC_CAP_LOAD_24 |
32765.297Hz |
SC2P, SC8P, SC16P |
26pF |
RTC_OSC_CAP_LOAD_26 |
32765.117Hz |
SC4P, SC8P, SC16P |
28pF |
RTC_OSC_CAP_LOAD_28 |
32764.940Hz |
SC2P, SC4P, SC8P, SC16P |
30pF |
RTC_OSC_CAP_LOAD_30 |
32764.764Hz |