Other Parts Discussed in Thread: BQ79616
Hi,
I am writing because of a strange behavior in the BQ79600.
I'm trying to use the INH pin functionality to reverse wake up the PMIC on a fault event from a daisy chain device.
In the chain we have the MCU connected to the BQ79600 via SPI, then a BQ79631, and lastly a BQ79616. The chain is then closed in a ring architecture.
I start the application by configuring the devices to:
- 1 hr long communication timeout
- HB_EN = 1 on SLEEP
- FTONE_EN = 1 on SLEEP
- INH_DIS = 0 (BQ79600)
- NFAULT_EN = 1 (BQ79600)
After starting the application, I reset all fault conditions and I get:
- BQ79600 NFAULT is high
- BQ79600 INH is low
With this condition, I perform the following steps to put the devices in SLEEP:
- STACK Write 0x77 to FAULT_MSK2 -> to mask all unwanted faults
- send GOTO_SLEEP to the last device (BQ79616)
- send GOTO_SLEEP to the second device (BQ79631)
- Set TONE_RX_EN = 1 (BQ79600)
- Write 0xEF to FAULT_MSK (BQ79600)
- Write 0x20 to DIAG_CTRL (BQ79600)
- Write 0xFF to FAULT_RST (BQ79600)
- Send GOTO_SLEEP to the base device (BQ79600)
After the last step, I always get the INH pin high, signifying the presence of a fault.
I wake up the BQ79600 with a SLEEP2ACTIVE ping and then I issue a SEND_SLPTOACT command to wake up the other devices.
Reading the fault registers on the BQ79600 I get the fault HB_FAIL, even though the HB tone was present with a 400ms period even before sending the BQ79600 to SLEEP.
Another thing I noted is that if I don't mask the HB_FAIL fault I get this fault even in ACTIVE mode and I'm not able to clear it by writing the RST_HB in the FAULT_RST register.
Can you please give some help on the devices and the INH pin functionality?