This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRA829J: PLL Controller Dividers Configuration

Part Number: DRA829J

TRM describes the operation to change the PLL Controllers dividers in “5.4.5.10.3 PLL Controllers Programming - Dividers PLLDIVn and GO Operation” and we followed all the steps described.

These are the steps we followed, lines with parenthesis represent multiple instructions:

(Unlock PLL registers)

(Enable bypass/reset of PLL, PLL Controllers, and HSDIV’s)

-Clear GOSET field of register PLLCMD.

-Set DN_EN field of register PLLDIV1.

-Clear DN_EN field of register PLLDIV2.

-Write a value different from 1 to the RATIO field of register PLLDIV1.

-Write a value different from 1 to the RATIO field of register PLLDIV2.

-Write value 1 to the ALN1 field of register ALNCTL.

-Write value 1 to the ALN field of register ALNCTL.

-Set GOSET field of register PLLCMD.

-Wait until GOSTAT field of register PLLSTAT is equal to value 0.

Note: We think it should be possible to see updated divider values here

(Continue with PLL Configuration)

(Disable bypass/reset of PLL, PLL Controllers, and HSDIV’s)

(Lock PLL registers)

 

In any point of the sequence, there is no update in the PLL Controller dividers value, what we expected to observe.

Furthermore, there is a note in section “5.4.5.6 PLL and PLL Controller Connection” describing “PLLCTRL_POSTDIV is not supported in this family of devices.”

Q1:

Are PLL Controller dividers configurable? If so, is it possible to see the value being updated?

Q2:

Is it possible to configure the field DN_EN of the PLL Controller dividers?

In the register type, DN_EN seems to be a read only register, therefore it is not possible to disable them, even though the TRM suggest it in chapter “Table 5-123. Programming Sequence of PLLCTRL, HSDIV, and PLL”.

  • Hi again,

    I would like to know if there is any updates on this topic.

    Best regards,

    João Simões

  • Joao,

    I will post this entire sequence to the multiple tickets.

    Kevin

     

    1. Unlock PLL registers (not SiCr-related)
    2. If PLL0, configure PLLCTRL block (not SiCr-related)
    3. Enable external bypass (not SiCr-related)
    4. Disable all HSDIV blocks for this PLL
    5. Disable PLL
    6. Reset all HSDIV blocks for this PLL

    -- at this point, the PLL is fully disabled and the reference clock is bypassed to the system

    1. In MAIN domain, select PLL reference source. (not SiCr-related; not implemented – just use HFOSC0)
    2. Configure HSDIV value and clear SYNC_DIS for each HSDIV block associated with the PLL
    3. Configure PLL multiplier (integral and fractional)
    4. Configure PLL reference divider and other internal dividers (POST_DIV1 and POST_DIV2); the POST_DIV1 and POST_DIV2 dividers are applicable only to PLLs with more than 5 HSDIV blocks.
    5. Clear HSDIV Reset for all HSDIV blocks associated with the PLL
    6. Other controls:
    7. INT_BYP_EN = 0
    8. CLK_4PH_EN = 0
    9. DSM_EN = DAC_EN = {0, 1} -- = 0 if integer mode; = 1 if fractional mode
    10. CLK_POSTDIV_EN = 1; poorly named bitfield; this affects both raw and divided output
    11. BYP_ON_LOCKLOSS = {0, 1} – I prefer 1 so that a slip bypasses the reference to the system; (not SiCr-related)
    12. SS_BYPASS_EN = 1
    13. SS_DOWNSPREAD_EN = 1
    14. SS_WAVE_SEL = 0
    15. SS_SPREAD = 1
    16. SS_MOD_DIV = 1
    17. If (PLL has calibration features) && (CAL_CNT != 0) && (DAC_EN = 0) && (DSM_EN == 0) && (FRACDIV =0)
    18. CAL_IN = 0
    19. CAL_BYP = 0
    20. CAL_CNT = {2, 7}
    21. FAST_CAL = 1
    22. CAL_EN = 1
    23. Enable PLL
    24. Wait for PLL lock while ( (LOCK != 1) && (time_for_lock < 750*TREF*REF_DIV) )
    25. If PLL does not lock within timeout window,
    26. log the error
    27. disable the PLL
    28. wait 1us
    29. if the number of retries is less than max allowed retries
    30. jump to step 14
    31. else fail
    32. If Calibration is enabled, wait for 170 * 2^(5 + CAL_CNT {2, 7}) *TREF * REF_DIV.
    33. If (CAL_LOCK != 1) && (CAL_EN = 1)
    34. Disable PLL
    35. Wait 1us
    36. Clear CALEN
    37. Jump to step 14
    38. Enable all HSDIV blocks associated with this PLL
    39. If PLL0, configure PLLCTRL block (not SiCr-related)
    40. Remove external bypass (not SiCr-related)
    41. Flow does not implement spread spectrum (not SiCr-related)
    42. Lock PLL registers

    -- at this point, the PLL is fully enabled