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.

[参考译文] BQ27421-G1:BQ27421初始化期间失败

Guru**** 2494635 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/714920/bq27421-g1-fail-during-initialisation-of-bq27421

器件型号:BQ27421-G1

尊敬的所有人:

我正在尝试实施 BQ27421 DS 中描述的初始化过程,在步骤4中说明:“Write 0x00 using BlockDataControl() command (0x61) to enable block data memory control" (使用 BlockDataControl()命令(0x61)写入0x00以启用块数据存储器控制)此操作失败,任何想法? 或特殊要求?

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好
    请通读下面有关监测计通信的文档。
    www.ti.com/.../slua801.pdf
    谢谢
    Onyx
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    感谢您的更新、我们使用的是 BQ27421-G1B、但据我了解的2014年快速入门指南、BQ27421中没有闪存或 ROM、因此您能澄清确切的过程吗?

    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    bq27421是基于 ROM 的监测计、因此请阅读随附的有关如何与监测计通信的文档。
    谢谢
    Onyx
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您正在谈论哪个附件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    www.ti.com/.../slua801.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Onyx:

    感谢您提供的信息,但是文档的源文件示例第12页中有错误,它是写的:


    nLength = nRemainder;
    IF (nLength < 32)

    nRemainder = nLength - 32;
    nLength = 32;

    否则 nRemainder = 0;

    应该是这样

    nLength = nRemainder;
    如果(nLength > 32)/******** >****** /

    nRemainder = nLength - 32;
    nLength = 32;

    否则 nRemainder = 0;

    是否可以确认此错误?

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

    是的、此行在应用手册中不正确。 以下是此函数的更正版本:

    //gauge write_data_class: 写入数据类
    //pHandle:     通信适配器的句柄
    //nDataClass:    数据类编号
    //pData:     保存整个数据类(所有块)的缓冲区
    //nLength:     数据类的长度(所有块)
    //返回值:    0 =成功
    int gauch_write_data_class (void *pHandle、unsigned char nDataClass、unsigned char *pData、unsigned char nLength)

     unsigned char nRemainder = nLength;
     unsigned int nOffset = 0;
     unsigned char pCheckSum [2]={0x00、0x00};
     unsigned int nData;
     unsigned char nDataBlock = 0x00;

     如果(nLength < 1)返回0;

     操作
     {
      nLength = nRemainder;
      如果(nLength > 32)
      {
       nRemainder = nLength - 32;
       nLength = 32;
      }
      否则 nRemainder = 0;

      nData =(nDataBlock << 8)| nDataClass;
      监测计_cmd_write (pHandle、CMD_DATA_class、nData);

      如果(gauge 写入(pHandle、CMD_BLOCK_DATA、pData、nLength)!= nLength)返回-1;
      pCheckSum[0]= CHECK_SUM (pData、nLength);
      监测计写入(pHandle、CMD_CHECK_SUM、pChecksum、1);

      usleep(10000);

      监测计_cmd_write (pHandle、CMD_DATA_class、nData);
      监测计_read (pHandle、CMD_CHECK_SUM、pChecksum + 1、1);
      if (pCheckSum [0]!= pCheckSum [1]) return -2;

      pData += nLength;
      nDataBlock++;
     } while (nRemainder >0);

     返回0;

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

    我已经实现了完整的软件来在 ROM 中写入新值,但是在打开/关闭硬件时,这些值会恢复为默认值,有什么想法?

    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是一个 ROM 测量仪表。 没有闪存。 一旦电量计断电、这些值将恢复为默认值。
    谢谢
    Onyx