Part Number: TMS320F28379D
Other Parts Discussed in Thread: UNIFLASH
Hi,
I had a chip TMS320F28379D with blank flash. I succesfully programmed it with my program:
int main(void)
{
EALLOW;
Flash0EccRegs.ECC_ENABLE.bit.ENABLE = 0;
EDIS;
EALLOW;
*(Uint32 *)0xD00 = 0x0B5A;
EDIS;
InitSysPll(XTAL_OSC,IMULT_40,FMULT_0,PLLCLK_BY_2);
[...]
As you see InitSysPll has been called with XTAL_OSC but this clock signal is not provided.
I cannot erase nor program flash using CCS and UniFlash. I even cannot check if the chip is blank.
Uniflash signals following errors:
[2.11.2021, 08:05:21] [INFO] C28xx_CPU1: Executing Blank Check... [2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Error occurred during flash operation: Timed out waiting for target to halt while executing wr_pll.alg [2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Error writing the PLL values (Flash algorithm timed out). Operation cancelled. [2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Perform a debugger reset and execute the Boot-ROM code (click on the RESUME button in CCS debug window) before erasing/loading the Flash. If that does not help to perform a successful Flash erase/load, check the Reset cause (RESC) register, NMI shadow flag (NMISHDFLG) register and the Boot-ROM status register for further debug. [2.11.2021, 08:05:44] [ERROR] C28xx_CPU1: Flash Programmer: Error initializing device.
How to recover the chip?
Kind regards,
Piotr Romaniuk
PS
I can connect via JTAG to the chip CCS without programming flash and then check registers, setup breakpoints and make step execution.
In debuger I tried to change oscillator source (to INT2_OSC). I setup breakpoint before InitSysPll and then modified register that holds this argument. Unfortunatelly PLL was never locked and program stuck at:
ClkCfgRegs.SYSPLLMULT.all = ((fmult << 8U) | imult);
//
// Wait for the SYSPLL lock counter
//
while(ClkCfgRegs.SYSPLLSTS.bit.LOCKS != 1) <<<<< stuck here
{
//
// Uncomment to service the watchdog
//
// ServiceDog();
}
}
}
