What are the steps to dynamically update the PLL?
Normally, the following following steps are recommended to dynamically update the PLL:
For PLL2 or PLL3:
- Disable the PLL by setting the PLL*_En bit LOW.
- Reprogram the P, Q, and PLL*_LF values.
- Enable the PLL by setting the PLL*_En bit HIGH.
PLL1 is different from PLL2 and PLL3. It has a frequency table which is controlled by the S2, (S1, S0) pins. The SCLK/S1 and SDAT/S0 pins are latched inputs and depending on how they are held at power up, they will determine which table entries are accessible during operation. Normally, there are pull-ups on the I2C data and clock lines. With pull-ups on the SCLK/S1 and SDAT/S0 pins, during operation, a user can access the  and  table entries by toggling the S2 pin. When switching between table entries with the S2 pin, the clock outputs will slew to the new frequency without glitching when the output divider values are only changed, not the P and Q divider values.
For example, assume the user is using PLL1 table entry . Then, toggling S2 HIGH will access .
- Because  is in current use, the user will edit the PLL values at address 55H-57H (Table entry for ).
- Once the address 55H-57H is configured, toggle the S2 pin HIGH to access the  entry and the new frequency.
- If another frequency change is required, change the PLL values at address 49H-4BH (Table entry for ).
- Once the address 49H-4BH is configured, toggle the S2 pin LOW to access the  entry and the new frequency.