When design a project, sometimes CCM_CLKO1 needs to output different clocks to meet customer needs. This customer does not need to buy a separate crystal, which can reduce costs。The document describe how to make CCM_CLKO1 output different clock on I.MXRT1050.
According to selection of the clock to be generated on CCM_CLKO1(CLKO1_SEL) and setting the divider of CCM_CLKO1(CLKO1_DIV) in I.MXRT1050reference manual.
CCM_CLKO1 can output different clock.
If CCM_CLKO1 output different clock via SYS PLL clock. We can get the different clock for the application.
CLKO1_DIV | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Freq(MHz) | 264 | 132 | 88 | 66 | 52.8 | 44 | 37.714 | 33 |
For example we want to get 88Mhz output via SYS PLL clock. We can follow the steps as the below(led_blinky project in SDK ):
1. PINMUX GPIO_SD_B0_04 as CCM_CLKO1 signal.
IOMUXC_SetPinConfig(
IOMUXC_GPIO_SD_B0_04_CCM_CLKO1,
0x10B0u;
2.Enable CCM_CLKO1 signal.
CCM->CCOSR |= CCM_CCOSR_CLKO1_EN_MASK;
3.Set CLKO1_DIV to get 88MHZ the clock for the application.
CCM->CCOSR = (CCM->CCOSR & (~CCM_CCOSR_CLKO1_DIV_MASK)) | CCM_CCOSR_CLKO1_DIV(2); CCM->CCOSR = (CCM->CCOSR & (~CCM_CCOSR_CLKO1_SEL_MASK)) | CCM_CCOSR_CLKO1_SEL(1);
Note: In principle, it is not recommended to output CLOCK in CCM_CLKO1, if necessary, Please connect an 8-10pf capacitor to GPIO_SD_B0_04, and connect a 22 ohm resistor in series to prevent interference.