SPRZ412N December 2013 – May 2024 TMS320F28374D , TMS320F28375D , TMS320F28376D , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28378D , TMS320F28379D , TMS320F28379D-Q1
Low-Power Modes: Power Down Flash or Maintain Minimum Device Activity
0, A, B, C
The device has an intentional current path from VDD3VFL (flash supply) to VDD. Since the HALT, STANDBY, IDLE, or other low-activity device conditions can have low current demand on VDD, this VDD3VFL current can cause VDD to rise above the recommended operating voltage.
There will be zero current load to the external system VDD regulator while in this condition. This is not an issue for most regulators; however, some system voltage regulators require a minimum load for proper operation.
Workaround 1: Power down the flash before entering HALT, STANDBY, IDLE, or other low-activity device conditions. This will disable the internal current path. This workaround must be executed from RAM.
// CPU-1
EALLOW;
// seize the pump semaphore
while (IpcRegs.PUMPREQUEST.bit.SEM != 0x2)
{
IpcRegs.PUMPREQUEST.all = IPC_PUMP_KEY | 0x2;
}
Flash0CtrlRegs.FBFALLBACK.bit.BNKPWR0 = 0;
asm(" RPT #8 || NOP");
// power down pump
Flash0CtrlRegs.FPAC1.bit.PMPPWR = 0;
asm(" RPT #8 || NOP");
// release pump semaphore
IpcRegs.PUMPREQUEST.all = IPC_PUMP_KEY | 0x0;
EDIS;
// enter low power mode
asm(" IDLE");
// CPU-2
EALLOW;
// seize the pump semaphore
while (IpcRegs.PUMPREQUEST.bit.SEM != 0x1)
{
IpcRegs.PUMPREQUEST.all = IPC_PUMP_KEY | 0x1;
}
Flash0CtrlRegs.FBFALLBACK.bit.BNKPWR0 = 0;
asm(" RPT #8 || NOP");
// power down pump
Flash0CtrlRegs.FPAC1.bit.PMPPWR = 0;
asm(" RPT #8 || NOP");
// release pump semaphore
IpcRegs.PUMPREQUEST.all = IPC_PUMP_KEY | 0x0;
EDIS;
// enter low power mode
asm(" IDLE");
Workaround 2: Keep SYSCLK at a minimum of 100 MHz during STANDBY or IDLE. This activity will be sufficient to consume the internal current.
Workaround 3: An external 82-Ω resistor can be added to the board between VDD and VSS.