ZHCSJM7 April 2019 BQ79606A-Q1
PRODUCTION DATA.
Similar to the communication bus tones, the FAULT bus uses two tones, a heartbeat tone and a fault detect tone, to communicate information. The tones are made up of bit-pair couplets (complementary bits, similar to the daisy chain communication) transmitted at a fixed frequency. Heartbeat couplets are logic '1', while fault detect couplets are logic '0'. All tones are transmitted at tFLTTONE. Heartbeat tones are detected once nFLTHBDET heartbeat couplets are received. Similarly, a fault detected tone is detected once nFLTTONEDET fault detect couplets are received. See Figure 30 for a graphical representation of the COM* tones.
The daisy-chain transmits a heartbeat tone from north to south on the FAULT* interface. The heartbeat tone is sent out every tWAITHB. This is to monitor the integrity of the fault bus. The devices continuously monitors for the heartbeat of the device above. If a heartbeat pulse is not received for tHBTO, TONE_FAULT[HB_FAIL] would get set. If it is unmasked and generation of fault tone transmit is enabled (COMM_CTRL[FAULT_HB_EN] bit is enabled), a FAULT tone is sent down the FAULT* interface. The timing allows for one missed heartbeat pulse due to noise. Additionally, during unmasked fault conditions and the heartbeats are enabled, the heartbeat is not generated. The fault must be masked, or cleared, to resume heartbeat generation given the heartbeat is enabled. See the table below for more details.
The device configured as the top of the stack must be set by the user in such a way that it does NOT monitor its FAULTP interface to avoid sending false heartbeat errors. If a heartbeat is received more often than expected (time between heartbeats is less than tHBFAST), the TONE_FAULT[HB_FAST] bit is set to indicate a possible error condition. This error indicates a problem with the FAULT bus. Either a device is damaged, or noise is causing a false receipt of the heartbeat tone. The heart beat counter is a free running counter, it is possible that when the TONE_FAULT[HB_FAIL] is detected, the TONE_FAULT[HB_FAST] can also be set. For that reason, it is recommended to read both HB_FAST and HB_FAIL bit at the same time and every time the TONE_FAULT[HB_FAIL] is detected, the TONE_FAULT[HB_FAST] should be ignored. Note that, if the FAULT line is held high or low for more than 20us (non zero differential value), this can be seen as a heart beat on the south device.
In case an unmasked fault is detected, the device sends a fault tone down the FAULT* interface and stops sending any heartbeat tones until the fault is reset or cleared. As the lower devices receive the fault detected tone, the TONE_FAULT[FF_REC] bit is set and the fault tone is propagated down the stack until ultimately received by the base device, which notifies the host via the NFAULT output. Once the host receives the interrupt, it must read the stack to find the faulted device. Fault detect tones are sent out every tFLTRETRY until the fault is reset and cleared. During SHUTDOWN mode, the FAULT* interface is turned off and does NOT propagate fault detected tones. FAULT tones transmit are enabled/disabled using the COMM_CTRL[FAULT_TONE_EN] bit.
Condition | Unmasked Fault Tone Enabled | Heartbeat Enabled | Fault Generated | Heartbeat Generated |
---|---|---|---|---|
Fault | 1 | 1 | Yes | No |
No Fault | 1 | 1 | No | Yes |
Fault | 0 | 1 | No | Yes |
No Fault | 0 | 1 | No | Yes |
Fault | 1 | 0 | Yes | No |
No Fault | 1 | 0 | No | No |
Fault | 0 | 0 | No | No |
No Fault | 0 | 0 | No | No |