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.

[参考译文] TPS65218D0:在 EEPROM 中编程加电默认值

Guru**** 2589265 points
Other Parts Discussed in Thread: TPS65218

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/903878/tps65218d0-programming-power-up-default-values-in-eeprom

器件型号:TPS65218D0
主题中讨论的其他器件:TPS65218

您好!

我需要更改 CONFIG1和 CONFIG2寄存器中的 UVLO 阈值和迟滞值、然后保存到 EEPROM 中。

我修改了 Linux 驱动程序 tps65218.c

我能够更改配置寄存器的值。 但是、保存在 EEPROM 中命令(密码寄存器中的0x50 0x1A 0xCE)不起作用。  在下电上电后 PMIC 不再启动。

我在 3块板上试过,所有这些都被杀了。

然后、我测试了在  uboot 命令行上仅将命令保存在 EEPROM 中(而不更改配置寄存器)。

U-Boot# i2c MW 24 0x10 0x50 1.
U-Boot# i2c MW 24 0x10 0x1A 1.
U-Boot# i2c MW 24 0x10 0xCE 1

但结果相同、我的电路板在下电上电后不再启动。

在规范中、我读出"连续向密码寄存器写入0x50、0x1A 或0xCE 会将当前寄存器设置提交到 EEPROM 存储器、因此它们将成为新的加电默认值"。

或0xCE 是什么意思

并知道发生了什么? 您是否有一些驱动程序代码可用于将数据保存到 EEPROM 中?

谢谢

让-吕克

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

    您好!

    我已将您的请求转发给支持此器件的应用工程师。 他在美国时区、将在一天或两天内向您提供反馈。

    此致、

    Murthy

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

    Jean-Luc、

    我感到惊讶的是、它显示"0x50、0x1A 或0xCE"。

    它全部是顺序中的三个字节:0x50、0x1A、然后是0xCE。

    我们需要找到一种方法来确认编程是否成功、即使系统无法完全启动。

    您能否确认您重新编程的寄存器地址和位?

    在向 PMIC 发送 I2C 命令的过程中、您是否记录了数据日志? 这有助于客观地确定寄存器是否按照您的预期进行了修改、编程序列是否成功完成。

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

    您好 Brian 和 Murthy

    感谢您的反馈。

    我认为我发现了这个问题。

    我不知道为什么(u-boot 不写入它)、但一些其他寄存器也保存在 EEPROM 中(DCDC1、DCDC2、DCDC3、DCDC4、SEQ4、 SEQ5)在引导后没有其默认值。

    现在我将除 CONFIG1和 CONFIG2之外的所有寄存器设置为默认值并保存在 EEPROM 中、这是正常的。

    我在 u-boot 命令行上尝试过此操作、PMIC 在下电上电后正常启动:


    U-Boot# WD 停止

    U-Boot# i2c MW 24 0x10 0x6E

    U-Boot# i2c MW 24 0x13 0x4F

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x69

    U-Boot# i2c MW 24 0x14 0x80

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x6b

    U-Boot# i2c MW 24 0x16 0x99

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x6A

    U-Boot# i2c MW 24 0x17 0x99

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x65

    U-Boot# i2c MW 24 0x18 0x8c

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x64

    U-Boot# i2c MW 24 0x19 b2

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x5e

    U-Boot# i2c MW 24 0x23 0x75

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x59

    U-Boot# i2c MW 24 0x24 0x12

    U-Boot#

    U-Boot# i2c MW 24 0x10 0x50

    U-Boot# i2c MW 24 0x10 0x1A

    U-Boot# i2c MW 24 0x10 0xCE

    U-Boot#

    U-Boot# i2c MD 24 0x01

    0001:11 00 00 00 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ce   ……

    U-Boot#

    然后我在 Linux 内核中实现了它,并且也运行良好;-)

    此致

    让-吕克

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

    感谢您在论坛上提供解决方案、Jean-Luc!

    请给自己一些积分、并将您自己的回复标记为"正确答案"。