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.

[参考译文] BQ76952:AFE 访问 CRC 错误

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1343925/bq76952-afe-access-crc-wrong

器件型号:BQ76952

您好!

  我 有 疑问。     我们通过 SPI 读取 或 Wite afe 发现 存在  许多 CRC 错误。

SPI 正常。

  

function() 写 afe 如下所示:

静态 uint8_t SPI_WriteReg (uint8_t reg_addr、uint8_t * reg_data、uint8_t count)
{
uint8_t addr = 0u;
uint8_t TX_Buffer[MAX_BUFFER_SIZE]={0x0U、0x0U、0x0U};
uint8_t i = 0u;
uint8_t match = 0u;
uint8_t 重试次数= 5u;
uint8_t reg_value = 0u;
uint8_t 结果= SPI_ACCESS_OK;
uint8_t crc_ret = 0u;
uint8_t rxdata[3U]={0x0U、0x0U、0x0U};
uint8_t TxRxResult = SPI_ACCESS_OK;

addr =(uint8_t)(0x80U | reg_addr);

对于(I = 0U;I < count;I++)
{
重试= 5u;
匹配= SPI_ACCESS_FAIL;
TX_Buffer[0U]= addr;
TX_Buffer[1U]=*(reg_data + I);
TX_Buffer[2U]= CRC8 (TX_Buffer、2U);
/*确认发送成功,如果不成功,重发,重发10次不成功退出*/
while ((match == spi_access_fail)&&(重试> 0U))
{
TxRxResult = SPI_ACCESS_OK;
DELAY_US (300u);
SPI_BQ76952_CS_LOW;
DELAY_US (100u);
rxdata[0U]=TX_Buffer[0],&TxRxResult,Ix_Read e52字节;
如果(TxRxResult == SPI_ACCESS_OK)
{
rxdata[1U ]= Ix_Read e52字节(TX_Buffer[1],&TxRxResult );

如果(TxRxResult == SPI_ACCESS_OK)
{
rxdata[2U]=TX_Buffer[2],&TxRxResult 的 Ix_Read e惊 悚字节(TX_Buffer[2],&TxRxResult);

SPI_BQ76952_CS_HIGH;
REG_VALUE =*(REG_DATA + I);

crc_ret = CRC8 (rxdata、2U);
if ((rxdata[0U]== addr)&&(rxdata[1U]== reg_value)&&(rxdata[2U]== crc_ret)&&(TxRxResult == spi_access_OK))
{
匹配= SPI_ACCESS_OK;

if (rxdata[2U]!= crc_ret)
{
G_afe_crc_fail_times++;

if (TxRxResult!= SPI_ACCESS_OK)
{
G_SPI_FAIL_TIMES++;



重试次数--;

如果(匹配= SPI_ACCESS_FAIL)
{
结果= SPI_ACCESS_FAIL;
写入失败提前直接退出;/*2 π*/

addr += 1u;
delay_us (500u);

结果=(TxRxResult!= SPI_ACCESS_OK)? TxRxResult:结果;/*如果SPI读写错误就返回读写错误,如果没有就返回访问结果*/
返回结果;

谢谢

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

    您好、Jian:

    您具体看到的误差是什么?

    您的序列上是否有任何逻辑分析仪捕获?

    具有 CRC 的 SPI 应与所示的示例类似 第 5节带 CRC 示例的 SPI  BQ769x2软件开发指南中

    此致、

    路易斯·埃尔南德斯·萨洛蒙

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

    您好, Luis H.S.

       当  CRC 错误时、我发现   返回值 为 0xff、0xff、0x0 或0xff  、0xff、0xff。

       子命令 尚未完成操作的原因是

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

    您好、Jian:

    您需要为子命令提供足够的余量来完成操作。 如果子命令尚未完成处理、则返回0xFF。

    对此进行了说明。 第 2节子命令 我在上面分享的指南文档的说明。

    在发送子命令之后、我们看到从子命令读回数据之前出现2ms 的延迟。

    此致、

    路易斯·埃尔南德斯·萨洛蒙