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.

[参考译文] TPS65218:如何通过 I2C 设置 FSEAL 位

Guru**** 2422790 points
Other Parts Discussed in Thread: TPS65218D0

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/944365/tps65218-how-to-set-fseal-bit-over-i2c

器件型号:TPS65218

尊敬的 TI 团队:

我们尝试了以下命令来断开 TPS65218D0上的 fseal 位。 但到目前为止,我们不能将它设置为我们尝试的任何内容。  那么、您能否告诉我们、在 i2c 下将 Fseal 位设置为1b 需要什么?

BTW、我们有一个纽扣电池连接到 CC 引脚。 并生成3.3V 电压。  

我们随后尝试的命令:

i2cset -f 0 0x24 0x10 0x7D

i2cset -f 0 0x24 0x10 0xB1

i2cset -f 0 0x24 0x10 0xFE

i2cset -f 0 0x24 0x10 0xA3

在这些命令之后、当我们检查寄存器0x5时、我们看到 Fseal 位没有设置为1b。

i2cget -f 0 0x24 0x5

0x28

此致、

Zafer Çalışkan è s

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

    Zafer、

     您需要按顺序将[0xB1、0xFE、0xA3]写入寄存器0x10、两次读取或写入之间不存在任何其他 I2C 读取或写入。

    由于您使用的是 Linux 命令行、并且当您不向 PMIC 写入数据时处理器可以访问 I2C、因此可能会在这3条命令之间写入另一条 I2C 命令:

    i2cset -f 0 0x24 0x10 0xB1
    i2cset -f 0 0x24 0x10 0xFE
    i2cset -f 0 0x24 0x10 0xA3 

    此外、我不确定为什么在这3条命令之前将0x7D 写入寄存器0x10。 数据0x7D 永远不会写入密码密码寄存器本身也不受密码保护。 例如、如果要将数据写入0x11 (enable1)、则在将数据写入0x11之前、应将0x6C (0x11 XOR with 0x7D)写入寄存器0x10。

    我不确定是否将0x7D 写入寄存器0x10会破坏 FSEAL 中断序列、但我认为一个较好的选择是在开始该序列之前清除缓冲区、以确认回读数据清除为0x00。 此外、当我使用 i2cset i2cget 命令时、我会包含"-y"选项。 最后、在我写入 I2C 总线之前、我使用 i2cdetect 函数来确保我与正确的 I2C 总线通信(寄存器地址0x24在电网中显示为"XX"或"24"):

    i2cdetect -r 0
    i2cget -f -y 0 0x24 0x10
    i2cset -f -y 0 0x24 0x10 0xB1
    i2cset -f -y 0 0x24 0x10 0xFE
    i2cset -f -y 0 0x24 0x10 0xA3 

    如果这不会改变结果、我建议您使用 I2C 监听器在总线0上记录 I2C 事务、以便您可以共享这些事务的数据记录。 此外、我还可以查看原理图。 最后、您还可以使用 控制寄存器(地址0x06)中的 CC_AQ 字段、然后读回状态寄存器中的数据以确认 CC_STAT = 01b、10b 或11b。 如果 CC_STAT = 00b、则指示 PMIC 不测量 CC 引脚上的有效电压。

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

    Brian、

    感谢您的详细答复。 在提出此案例后、昨天我们尝试了以下命令集、并成功地将 fseal 位设置为1。   

    i2cset -f -y 0 0x24 0x10 0xb1 && i2cset -f -y 0 0x24 0x10 0xFE && i2cset -f -y 0 0x24 0x10 0xa3 && i2cget -y 0 0x24 0x5

    BTW、 是否有任何寄存器可在断电模式下控制 DCDC5和 DCDC6 LDO 的电流消耗?

    此致、

    Zafer Çalışkan è s

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

    Zafer、

    感谢您的确认! 很高兴 FSEAL=1b 设置正确。

    没有用于控制 DCDC5/6电流消耗的寄存器、因为它们已经针对使用纽扣电池运行的效率进行了优化。 DCDC5/6的最大电流输出仅为25mA、但它们始终运行在脉冲跳跃模式下、并且只会进行切换以保持电压高于阈值(DCDC5=1.0V、DCDC6=1.8V)。

    如果 DCDC5/6上没有负载、您可以看到它们每秒只切换一次。 电流消耗非常低。