主题中讨论的其他器件: UNIFLASH
您好!
我有一个带空白闪存的 TMS320F28379D 芯片。 我使用程序成功地对其进行了编程:
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);
[...]
如您所见、InitSysPll 已通过 XTAL_OSC 调用、但未提供该时钟信号。
我无法使用 CCS 和 UniFlash 擦除闪存或对闪存进行编程。 我甚至无法检查芯片是否为空白。
Uniflash 发出以下错误信号:
[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.
如何恢复芯片?
此致、
Piotr Romaniuk
电源
我可以通过 JTAG 连接到芯片 CCS、而无需对闪存进行编程、然后检查寄存器、设置断点并执行步进。
在调试器中、我尝试将振荡器源(更改为 INT2_OSC)。 我在 InitSysPll 之前设置断点、然后修改保存此参数的寄存器。 不幸的是、PLL 从未锁定、程序卡在:
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();
}
}
}
