我的电压调节器控制寄存器有问题。我无法成功配置外部 BJT。
如果Voltage Regulator Control Register设置为0x82,则不能成功设置Voltage Regulator Control Register,Voltage Regulator Control Register的值变为0x83。是什么原因?
附上
电路图。
代码:
sta
tic void vidMCUSetInitCommon(void)
{
if (ST_strMCU_Config != NULL_PTR) {
/* 禁用时钟配置寄存器的保护 */
CPMUPROT = MCU_CLEAR_PROTECTION_REG;
/* 启用 PLL 以允许写入分频器寄存器 */
CPMUCLKS = ST_strMCU_Config->MCU_u8ClckSlctRegValue;
while (CPMUCLKS != ST_strMCU_Config->MCU_u8ClckSlctRegValue)
{
/* 等待 CPMUCLKS 寄存器写入成功 */
}
/* 设置后分频器寄存器 */
CPMUPOSTDIV = ST_strMCU_Config->MCU_u8PostDivRegValue;
/* 每当将 PLL 参考时钟 (REFCLK) 频率更改为更高的值
时,建议写入 CPMUSYNR = 0x00 以保持在
MCU 指定的最大频率范围内 */
/* 设置倍频寄存器 */
CPMUSYNR = 0x00;
/* 设置 PLL 频率调制 */
CPMUPLL = ST_strMCU_Config->MCU_u8PllCtrlRegValue;
/* 设置 PLL 参考时钟 */
CPMUREFDIV = ST_strMCU_Config->MCU_u8RefDivRegValue;
/* 设置振荡器寄存器 */
CPMUOSC = ST_strMCU_Config->MCU_u8OscRegValue;
/* 设置乘数寄存器 */
CPMUSYNR = ST_strMCU_Config->MCU_u8SynthRegValue;
/* 启用 5v 稳压器 */
//CPMUVREGCTL = CPMUVREGCTL_VREG5VEN_MASK;
#if 1
CPMUVREGCTL = CPMUVREGCTL_VREG5VEN_MASK | CPMUVREGCTL_EXTXON_MASK;/* 0x82:使用外部 BJT */
#else
CPMUVREGCTL = CPMUVREGCTL_VREG5VEN_MASK | CPMUVREGCTL_INTXON_MASK;/* 0x81 : 使用内部功率晶体管 */
#endif
/* 清除所有中断标志 */
CPMUIFLG = MCU_CLEAR_INTERRUPT_FLAGS;
while (TRUE != (boolean) CPMUIFLG_LOCK)
{
/* 等到 PLL 在
目标频率的期望 * 容差范围内 */
}
/* 启用高温检测 */
CPMUHTCTL = ST_strMCU_Config->MCU_u8HighTempRegValue;
/* 启用时钟设置更改保护 */
CPMUPROT = MCU_ENABLE_PROTECTION_REG;
}
}