ZHCZ028E October 2022 – July 2025 TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137
系统:多次连续写入 CLKSRCCTL1 可能会导致系统挂起
0、A、B、C
在 写入 CLKSRCCTL1 寄存器时,在写入操作之间多次未延迟,则系统可能会发生挂起的情况,并且只能通过外部 XRSn 复位或 Watchdog 复位才能恢复。在 SYSCLK 与 OSCCLKSRCSEL 所选时钟之间的时钟比有问题时,就会出现这种情况,然而,并非每次都会出现这个问题。
如果在使用调试器时遇到此问题,那么在点击暂停后,程序计数器将位于 Boot ROM 复位向量处。
实施此权变措施,可避免由 SYSCLK 与 OSCCLK 时钟比引起的这种情况。
每次写入 CLKSRCCTL1 寄存器后,使用 NOP 指令添加 300 个 SYSCLK 周期的软件延迟。
示例:
ClkCfgRegs.CLKSRCCTL1.bit.INTOSC2OFF=0; // Turn on INTOSC2
asm(" RPT #250 || NOP"); // Delay of 250 SYSCLK Cycles
asm(" RPT #50 || NOP"); // Delay of 50 SYSCLK Cycles
ClkCfgRegs.CLKSRCCTL1.bit.OSCCLKSRCSEL = 0; // Clk Src = INTOSC2
asm(" RPT #250 || NOP"); // Delay of 250 SYSCLK Cycles
asm(" RPT #50 || NOP"); // Delay of 50 SYSCLK Cycles
C2000Ware_3_00_00_00 和更高版本将实施此权变措施。