Dear all,
Would you tell me about SCT registers for CCM_ANALOG_PLL_ARM?
The register about CCM_ANALOG_PLL_ARM has four of the following.
- CCM_ANALOG_PLL_ARM
- CCM_ANALOG_PLL_ARM_SET
- CCM_ANALOG_PLL_ARM_CLR
- CCM_ANALOG_PLL_ARM_TOG
We understand these registers as follows.
- When we set value to DIV_SELECT field, we write value to CCM_ANALOG_PLL_ARM register.
- When we set PLL_SEL bit, we write "1" to CCM_ANALOG_PLL_ARM_SET register.
- When we clear PLL_SEL bit, we write "1" to CCM_ANALOG_PLL_ARM_CLR register.
Is our understanding right?
May I have advice?
Best Regards,
Yuuki
Hello,
Register, named CCM_ANALOG_PLL_ARM (at 0x020C_8000), is used to read / write
the register as whole 32-bit word. The registers, having _SET (at 0x020C_8004), _CLR (at 0x020C_8008),
_TOG (at 0X020C_800C) should be used for bit selective operations.
SET means a write to this address will set bits to 1s in register if the corresponding bit in write data was 1.
CLEAR means a write to this address will clear bits to 0s in register if the corresponding bit in write data was 1.
TOGGLE means write to this address will toggle bits in register if tje corresponding bit in write data was 1
Please look at examples below.
#define bit20 0x00100000
// set bit
( * ( unsigned int *) CCM_ANALOG_PLL_ARM_SET) = bit20 ;
// clear bit
( * ( unsigned int *) CCM_ANALOG_PLL_ARM_CLR) = bit20 ;
// toggle (change) bit
( * ( unsigned int *) CCM_ANALOG_PLL_ARM_TOG) = bit20 ;
Have a great day,
Yuri
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Yuri
Dear Yuri-san,
Thank you for your quick response.
Is it same about DIV_SELECT field?
(Should DIV_SELECT field be written by using an SET register, too?)
I suspect that the SET register cannot execute Set and Clear(set "1" and "0") at the same time.
Best Regards,
Yuuki
Hello, Yuuki-san !
If it is needed to configure only the DIV_SELECT field, without affecting
other bits in the register - we should use the SET and CLR registers.
It would be better to use access to whole register [ just CCM_ANALOG_PLL_ARM
(at 0x020C_8000)] : first read it to temporary store, set DIV_SELECT field, without affecting
other bits and write the (whole) register with new content.
Regards,
Yuri.