主题中讨论的其他器件: TPS65381-Q1
是否有用于计算器件中问答看门狗应答字节的示例代码、或者是否应使用查找表?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
是否有用于计算器件中问答看门狗应答字节的示例代码、或者是否应使用查找表?
为了提高微控制器单元(MCU)的故障覆盖率、可使用独立的看门狗来监控 MCU。 一种看门狗类型是问答(Q&A)看门狗、用于某些器件、例如 TPS65381A-Q1。
Q&A 看门狗在每个看门狗序列中发出一个问题、并期望4个应答字节具有正确的顺序和正确的值。 这些问题是为了 测试 MCU 的逻辑操作,并提供比窗口看门狗更高的 MCU 诊断覆盖率。 MCU 应根据问答计数计算应答字节、而不是使用查找表来最大限度地扩大诊断覆盖范围。 以下代码提供了一个示例、说明如何为 TPS65381A-Q1计算正确的应答字节。
//问题是 WD_Question 寄存器(TPS65381-Q1中的 WD_TOKEN_VALUE 寄存器)中的当前值
// answ_CNT 寄存器中的当前值
uint8_t calculateAnswer (uint8_t question、uint8_t answerCount){
// answer0是应答字节的位0,answer1是应答字节的位1,等等
uint8_t answer0 =(question & 1)^((answerCount & 2)>> 1)^(question & 8)>> 3);
uint8_t answer1 =(question & 1)^((question & 4)>> 2)^(question & 2)>> 1)^((answerCount & 2)>> 1);
uint8_t answer2 =(question & 1)^((question & 8)>> 3)^(question & 2)>> 1)^((answerCount & 2)>> 1);
uint8_t answer3 =((question & 4)>> 2)^(question & 1)^(question & 8)>> 3)^((answerCount & 2)>> 1);
uint8_t answer4 =((question & 2)>> 1)^(answerCount & 1);
uint8_t answer5 =(问题8)>> 3)^(答案计数& 1);
uint8_t answer6 =(问题和1)^(答案计数和1);
uint8_t answer7 =(问题4)>> 2)^(答案计数& 1);
返回答案0 |(答案1 << 1)|(答案2 << 2)|(答案3 << 3)|(答案4 << 4)|(答案5 << 5)|(答案6 << 6)|(答案7 << 7);
}