MSP432™ Clock System speed
Changing the Clock Speed of the MSP432™ is a bit tricky. First you have to unlock the registers, then you can change the DCO speed. You can ajust the clock using the following DCO values.
DCORSEL | min MHz | normal (DCOTUNE = 0) MHz | max MHz |
DCORSEL_0 | 1 | 1.5 | 2 |
DCORSEL_1 | 2 | 3 | 4 |
DCORSEL_2 | 4 | 6 | 8 |
DCORSEL_3 | 8 | 12 | 16 |
DCORSEL_4 | 16 | 24 | 32 |
DCORSEL_5 | 32 | 48 | 64 |
Read more in document SLAU356A (MSP432P4xx Family Technical Reference Manual) version 2015-04 section 5.3.
You can increase or decrease the speed using the DCOTUNE Register to any value between min and max. For the correct values of DCOTUNE consult the document SLAA658 (Multi-Frequency Range and Tunable DCO on MSP432P4xx) version 2015-03. These values can be obtained from the TLV.
TLV->rDCOIR_MAXNEGTUNE_RSEL04; // DCO IR mode: Max Negative Tune for DCORSEL 0 to 4 TLV->rDCOIR_MAXPOSTUNE_RSEL04; // DCO IR mode: Max Positive Tune for DCORSEL 0 to 4 TLV->rDCOIR_MAXNEGTUNE_RSEL5; // DCO IR mode: Max Negative Tune for DCORSEL 5 TLV->rDCOIR_MAXPOSTUNE_RSEL5; // DCO IR mode: Max Positive Tune for DCORSEL 5
The CSKEY register is described as CSACC in the documentation, but in Code Composer Studio the register has still the name CSKEY.
Example change DCO to IR and 48MHz:
CSKEY = 0x695A; // unlock CS registers CSCTL0 = 0; // reset DCO settings CSCTL0 = DCORSEL_5; // select DCO 5 (48MHz) CSCTL1 = SELA__REFOCLK | SELS__DCOCLK | SELM__DCOCLK; // ACLK = REFOCLK, SMCLK = MCLK = DCOCLK CSKEY = 0; // lock CS registers