Hi @guoweisun
I disabled the FCCU function before disabling the watchdog. SBC still behaves the same.
The sequence is updated as following
1. writing the GOTO_INITFS bit in the FS_SAFE_IOs register
status |= FS8x_ReadRegister(drvData, true, FS8X_FS_SAFE_IOS_ADDR, &rxData);
/* Go to INIT_FS and disable the watchdog for programming purposes*/
uint16_t gotoIntFS = rxData.readData | 0x4;
status |= FS8x_WriteRegister(drvData, true, FS8X_FS_SAFE_IOS_ADDR, gotoIntFS);
2. Disable the FCCU function
/* Disable the FCCU for programming purpose*/
status |= FS8x_ReadRegister(drvData, true, FS8X_FS_I_SAFE_INPUTS_ADDR, &rxData);
uint16_t disableFCCU =rxData.readData & 0x3FFF;
status |= FS8x_WriteRegister(drvData, true, FS8X_FS_I_SAFE_INPUTS_ADDR, disableFCCU);
3. Disabling the Watchdog refresher by writing 000 to FS_WD_WINDOW register
/* Disable the watchdog before leaving the debug mode */
uint16_t disableWatchdog = FS8X_FS_WD_WINDOW_DISABLE | FS8X_FS_WDW_DC_50 | FS8X_FS_WDW_RECOVERY_DISABLE;
status |= FS8x_WriteRegister(drvData, true, FS8X_FS_WD_WINDOW_ADDR, disableWatchdog);
4. Stop the watchdog periodic timer channel. MCU should stop sending watchdog refresher right after
Pit_Ip_StopChannel(PIT_INST_0, CH_0);
Btw, I noticed INIT Phase has a 256 ms open window to receive a watchdog refresher. do I need to send another good watchdog refresher after the watchdog is disabled to exit the INIT Phase?
Thanks,
Connor