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.

[参考译文] TPS6.591万:访问RTC寄存器

Guru**** 2439710 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/657857/tps65910-accessing-rtc-registers

部件号:TPS6.591万

我尝试使用TPS6.591万中的RTC寄存器时遇到一些困难。  我正在对设备进行正确寻址,因为它会激活命令并注册选择字节。  对于所有寄存器读取,即使默认值为非零,它也返回0x00。  我认为我做错了事。  我在数据表中查找线索,但发现I2C操作的文档有点少。  我有一些问题:

  1. 如何将注册地址发送到PMIC?  我假设它作为地址/写入命令字节后的第一个字节发送。  这是否正确?
  2. 寄存器地址是否在写入或读取字节后自动递增?  (我尝试读取多个字节,也尝试读取多个单字节写入寄存器地址/读取一个字节操作)
  3. 在写入寄存器地址和读取命令之间允许丢弃停止信号,还是必须在发出读取命令之前用停止信号写入寄存器地址?

最好将上述信息包括在数据表中和/或包括显式信号图。

Gerry Belanger

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

    您好,Gerard,

    TPS6.591万应完全符合I2C规范(www.nxp.com/.../UM1.0204万.pdf),因此文档可能比数据表中的注释更有用,但有点干。 有一个通用应用手册 www.ti.com/.../slva704.pdf ,它更有用。

    1. SLVA704文档中的图9显示了这方面的良好图表。 基本上它是7位器件地址(0x2d = 0b10.1101万)+ r/w=0 + ack,8位寄存器addres + ACK,重复启动,7位器件地址+ r/w=1 + ack,然后数据应来自TPS6.591万。

    2.我不确定TPS6.591万是否支持重复读取/重复写入。

    3.您不需要停止,但需要重复启动。

    我们大多数最新的数据表都包含更多关于I2C的信息,我添加了一个注释,试图在将来进行其他修订时将其添加到此数据表中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kevin,
    我有更多信息。 我扩展了读取回路,以覆盖所有PMIC寄存器,直到JTAGENERNUM_REG的偏移0x80。
    看起来我正在读取PMIC寄存器的有效数据,从补偿0x1c的PUADEN_REG到JTAGVERNUM_REG。

    这意味着我正在正确驱动AM335xI2C控制器。 无论我写了注册地址后发送停止还是直接转到重复的开始,都得到相同的结果。 所以I2C通信不是问题。

    我仍然看不到任何RTC寄存器的任何非零重置默认值。 根据PMIC数据表,有6个RTC寄存器应具有非零后重置默认值。 所有的读数都为零。 这是实际问题。 欢迎提出建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Gerard,

    您是否正在从VDD1_OP_REG (0x22)或VDD2_OP_REG (0x25)以外的任何寄存器读取值? 如果只有这两个,则可能表示您使用的是SmartReflex I2C总线,而不是正常的I2C总线。

    我刚刚从"days (天数)"寄存器(0x03)读取I2C的屏幕截图,默认值为0x01,您能否将它们与您的范围截图进行比较,看看是否缺少任何内容?

    ZoomOut (缩小):

    Zoomin1:

    Zoomin2:

    Zoomin3:

    Zoomin4:

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

    Kevin,

    我很确定我正在为正确的设备寻址。  当我读取寄存器0x1c,PUADEN_REG时,代码将看到默认值0x9F。

    在注册0x03时,我看到了与您的示波器类似的示波器跟踪。  '1'位存在,但预期的0x01未显示在I2C控制器读取数据寄存器中。  所以这不再是PMIC问题。  

    在读取RTC寄存器与其余寄存器时,我必须调查与AM335xI2C控制器POV有何不同。  

    可能是我疏忽了,但我将在本周晚些时候深入探讨。

    感谢你的帮助

    Gerry Belanger

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

    您好,Gerry:

    听说PMIC正在发送正确的信息很好,感谢您提供更新。 祝您在软件方面好运!

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

    Kevin,

    结果是DEVPCTRL寄存器出现问题。  特别是RTC_PWDN和CK32K_CTRL位。  在配置了BOOT0 = 0和boot1 = 1的TPS6.591万A3A1中,这两个默认值都是'1'。

    RTC_PWDN位将切断RTC子系统的电源。  CK32K_CTRL位选择RC振荡器而不是32.768 晶体。

    将这两个位都设置为'0'可使RTC正常工作。

    如果数据表中RTC的功能说明提到此tidbit,将会很有帮助。

    Gerry Belanger