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.

[参考译文] BQ34110:无法解封

Guru**** 2609955 points
Other Parts Discussed in Thread: BQ34110, BQSTUDIO

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/992107/bq34110-unable-to-unseal

器件型号:BQ34110
主题中讨论的其他器件: BQSTUDIO

大家好、我正在通过 Arduino 使用 MCU 控制 BQ34110。 通常、我可以通过 i2c 成功进行通信。 我通过 主 命令成功读取了电压、温度等、我也成功使用了子命令。 我目前卡在的位置是打开器件的密封。 最初、我读取安全密钥并接收到0xFFFF 0xFFFF 0x3672 0x0414。 因此、我由此推断出用于解封的安全密钥为0x0414 0x3672。 为了测试密封和解封功能、我使用0x30命令密封器件。 然后我读取运行状态寄存器并确认 SEC1和 SEC0都被设置为1。 在过去的几个小时里、我一直在尝试拆封器件、但没有运气。  

下面是一些代码、用于展示我如何尝试对其进行解封:

void  unseal()
    Wire.beginTransmission(BQ34110_ADDRESS);
    Wire.write (0x00); // 控制
    Wire.write (0x04);
    Wire.write (0x14);
    wire.endTransmission ();
    
    Wire.beginTransmission(BQ34110_ADDRESS);
    Wire.write (0x00); // 控制
    Wire.write (0x36);
    Wire.write (0x73);
    wire.endTransmission ();

我还尝试混合发送字节的顺序、但看不到操作状态寄存器的变化。

此外、这是逻辑分析仪在我发送命令时看到的内容。

我们非常感谢在这里提供任何指导。

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

    您好、Rohaan、

    我注意到您的捕获中的数据为'0x73'而不是'0x72'。 我建议首先尝试在 BQStudio 中解封并捕获逻辑分析仪上的过程、以确保您的步骤相同。

    此致、

    Matt

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

    抱歉、我必须意外键入3。 我已仔细检查代码、并且一直在使用0x72。  目前、我无法访问 BQ Studio、我只有 MCU 和逻辑分析仪。 但是、我的程序是否正确? 还是在 i2c 通信中缺少一些基本知识。  

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

    您好、Rohaan、

    此主题可能会有所帮助: https://e2e.ti.com/support/power-management/f/power-management-forum/877582/bq34110-security_keys-write-format

    在您的捕获中、字节顺序似乎是反向的。

    此致、

    Matt

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

    所以这个链接真的很有帮助,谢谢你们,这个特别的声明帮助了我  ,我得到了我发送钥匙所需的顺序,但它仍然不起作用。 我随机决定在这两个词之间留出10毫秒的延迟、这让我能够解开密封圈。 拖延似乎是至关重要的,因为我没有尝试过,它将不起作用。 我没有测试过比10ms 更高的延迟。

    对于任何感兴趣的人来说、这里是用于解开芯片封条的代码

     

    void  unseal()

        Wire.beginTransmission(BQ34110_ADDRESS);
        Wire.write (0x00); // 控制
        Wire.write (0x14);
        Wire.write (0x04);
        wire.endTransmission ();
        延迟(10);  
       
        Wire.beginTransmission(BQ34110_ADDRESS);
        Wire.write (0x00); // 控制
        Wire.write (0x72);
        Wire.write (0x36);
        
        wire.endTransmission ();