We downloaded the OMAPL1x8_C674x_AM18xx_Clocking_Check_noPeriph.xls (boy is that a mouth full) spreadsheet to setup PLL0 and PLL1 for our custom board. Our configuration is below, and we use the 375MHz part.
CLKMODE = OSCIN, OSCIN = 19.2MHz, Voltage = 1.20
PLL0: PREDIV = 1, PLLM = 19, POSTDIV = 1, PLLEN = lock, DIV1 = 1, DIV2 = 2, DIV3 = 4, DIV4 = 4, DIV6 = 1, DIV7 = 8
PLL1: PREDIV = 1, PLLM = 31, POSTDIV = 2, PLLEN = lock, DIV1 = 1, DIV2 = 2, DIV3 = 6
The setting above gave us a "clean" sheet with no violations, so we have been using this. However, we now think we are overclocking ASYNC3. The default ASYNC3_CLKSRC in the spreadsheet is set to PLL1_SYSCLK2. According to the C6748 Tech Manual, the power up default is PLL0_SYSCLK2. When we change the spreadsheet to use PLL0_SYSCLK2, we now get an ASYNC3 violation (182.4MHz vs a max of 150MHz). The C6748 datasheet does indeed have a table (page 91) noting the max frequency for ASYNC3 is 150MHz (at 1.2V).
If you reference page 136 in the Tech Manual, the table shows the ASYNC3 peripherals using PLL1_SYSCLK2 .... WITH THE SMALL NOTE THAT SAYS IT DEFAULTS TO PLL0_SYSCLK2!
To further muddy the waters, we boot from a FLASH chip connected to SPI1, which of course is in the ASYNC3 clock domain. The AISGEN tool allows us to set config registers at boot time to setup: SPI1, PLL0, PLL1, DDR2, PSC, and PINMUX. If we load the above PLL settings into AISGEN, it would appear we are overclocking SPI1 at boot, and there is no way to set the ASYNC3_CLKSRC bit inside the CFGCHIP3 register to force it over to PLL1_SYSCLK2.
1. Do you agree that we are overclocking ASYNC3 with our PLL settings?
2. At 182.4MHz, we are overclocking ASYNC3 by 21.6%. What weird behavior could we see, and did we do any damage to the chip? We use: UART1, SPI1, McBSP2, and TIMER64 (not sure about the TIMER).
3. It appears we can fix the problem by setting ASYNC3_CLKSRC to use PLL1_SYSCLK2. However that doesn't work for boot time. Do we have to load one set of PLL settings into AISGEN(using PLL0_SYSCLK2), and then once our code is running change the PLL settings so we use PLL1_SYSCLK2?
4. Why on God's green Earth is the default in the spreadsheet set to PLL1_SYSCLK2 if the power up default is PLL0_SYSCLK2?
5. Can you make the documentation on page 136 in the tech manual any more confusing?
6. And finally, for the Airplane! fans out there, is there no parking in the red or white zones?
- Dean