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.

[参考译文] TPS92661-Q1:在读取状态寄存器时、我在 LMM_rd_1_byte 函数中得到无限循环

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/596607/tps92661-q1-in-reading-the-status-registers-i-am-getting-infinite-loop-in-lmm_rd_1_byte-function

器件型号:TPS92661-Q1

您好、TI、

我正在前大灯上工作、并尝试从故障寄存器中读取故障状态信息。 在故障排除时、我意识到它实际上不会向我发送来自接收缓冲区的任何数据。 在等待收集的字节时、它将进入无限循环。 我正在复制修改后的代码。 此函数最初由 TI 编写。

void LMM_rd_1_byte (uint8 LMM、uint8 regaddr)

uint16 i;

//我们必须首先对请求进行汇编并对其进行 CRC 校验
TxBuf[0]=(0xC0 | LMM);
TxBuf[1]= regaddr;
//恢复 CRC
I = CRC_16_IBM (TxBuf、2);
//并处理它
TxBuf[2]=(I & 0x00FF);
TxBuf[3]=((I >> 8)& 0x00FF);

//还要确保我们准备好从 LMM 接收数据
ReturnBytes = 1+1+2;// 1 Init + 1 Data + 2 CRC
GatheredBytes = 0;

//现在我们可以发货了
对于(I = 0;I < 4;I++)

LMM_UART_xmit (TxBuf[i]);

//现在等待读取
while (GatheredBytes < ReturnBytes)        

//此循环保持无限模式,超时是否起作用? 如何操作?

while (((SciaRegs.SCIRXST.bit.RXRDY = 0)             //等待新数据?

//返回收集的字节

RxBuf[GatheredBytes++]= SciaRegs.SCIRXBUF.bit.RXDT;

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

    Guarav、您好!

    我正在为您检查合适的联系人、并将告知您。

    此致、

    克林特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在读取故障寄存器时、程序在 while 循环中保持无限循环。 为什么故障寄存器没有响应 UART 请求? while (((SciaRegs.SCIRXST.bit.RXRDY = 0) 。 在这一行中、程序仍在等待接收新字节。
    我怎样才能增加一些时间,使它不会停留在这里? 我应该等待多长时间?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Guarav、您好!

    我已经联系了合适的人员、希望您能很快得到回复。 感谢您的耐心等待。

    此致、

    克林特

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

    Guarav、您好!

    我们很快会直接联系您、因此我将关闭此主题。

    此致、

    克林特