您好!
此问题是指与低功耗模式相关的安全诊断。
在 TMS570LS1224上实现低功耗模式期间 、我发现(使用 QJ Wang 帮助)对于某些配置、我无法切换到低功耗模式(QJ Wang 注意 到 SYS_STARTUP 源文件中的 PBIST 可能存在问题。 看起来 MCU 切换到低功耗模式、无法唤醒... 当他注释掉大部分安全检查代码时、低功耗模式工作正常。
现在我进一步研究、结果我知道、如果我想使用低功耗模式功能、应该禁用一些安全功能。 在下图中,您可以看到我的工作配置(使用此配置,我可以成功唤醒)。 如果我检查、例如 MIBSPI1或 HET 低功耗模式将崩溃(无法唤醒)。 原因是什么? 是否可以添加这些安全检查并在低功耗模式下工作?
/*唤醒中断:RTI 比较0 */ vimREG->WAKEMASKCLR0 = 0xFFFFFFFF; vimREG->WAKEMASKCLR1 = 0xFFFFFFFF; vimREG->WAKEMASKCLR2 = 0xFFFFFFFF; vimREG->WAKEMASKSET0 =(1U <<2U)/* RTI CAP0 */ |(1U <<23U)/* GPIO 低*/ |(1U <<16U);/* CAN1 High */
/*闪存*/ flashWREG->FPAC2 = 0x7; flashWREG->FMAC = 0x6; flashWREG->FBAC = 0x70F; flashWREG->FMAC = 0x0; flashWREG->FBAC = 0x70F; /*设置闪存组电源模式*/ flashWREG->FBFALBACK = 0x000000000000 |(UINT32)((UINT32) SYS_SLEEP << 14U)//组7 */ |(UINT32)((UINT32) SYS_SLEEP << 0U);//组0 */ /*闪存电荷泵降级功率模式*/ flashWREG->FPAC1 &=(1UL <<0); //进入打盹模式 /*重置 RTI 计数器0 */ rtiStopCounter (rtiCOUNTER_BLOCK0); rtiResetCounter (rtiCOUNTER_BLOCK0); /*使用 OSCIN 的时钟 RTI */ systemREG1->RCLKSRC = 0x0; /*唤醒时间设置*/ rtiREG1->CMP[0U].Compx = 30000000U; rtiREG1->CMP[0U].UCPx = 30000000U; rtiREG1->INTFLAG = 0x0007000FU; rtiREG1->CLEARINTENA= 0x00070F0FU; rtiREG1->SETINTENA = rtiNOTIFICATION_COMPARE0; /*起始计数器0 */ rtiStartCounter (rtiCOUNTER_BLOCK0); /**-为正常运行、断电模式和唤醒后设置 GCLK、HCLK 和 VCLK 时钟源*/ systemREG1->GHVSRC =(UINT32)((UINT32) SYS_OSC << 24U) |(UINT32)((UINT32) SYS_OSC << 16U) |(UINT32)((UINT32) SYS_PLL1 << 0U); systemREG1->CSDISSET = 0xFE; systemREG1->CDDISSET = 0xFFBF; asm (" NOP"); asm (" NOP"); asm (" NOP"); asm (" WFI"); asm (" NOP"); asm (" NOP"); asm (" NOP"); asm (" NOP");
在我的开机自检唤醒代码下面:
systemREG1->CSDISCLR = 0x31; /*将闪存组/泵回退模式重新配置为"有效"*/ flashWREG->FBFALBACK = 0x000000000000 |(UINT32)((UINT32) SYS_ACTIVE << 14U)//组7 */ |(UINT32)((UINT32) SYS_ACTIVE << 0U);//组0 */ mapClocks();
