會以 WD_STAT_WA 寄存器中 TOKEN[3:0] 和 ANSW_CNT[1:0] 狀態(tài)位的組合形式向 MCU 提出問題。ANSW_CNT[1:0] 的默認(rèn)值為 ANSW_CNT[1:0] = 11b,當(dāng)問題得到正確回答時,該值會遞減。當(dāng)問題回答不正確或良好事件結(jié)束時,ANSW_CNT[1:0] 的值會復(fù)位為 ANSW_CNT[1:0] = 11b。
看門狗使用令牌計數(shù)器(圖 7-12 中的 TOKEN_CNT[3:0] 位)和線性反饋移位寄存器 (LFSR) 生成 4 位 TOKEN[3:0]。如圖 7-12 所示,可以使用 BANK1 中 WDT_QA_CFG 寄存器中的 POLY[1:0] 配置 LFSR 架構(gòu)。在典型應(yīng)用中,無需更改 POLY[1:0] 的默認(rèn)值 00b。然而,如果需要不同的 LFSR 架構(gòu),可以配置 POLY[1:0]。圖 7-11 中的示意圖表明看門狗如何生成問題。
在看門狗啟動狀態(tài)期間,LFSR 用初始值 SEED[3:0] 設(shè)置,該值位于 BANK1 的 WDT_QA_CFG 寄存器中。SEED[3:0] 的默認(rèn)值為 0000b。
在良好事件結(jié)束時,令牌計數(shù)器會遞增,由于圖 7-12 中所示的多路復(fù)用器和邏輯組合,token[3:0] 的值發(fā)生變化。
一旦令牌計數(shù)器達(dá)到最大值 1111b,該計數(shù)器會復(fù)位并向 LFSR 提供一個時鐘脈沖。時鐘脈沖將存儲在 LFSR 中的值左移,這會更改 TOKEN[3:0] 的值。在 SEED[3:0] = 0000b 的特殊情況下,LFSR 的位 0 在令牌計數(shù)器首次復(fù)位時遞增。隨后的令牌計數(shù)器復(fù)位提供左移 LFSR 的典型時鐘脈沖。如圖 7-12 中所列,左移時,種子周期的值在 1 到 15 之間循環(huán)。
可以使用 FDBK[1:0](BANK1 中的 WDT_QA_CFG 寄存器)來配置生成 TOKEN[3:0] 的多路復(fù)用器器件。無需更改 FDBK[1:0] 的默認(rèn)值 00b,需要重點(diǎn)注意的是,更改 FDBK[1:0] 也會改變計算參考應(yīng)答所需的邏輯公式。下面列出了不同的參考應(yīng)答邏輯公式:
對于 FDBK[1:0] = 00b:
- 參考應(yīng)答[0] = TOKEN[0] XOR (TOKEN[3] XOR ANSW_CNT[1])
- 參考應(yīng)答[1] = TOKEN[0] XOR (TOKEN[1] XOR TOKEN[2]) XOR ANSW_CNT[1]
- 參考應(yīng)答[2] = TOKEN[0] XOR (TOKEN[3] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[3] = TOKEN[2] XOR (TOKEN[0] XOR TOKEN[3]) XOR ANSW_CNT[1]
- 參考應(yīng)答[4] = TOKEN[1] XOR ANSW_CNT[0]
- 參考應(yīng)答[5] = TOKEN[3] XOR ANSW_CNT[0]
- 參考應(yīng)答[6] = TOKEN[0] XOR ANSW_CNT[0]
- 參考應(yīng)答[7] = TOKEN[2] XOR ANSW_CNT[0]
對于 FDBK[1:0] = 01b:
- 參考應(yīng)答[0] = TOKEN[1] XOR (TOKEN[2] XOR ANSW_CNT[1])
- 參考應(yīng)答[1] = TOKEN[1] XOR (TOKEN[1] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[2] = TOKEN[3] XOR (TOKEN[2] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[3] = TOKEN[1] XOR (TOKEN[3] XOR TOKEN[3]) XOR ANSW_CNT[1]
- 參考應(yīng)答[4] = TOKEN[0] XOR ANSW_CNT[0]
- 參考應(yīng)答[5] = TOKEN[2] XOR ANSW_CNT[0]
- 參考應(yīng)答[6] = TOKEN[3] XOR ANSW_CNT[0]
- 參考應(yīng)答[7] = TOKEN[1] XOR ANSW_CNT[0]
對于 FDBK[1:0] = 10b:
- 參考應(yīng)答[0] = TOKEN[2] XOR (TOKEN[1] XOR ANSW_CNT[1])
- 參考應(yīng)答[1] = TOKEN[2] XOR (TOKEN[0] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[2] = TOKEN[1] XOR (TOKEN[1] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[3] = TOKEN[0] XOR (TOKEN[2] XOR TOKEN[3]) XOR ANSW_CNT[1]
- 參考應(yīng)答[4] = TOKEN[2] XOR ANSW_CNT[0]
- 參考應(yīng)答[5] = TOKEN[1] XOR ANSW_CNT[0]
- 參考應(yīng)答[6] = TOKEN[2] XOR ANSW_CNT[0]
- 參考應(yīng)答[7] = TOKEN[0] XOR ANSW_CNT[0]
對于 FDBK[1:0] = 11b
- 參考應(yīng)答[0] = TOKEN[3] XOR (TOKEN[0] XOR ANSW_CNT[1])
- 參考應(yīng)答[1] = TOKEN[3] XOR (TOKEN[3] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[2] = TOKEN[1] XOR (TOKEN[0] XOR TOKEN[1]) XOR ANSW_CNT[1]
- 參考應(yīng)答[3] = TOKEN[3] XOR (TOKEN[1] XOR TOKEN[3]) XOR ANSW_CNT[1]
- 參考應(yīng)答[4] = TOKEN[3] XOR ANSW_CNT[0]
- 參考應(yīng)答[5] = TOKEN[0] XOR ANSW_CNT[0]
- 參考應(yīng)答[6] = TOKEN[1] XOR ANSW_CNT[0]
- 參考應(yīng)答[7] = TOKEN[3] XOR ANSW_CNT[0]
圖 7-13 中包含 FDBK[1:0] = 00b 時的應(yīng)答計算示例代碼。
圖 7-13 FDBK[1:0] = 00b 時的看門狗應(yīng)答計算代碼