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.

[FAQ] [参考译文] [常见问题解答] TPS65381A-Q1:是否有示例代码来计算 Q&A 看门狗的应答字节?

Guru**** 2317430 points
Other Parts Discussed in Thread: TPS65381A-Q1, TPS65381-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/734318/faq-tps65381a-q1-is-there-example-code-to-calculate-the-answer-bytes-for-the-q-a-watchdog

器件型号:TPS65381A-Q1
主题中讨论的其他器件: TPS65381-Q1

是否有用于计算器件中问答看门狗应答字节的示例代码、或者是否应使用查找表?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了提高微控制器单元(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);