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.

[参考译文] TPS6521905-Q1:对器件编程后无法读回编程的数据、并且器件在编程后未响应任何 i2c 地址

Guru**** 2943430 points

Other Parts Discussed in Thread: TPS65219, TPS65219EVM-SKT

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1654055/tps6521905-q1-after-programming-the-device-unable-to-read-back-the-programmed-data-and-the-device-is-not-responding-to-any-i2c-address-after-programming

器件型号: TPS6521905-Q1
主题中讨论的其他器件: TPS65219TPS65219EVM-SKT

你(们)好  
我正在尝试使用 BPWin 软件对设备 TPS6521905WRHBRQ1 进行编程。
器件最初响应地址 0x30 并 对数据进行编程 、但当我读回器件寄存器时、器件不会响应从 0 到 7F 的任何地址。 这只发生在设备被编程一次,甚至器件 NVM ID 读出在编程后为 0 时。 有了新的样本,我们能够读取默认的寄存器数据和一个 NVM ID 。
我遵循的程序流在这里上传.
image.png

对设备进行编程后,将数据保存在 NVM 中,并给出了 NVM 验证的说明,还完成了所有指令。
我在编程后接收到数据、读回寄存器 0x34 的位 7 是 0x10、因此 根据编程流程、位 7 为 0  
但是、当我对器件进行编程或读取时、器件不会响应任何地址、并且 NVM ID 在所有操作中都是 alo 0  
为什么器件编程一次后没有响应?
请给 一些建议。

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

    尊敬的 Divya:  

    感谢您访问 E2E、我有几个问题可帮助我们确定这里可能发生的情况:

    • 您是否能够共享要编程到 TPS6521905WRHBRQ1 器件上的设置?

    • 特别是、我想知道您要写入地址 0x26 以设置新器件 I2C 地址的内容

    • 您能澄清一下、从整个 0x34 寄存器而不仅仅是位 7 读取什么? 它是 0x10?
      位 6 和位 5 应设置为“1“、表示编程和验证已成功完成。
      寄存器值应为 0x70。

    • BPWin 不是我们推荐的编程方法、我们没有经过验证的 BPWin 流程。
      我们建议使用 TPS65219_GUI 进行编程。
      您是否能够使用我们的 TPS65219 GUI 进行连接、并查看编程是否以这种方式成功?

    此致、  
    Sarah

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

    您好、Sarah:

    以下是对器件进行编程的流程
    上电序列
    设置 GND = 0V
    设置 VSYS = 0V
    保持 EN 引脚为低电平
    等待 20 ms
    应用 VSYS/VSYS VCC = 3.3V
    等待 100ms
    将 EN 驱动为高电平
    等待 100ms
    启用 I2C 上拉电压
    释放 SDA/SCL 线路
    等待 100ms
    执行从器件地址扫描 — 对于新样本,器件在从器件地址 0x30 处检测到

    对新样片进行编程操作
    打开器件电源
    读取从器件地址 0x30 的器件 NVM ID、寄存器 0x01 会按照规范将值设为 05h
    1:通过写入寄存器 0x34 值 0x09 (EN_OSC_DLY) 进入 NVM 编程模式
    2:CSV 文件(客户数据文件)以二进制格式加载。 解析数据
    3:从 0x00 - 0x37 和 0x41 对寄存器进行编程
    4:将寄存器设置保存到 NVM 寄存器 0x34、值 0x0A (CUST_PROG_CMD)
    5:NVM 验证寄存器 0x34、值 0x07 (CUST_NVM_VERIFY_CMD)
    6:读取寄存器 0x34 的验证结果会给出值 0x10
    7:关闭电源

    对新样本执行读取操作

    打开器件电源
    读取从器件地址 0x30 的器件 NVM ID、寄存器 0x01 会按照规范将值设为 05h
    读取 0x00 至 0x37 和 0x41 中所有可访问的 PMIC 寄存器。
    输出会显示新样本的所有寄存器数据
    某些寄存器数据位于
    寄存器 0x26。该值为 0x30
    寄存器 0x20 值为 0x10

    1.目前、我们的客户尚未授权在外部共享数据文件。 我们目前正在等待他们的确认、然后再继续进行任何数据共享活动。
    关于寄存器 0x26、从器件读取的默认值为 0x30。 客户提供的数据文件中指定的值也为 0x30、并且将相同的值编程到器件中。 因此、编程期间没有对该寄存器进行任何更改。
    对于新器件样本、寄存器 0x34 的默认值为 0x00。 在编程过程中、我们按照客户数据文件中的规定将 0x00 写入寄存器 0x34。 完成编程序列、保存配置并执行 NVM 验证后、我们观察到寄存器 0x34 的值更改为 0x10。

    如果对该行为做出任何澄清、以及在 NVM 编程和验证过程中是否预计会对寄存器 0x34 进行更改、我们将不胜感激。
    4.我们还希望了解有关寄存器 0x20(MFP_2_CONFIG 寄存器)的说明。

    从该器件读取的默认值为 0x10。
    提供的数据文件中为编程指定的值为 0x01。

    将该寄存器从 0x10 更改为 0x01 是否会导致器件在编程后无法访问? 编程操作完成后、我们无法与器件通信、读回寄存器或执行任何进一步的编程操作。
    请向我们提供进一步的步骤。

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

    您好、Sarah:

    以下是对器件进行编程的流程
    上电序列
    设置 GND = 0V
    设置 VSYS = 0V
    保持 EN 引脚为低电平
    等待 20 ms
    应用 VSYS/VSYS VCC = 3.3V
    等待 100ms
    将 EN 驱动为高电平
    等待 100ms
    启用 I2C 上拉电压
    释放 SDA/SCL 线路
    等待 100ms
    执行从器件地址扫描 — 对于新样本,器件在从器件地址 0x30 处检测到

    对新样片进行编程操作
    打开器件电源
    读取从器件地址 0x30 的器件 NVM ID、寄存器 0x01 会按照规范将值设为 05h
    1:通过写入寄存器 0x34 值 0x09 (EN_OSC_DLY) 进入 NVM 编程模式
    2:CSV 文件(客户数据文件)以二进制格式加载。 解析数据
    3:从 0x00 - 0x37 和 0x41 对寄存器进行编程
    4:将寄存器设置保存到 NVM 寄存器 0x34、值 0x0A (CUST_PROG_CMD)
    5:NVM 验证寄存器 0x34、值 0x07 (CUST_NVM_VERIFY_CMD)
    6:读取寄存器 0x34 的验证结果会给出值 0x10
    7:关闭电源

    对新样本执行读取操作

    打开器件电源
    读取从器件地址 0x30 的器件 NVM ID、寄存器 0x01 会按照规范将值设为 05h
    读取 0x00 至 0x37 和 0x41 中所有可访问的 PMIC 寄存器。
    输出会显示新样本的所有寄存器数据
    某些寄存器数据位于
    寄存器 0x26。该值为 0x30
    寄存器 0x20 值为 0x10

    1.目前、我们的客户尚未授权在外部共享数据文件。 我们目前正在等待他们的确认、然后再继续进行任何数据共享活动。
    关于寄存器 0x26、从器件读取的默认值为 0x30。 客户提供的数据文件中指定的值也为 0x30、并且将相同的值编程到器件中。 因此、编程期间没有对该寄存器进行任何更改。
    对于新器件样本、寄存器 0x34 的默认值为 0x00。 在编程过程中、我们按照客户数据文件中的规定将 0x00 写入寄存器 0x34。 完成编程序列、保存配置并执行 NVM 验证后、我们观察到寄存器 0x34 的值更改为 0x10。

    如果对该行为做出任何澄清、以及在 NVM 编程和验证过程中是否预计会对寄存器 0x34 进行更改、我们将不胜感激。
    4.我们还希望了解有关寄存器 0x20(MFP_2_CONFIG 寄存器)的说明。

    从该器件读取的默认值为 0x10。
    提供的数据文件中为编程指定的值为 0x01。

    将该寄存器从 0x10 更改为 0x01 是否会导致器件在编程后无法访问? 编程操作完成后、我们无法与器件通信、读回寄存器或执行任何进一步的编程操作。
    请向我们提供进一步的步骤。

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

    尊敬的 Divya:  

    1.理解。
    请注意、   由于 E2E 是一个公共论坛、如果担心隐私问题、您也可以通过电子邮件 s-lao@ti.com 与我联系以共享文件。  

    2.理解。 因此、我们希望 器件在编程后能够响应 0x30 地址。  

    3.读回 0x10 表示编程命令未正确发送。  

    4.将寄存器 0x20 设置为 0x01 会将 MODE/STBY 引脚置于 STBY 配置。 如果此引脚未被拉高、则器件将一直处于待机模式

    5.听起来这个是在您自己的定制电路板(而不是 TPS65219EVM-SKT 电路板)上进行编程的、您能否确认?
    您是否能够分享 MODE/STBY、MODE/RESET、EN/PB/VSENSE 引脚硬件配置的详细信息?

    6.关于 0x34、预计在发送 EN_OSC_DLY 命令后对 0x10 进行初始更改。  
    但是、我预计在  写入 CUST_PROG_CMD 和 CUST_NVM_VERIFY_CMD 命令后会发生进一步的变化。  
    它不应保持在 0x10。

    • 新器件、回读 0x34 = 00
    • 通过写入寄存器 0x34 = 0x09 (EN_OSC_DLY) 进入 NVM 编程模式
    • 回读 0x34 = 0x10 、表示 OSC 已启用
    • 加载 csv/二进制文件
    • 写入 0x34 = 0x0A 以将值编程到 NVM 中
    • 读回 0x34 = 0x30 、以指示编程已完成
    • 写入 0x34 = 0x07 以进行验证
    • 回读 0x34 = 0x70 、以指示 NVM 验证已完成。
    • 检查位[7]= 0 以确保 NVM 通过验证测试。 (失败会回读 0x80)

    在执行步骤 4 之前、

    3:将寄存器从 0x00 - 0x37 和 0x41 进行编程
    4:将寄存器设置保存到 NVM 寄存器 0x34、值 0x0A (CUST_PROG_CMD)[/QUOT]


    请 回读寄存器 0x00 - 0x27、以确保这些都按预期运行、并匹配客户配置文件。
    寄存器 0x28 - 0x41 不受 NVM 支持、也不会受到关注。

    如果您没有看到 0x34 更改为 0x30、请再次尝试 0x0A (CUST_PROG_CMD) 写入尝试。 

    此致、  
    Sarah

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

    您好、Sarah:

    感谢您发送编修。

    请参阅下面的其他信息。

    器件地址

    我们没有观察到任何 I2C 地址正在变化的迹象。 根据我们当前可用的客户配置文件、I2C_ADDRESS_REG (0x26) 配置为 0x30、我们还期望器件在编程后在地址 0x30 保持响应。

    客户配置文件

    此时、客户尚未授权从外部共享完整的配置/数据文件。 我们正在与客户合作以获得批准、并将在获得许可后共享。

    MODE/STBY 和 MODE/RESET 硬件配置

    该器件在 BP 插座环境中进行编程、不在 TPS65219EVM-SKT 电路板上。

    查看插座原理图和 BP 算法后:

    MODE/STBY(器件引脚 28)未主动驱动。
    MODE/RESET(器件引脚 31)未主动驱动。

    在 BP 算法中、两个引脚当前都定义为 NCT:

    NCT 16 28 31.

    该算法仅控制:
    VCC
    GND
    EN
    SDA
    SCL

    当前上电序列:

    EN =低电平
    施加 VCC = 3.3V
    延迟 100ms
    EN =高电平
    延迟 100ms
    启用 I2C 上拉
    运行地址扫描

    在上电、编程、验证或读取操作期间、当前不会对 MODE/STBY 或 MODE/RESET 进行控制。根据您关于寄存器 0x20 和 MODE/STBY 功能的注释、您能否建议在以下期间 MODE/STBY 和/或 MODE/RESET 是否必须驱动至特定状态:

    初始上电
    NVM 编程、验证或读取
    编程后下电上电验证


    根据您关于寄存器 0x20 的注释、如果 MODE/STBY 功能在 NVM 编程后变为有效状态、则未驱动的 MODE/STBY 引脚可能会影响下电上电后的器件启动。 请建议在 NVM 编程和编程后验证期间、是否应将这些引脚驱动至特定的逻辑电平。

    寄存器 0x34 状态

    我们知道预期顺序应该是:

    新器件:0x34 = 0x00
    写入 0x34 = 0x09 (EN_OSC_DLY)
    读回 0x34 = 0x10
    写入 0x34 = 0x0A (CUST_PROG_CMD)
    读回 0x34 = 0x30
    写入 0x34 = 0x07 (CUST_NVM_VERIFY_CMD)
    读回 0x34 = 0x70
    验证位[7]= 0

    我们将在每条命令后添加寄存器 0x34 的中间回读、以确定序列失败的位置。

    编程后进行寄存器回读

    我们观察到的主要问题之一是、在对新器件进行一次编程并执行后续操作后、器件不再响应 I2C 事务。

    因此、我们无法在受影响样本的编程周期后成功读回寄存器 0x00-0x27、因为器件不再响应读取操作。

    对于受影响的设备:

    IID 检查失败
    器件在地址扫描期间不进行确认
    读取操作失败
    0x00-0x27 的寄存器回读无法完成

    我们目前正在调查此行为是否与以下各项相关:

    NVM 编程序列完成、
    MODE/STBY 配置、
    下电上电后的 MODE/RESET 行为、
    或 NVM 提交后的另一个启动状态问题。

    请告诉我们、在 NVM 编程后上电期间、MODE/STBY 和 MODE/RESET 是否有建议的逻辑电平、或者您建议的任何其他调试步骤。

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

    尊敬的 Divya:

    在 NVM 编程期间、MODE/STBY 和 MODE/RESET 状态无关紧要、因为器件仍处于初始状态。  

    但在程序后验证期间、
    如果 MODE/STBY 设置为 STBY 引脚、请确保遵循正确的配置、以便器件处于 ACTIVE 状态、而不是 STBY 状态
    如果 MODE/RESET 设置为 RESET 引脚、请确保遵循正确的配置、以便器件处于正常运行状态、而不处于复位状态。  

    如果任何引脚配置为仅模式、则引脚状态对于器件运行无关紧要。  

    由于我不知道您具有哪些引脚功能 和引脚极性配置、因此请参阅数据表中的图表:

    另一种可能、编程所需的最小 VSYS 恰好为 3.3V、与输入电压电平相同。
    是否可以略微增加电路板的电源电压、看看这是否会对该过程产生任何影响?

    尝试上述操作后、如果您有任何更新、请告知我。  

    此致、  
    Sarah

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

    嗨、Sarah

    您好、Sarah:

    感谢您的指导。

    我已经查看了当前正在编程的 TPS65219 NVM 配置。 相关设置包括:

    • MFP_1_CONFIG = 0x41
    • MFP_2_CONFIG = 0x01

    请你澄清以下几点:

    1. 根据这些设置、 MODE/STBY 引脚是否必须保持高电平、以确保器件 在编程后验证过程中保持 ACTIVE 模式?
    2. 如果 NVM 数据文件包含与 STBYRESET 模式相关的配置、那么 在启动编程序列之前、是否需要将 MODE/STBY 和/或 MODE/RESET 引脚驱动至特定的逻辑电平?
    3. MODE/STBY 配置为 STBY 引脚时、是否有建议方法在 NVM 验证期间强制器件进入 ACTIVE 模式?

    我们使用更高的 VSYS 电压进行了测试、并将电源 电压从 3.3V 增加到 5.5V。但是、问题保持不变、并且我们在编程后仍然无法读取寄存器。

    您能否告知在这种情况下是否应检查任何其他信号、设备状态或硬件状况?

    感谢您的支持。

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

    您好、Sarah:

    感谢您对此问题的支持和指导。

    我们已获得客户批准、将 TPS6521905WRHBRQ1 编程数据文件与 TI 共享以进行调试。 请查找所附的数据文件。

    您能否查看随附的数据文件、并告诉我们您是否确定了可能导致此行为的任何配置设置?


    注意: 附加数据文件中显示的寄存器地址以 十进制格式而不是十六进制格式表示。 例如、地址 52 对应于寄存器 0x34

    我们期待您的反馈。

    e2e.ti.com/.../b2300_5F00_tps6521905_2D00_q1_5F00_regs.csv

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

    尊敬的 Divya:  

    感谢您共享编程文件。

    我看不到与文件中的任何设置有任何冲突、
    使用我们的 TPS65219EVM-SKT 和 TPS65219 GUI 设置、我能够使用相关设置成功地对空白单元进行编程。
    我能够在地址 0x30 上电并回读。

    这表明 这可能是硬件设置的问题、而不是文件本身的问题。

    关于 MODE/STBY 引脚、  

    1、是的、MODE/STBY 应在编程后验证过程中保持高电平。  

    2.编程序列前无需特定的配置/引脚状态。 忽略此参数。

    只需确保满足最低硬件要求:

    3. 将该引脚上拉至高电平、使该引脚处于工作状态、而不是 STBY 状态。

    我注意到 LDO4 在运行状态下被禁用、在待机状态下被启用。
    这是有意的吗?  在您的原理图中、LDO4 输出是否使用电容器进行端接?

    您是否能够对 0x34 寄存器进行间歇性读取、从而找出该过程失败的位置?

    我主要关注此步骤、因为在我们执行编程后验证之前、初始编程似乎失败。  

    此致、  
    Sarah