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.

[参考译文] BQ27530-G1:生产中的芯片编程流程图错误。

Guru**** 2589280 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/752492/bq27530-g1-an-error-in-flowchart-for-programming-the-chip-in-production

器件型号:BQ27530-G1

您好!

我认为我在文档"使用 bq275xx 投入生产..."中发现了错误  (http://www.ti.com/lit/an/slua449f/slua449f.pdf)

我在尝试使芯片正常工作时学到的是、如果您将数据发送到芯片、则应将其发送到寄存器0x64和0x65、然后读取0x66以确认所需的操作。 但是、在本文档中、当尝试擦除 IF 行时、流程图告诉我:

sendCommand (0x00、0x03);
sendCommand (0x01、0x00);
sendCommand (0x02、0x00);

sendCommand (0x00、0x00);
sendCommand (0x01、0x01);

这意味着要写入0x64的校验和将是0x04、但流程图声称它应该是0x03、因此这两行似乎是一个错误? 此外,我还发现了另一个芯片级文档( http://www.ti.com/lit/an/slua504a/slua504a.pdf ),该文档的问题是校验和甚至不会写入0x64。

我在这里的问题是 一个错误、或者它应该是这样的吗? 如果是这种情况、我在哪里可以了解为什么会发生这种情况? 因为我在从0x66读取并尝试将其与0进行比较时遇到错误、 我似乎无法挽救芯片、因为它将停留在永久 ROM 模式、即使我尝试通过写入以下内容将其从 ROM 模式中取出:

sendExtendedCommand (0x00、0x00、0x0f);
sendCommand (0x64、0x0F);
sendCommand (0x65、0x00);

下面是两个相关流程图的一小部分。 第一个来自 bq275xx、第二个来自 BQ274xx、都在第9页上。 我还包括了 SEND 命令的实现方法的一个小工具。 计时器睡眠以毫秒为单位。 我发现、如果添加了延迟、芯片的响应速度会更高。

int sendCommand (uint8_t reg、uint8_t 命令){
timer_sleep (5);
uint8_t buffer[2]={0x00、0x00};

buffer[0]= reg;
buffer[1]=命令;
返回 i2c_write (I2C2、 addr、sizeof (buffer)、buffer);
}
void sendExtendedCommand (uint8_t reg、uint8_t COMMAND_MSB、
uint8_t COMMAND_LSB){

uint8_t buffer[3]={0x00、0x00、0x00};

buffer[0]= reg;
buffer[1]= reg;buffer[1]= COMMAND_LSB;
Buffer[2]= COMMAND_MSB;
i2c_write (I2C2、ADDR、3、buffer);

} 


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

    这看起来像是应用手册中的错误。 校验和(0x03)是正确的、但流程图中校验和左侧框中的内容不正确。

    从 bq27530闪存流文件(我今天使用/测试过该文件):

    W:16 00 03 00 //将0x03写入寄存器("命令") 0x00、0x00到0x01和0x00到0x02 (自动递增)
    W:16 64 03 00 //将校验和0x03写入寄存器("命令") 0x64和0x00至0x65
    X:20 //等待20ms
    C:16 66 00 //从寄存器("命令") 0x66读回并检查它是否为0x00

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

    我们将对此进行研究、并尽快返回给您

    谢谢

    Onyx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您的问题已得到解答、请将其标记为已解决。