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.

[参考译文] TPS25751:TPS25751 连接到闪存的 EEPROM、但是否正常工作?

Guru**** 2826855 points

Other Parts Discussed in Thread: TPS25751

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1618176/tps25751-tps25751-connected-to-flashed-eeprom-but-doesn-t-work

器件型号: TPS25751
主题中讨论的其他器件:USB-PD-CHG-EVM –01

我正在设计一个使用 TPS25751 作为 DRP 的原型、用于为连接到集线器上行端口的手机充电。 我的设计主要基于 USB-PD-CHG-EVM –01 和另一个评估板、其中 NLA 带有 CAT24C256 EEPROM、连接到“控制“I2C 端口。  

我根据自定义工具中的配置(完整二进制)生成了二进制文件、并使用 Raspberry Pi 进行刷写。 当闪存成功并且我可以读回数据时、TPS25751 不会在 VBUS 上输出电源、也不会像已编程那样运行。

我是否需要执行额外的步骤才能使部件“接受“二进制? 我只在文档中看到了寄存器和电气数据、但很明显我缺少了一些内容。

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

    您好:

    感谢您在 E2E 上联系我们。

    据我所知、您已将二进制文件刷写到 EEPROM 中、但您怀疑 TPS25751 的行为并非基于您创建的配置。 您能否为我提供与您正在使用的二进制文件等效的.JSON 文件?  

    此外、您也看不到从 VBUS 引脚到 Type-C 连接器的供电。 对于供电合约、请确保 VIN3V3 和 PP5V 上存在电压。 您能否提供测试设置?

    为确认正在将您的配置文件刷写到 EEPROM 中、我建议修改客户使用寄存器。 将新配置文件刷写到器件后、您可以读回客户使用的数据以确认 闪存是否成功。

    谢谢您、

    Katilynn

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

    很遗憾、我无法上传.json 文件 — 网站告诉我不允许使用文件类型。 我尝试过 UFP 和 DRP 但没有成功。 其他选项包括

    • 仅 3A 拉电流
    • USB 2.0
    • UFP
    • BC1.2 CDP
    • TI 供应商 ID
    • 0000 产品 ID
    • 没有其他选项

    我的测试设置包括一部 OnePlus 13 手机插入 USB-C 端口、并通过板载稳压器提供 5V 电压。 3.3V 开启并通过 LDO 正常工作。

    我已经验证 EEPROM 已从 0xFF 变为生成的 BIN 文件、因此我相信闪存是成功的。

    是否有办法与设备本身进行通信并检查问题?

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

    我使用了 TI PD 分析仪并看到重复出现的消息 — 不确定应该怎么做?

    1. 连接灌电流无 VBUS (CC1 引脚= 3p0A、CC2 引脚= RA) 10:56:58.334.114
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    要上传.JSON 文件 、请尝试将文件从文件资源管理器拖放到回复框中。 如果这仍然不起作用、 请从字段中复制并粘贴代码、然后在“回复“框中选择“插入->代码“、然后将信息粘贴到字段中。

    我看到您提到了 3A 电流、但电压要求是多少? 是否希望 仅提供 5V3A 供电、或者是否配置了其他供电 PDO?

    您从 PD 分析仪收到的消息表明 PD 控制器正在尝试 USB Type-C 电源连接、但未能这样做。 在将受电方连接至未连接 VBUS 后、您是否看到任何消息? 例如、下面的屏幕截图中显示 CC1/2 连接发生的第 1 行?

     VBUS、CC1/2、PP5V 和 Vin3V3 线路的示波器电压捕获对于我来说非常有帮助、可以完全了解您观察到的测试行为。 您能为我提供此范围日志吗?

    MCU 可以通过 I2C 目标线路与 PD 控制器通信、以便从 PD 器件读取和写入数据。 您能否读取模式寄存器 (0x03) 以查看 PD 控制器是否进入 APP 模式?

    谢谢您、

    Katilynn

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

    尊敬的 Kaitlynn:

    控制器模式寄存器的读数为'PTCH'。 我还提取了状态寄存器上的内容:

    寄存器 0x2D 数据(5 字节):
     十六进制:  0x34 0x03 0x62 0x02 0xC1  
     12 月:  52  3  98  2  193   
     ASCII:4  。   b     。    
     二进制文件:  00110100 00000011 01100010 00000010 11000001

    这似乎表明补丁标头错误、区域 0 无效、区域 1 无效和 区域 1 EEPROM 错误。

    我的理解是否正确?

    谢谢、

    Mike

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

    此外、这也是配置 JSON:


     “调查问卷“:{
      “设备“:“TPS25751、
      “toolBuildVersion":“:“1.1.1",“,</s>、
      “答案“:[
       空、
       8、
       4、
       4、
       0、
       1、
       3、
       1、
       1、
       1、
       1、
       空、
       0、
       0、
       0、
       0、
       0、
       0、
       0
      ]、
      “VendorID":“:“0000",“,</s>、
      “ProductID":“:“0000",“,</s>、
      “版本“:“1.0.0.2"</s>“
     }
    }

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

    事实证明、我们用于编写二进制文件的 eeprog 源代码中存在错误。 由于某种原因、指定地址“0"最终“最终会在数据流中添加一个额外的 0x00 字节。 指定“0x0000"可“可正常工作。 该端口未处于 APP 模式、并且正在为上游器件充电。

    状态寄存器现在如下所示:

    寄存器 0x2D 数据(5 字节):
     十六进制:  0x18 0x00 0xF0 0xA2 0xC1  
     12 月:  24  0  240 162 193   
     ASCII:。   。   。   。   。    
     二进制:  00011000 00000000 11110000 10100010 11000001

    这真的不符合我的期望 您能否确认我应该处理的字节序?

    谢谢、

    Mike

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

    另一个奇怪之处:如果在连接移动设备之前启动控制器、则以 APP 模式启动。

    但是、如果在控制器通电时已连接移动设备、则引导至 PTCH 模式:

    寄存器 0x03 数据(4 字节):
     十六进制:  0x50 0x54 0x43 0x48  
     12 月:  80  84  67  72   
     ASCII:P  T  C  H    
     箱:  01010000 01010100 01000011 01001000

    寄存器 0x2D 数据(5 字节):
     十六进制:  0x34 0x03 0x60 0x02 0xC1  
     12 月:  52  3  96  2  193   
     ASCII:4  。   `。     。    
     二进制文件:  00110100 00000011 01100000 00000010 11000001  

    如果您能就此提供一些澄清、以及对状态标志进行解码的正确方法、我将非常感激。

    谢谢、

    Mike

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

    Katilynn、

    我一直在使用 Mike 进行调试、我们注意到控制器由于 EEPROM 读取失败而没有将其置于 APP 模式。 我们可以非常肯定这是由于应用中的电源时序造成的、其中 5V 来自 TPS4030、PGOOD 启用 3.3V(和 EEPROM)。

    由于控制器会提供 VBUS、因此无法读取 EEPROM 是合理的。

    在数据表的图 9-4 中、好像有一个应用程序 PG 在 TPS25751 上驱动 GPIO? 在 PG 或类似信号可用之前、是否可以阻止 TPS25751 获取其配置?  

    是否有更适合此应用的不同 ADCIN 配置?

    谢谢您、

    Andrew

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

    Andrew、

    请在本周结束前给我答复。

    谢谢你

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

    您好、Andrew 和 Mike:

    感谢您耐心等待我对当前问题的答复。  

    根据上述响应、我收集到 PD 控制器由于 EEPROM 读取错误而未将其置于 APP 模式。 查看共享的引导标志寄存器数据、您可以更正  当 PD 控制器处于引导模式时指示补丁标头错误、区域 0 无效、区域 1 无效和区域 1 EEPROM 错误。 您能否分享 EEPROM 的原理图设计? 我想确认我们安装了正确的上拉电阻器。

    即使在电池电量耗尽或无电池模式下启动、器件仍可以从 EEPROM 加载其配置、此时 VBUS 在 VIN3V3 之前供电。  

    根据数据表、 “当 VIN_3V3 电源不可用且 VBUS 供电时、这称为电池电量耗尽启动条件。 在电池电量耗尽启动情况下、TPS25751 会打开 VIN_3V3 开关、直到主机通过 I2C 清除电池电量耗尽标志。 因此、在电池无电启动条件下以及电池无电标志被清除之前、TPS25751 由 VBUS 输入端以较高的电压供电。 从 VBUS 输入供电时、VBUS 上的电压通过 LDO 降压至 LDO_3V3。“ EEPROM 中存在配置后、无论由于 LDO3V3 仍处于  通电状态而处于上电序列、器件都可以加载该配置。

    谢谢您、

    Katilynn

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

    谢谢、 Katilynn。 现在、我们使控制器在由外部电源供电时成功加载到 APP 模式。

    我们现在正在尝试在仅 VBUS 供电的情况下从 EEPROM 加载配置、方法是通过 LDO_3V3 引脚使用 3.3V 电压为 EEPROM 供电、并使用 10k 电阻器将 EEPROM SDA 和 SCL 拉高。

    在该用例中、LDO_3V3 引脚的输出似乎在振荡、就像控制器不断复位一样。 间歇性地、我们可以从控制器的状态寄存器中读取以下状态:

    原始字节:  0x1C 0x00 0x32 0x02 0xC1
    二进制:   00011100 00000000 00110010 00000010 11000001

     补丁配置源      5(从 EEPROM 加载)     0(未加载配置)  
     存在 I2C EEPROM      1(检测到)          1(检测到)          
     电池电量耗尽标志       0(清除)            1(置为有效)          
     区域 0 EEPROM 错误    0(无)            0(无)            
     区域 1 EEPROM 错误    0(无)            0(无)            
     已尝试区域 0      1(是)             1(是)            
     已尝试区域 1      0(否)             0(否)             
     系统 TSD          0(清除)            0(清除)           
     区域 0 CRC 失败       0(通过)            0(通过)            
     区域 1 CRC 失败       0(通过)            0(通过)            
     补丁下载错误     0(无)            0(无)            
     补丁标头错误      0(无)            0(无)            
     区域 0 无效       0(有效)            0(有效)           
     区域 1 无效       0(有效)            0(有效)           
     修订 ID          0xC1 ()             0xC1 ()

    我们认为 EEPROM 读取可能消耗的电流对于 LDO_3V3 来说太大。 您能否确认为 EEPROM 供电确实是 LDO_3V3 输出的有效用例?

    谢谢、

    Mike

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

    在进行额外测试时、似乎通过 VBUS 为控制器供电、然后提供外部电源 (5V +3.3V) 会导致加载配置、但电池电量耗尽标志仍会生效:

     补丁配置源      5(从 EEPROM 加载)     5(从 EEPROM 加载)     
     存在 I2C EEPROM      1(检测到)          1(检测到)          
     电池电量耗尽标志       0(清除)            1(置为有效)          
     区域 0 EEPROM 错误    0(无)            0(无)            
     区域 1 EEPROM 错误    0(无)            0(无)            
     已尝试区域 0      1(是)             1(是)            
     已尝试区域 1      0(否)             0(否)             
     系统 TSD          0(清除)            0(清除)           
     区域 0 CRC 失败       0(通过)            0(通过)            
     区域 1 CRC 失败       0(通过)            0(通过)            
     补丁下载错误     0(无)            0(无)            
     补丁标头错误      0(无)            0(无)            
     区域 0 无效       0(有效)            0(有效)           
     区域 1 无效       0(有效)            0(有效)           
     修订 ID          0xC1 ()             0xC1 ()

    实际上、我们不希望在设置了电池电量耗尽标志的情况下启动控制器、或者在东部、当控制器看到外部电源时将其清除。

    目前、我们为 AlwaysEnableSink 绑定了 ADCIN1 和 ACDIN2 — 最初呈现一个接收器,然后加载配置。 但是、我们没有外部控制器。

    我们是否有方法可以清除电池电量耗尽标志、而无需使用外部控制器来写入 i2c?

    再次感谢、

    Mike

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

    您好 Mike:  

    请允许我有时间在一天结束前回复星期一。

    谢谢您、

    Katilynn

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

    您好 Mike:

    很高兴您能够 将配置加载到  EEPROM。

    我知道、 现在您需要在不使用 EC 的情况下清除电池无电标志、从而通知 PD 控制器执行此操作。 有一个输入 GPIO 映射事件可用于此目的。 请查看下面的屏幕截图。  

    在 Barrel_Jack_Event 的上升沿、将清除电池电量耗尽标志、且 UnconstrainedPower 设置为存在。

    谢谢您、

    Katilynn

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

    谢谢、Katilynn。 这应该能满足我们的需求。

    我假设我还应该启用 GPIO 引脚上的内部下拉电阻器?

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

    您好:

    建议启用内部下拉电阻、但这不是必需的。 它提供弱下拉、不会对输入信号的整体上拉产生显著影响。 但是、它有助于防止信号干扰导致的错误置为有效。

    我正在查看与我共享的配置文件、我将在明天结束时返回给您。

    谢谢您、

    Katilynn

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

    您好:

    最初、我认为我们讨论了该设计是 DRP。 您与我共享的配置具有在端口配置中配置的源状态机。 这种 配置是否有意进行?  

    我使用您提供的配置进行了我自己的测试、并观察到由于 AlwaysEnableSink 配置、从电池无电模式为 PD 控制器供电最初将充当 5V 受电方。 加载配置后、器件便知道不支持受电、并会禁用受电路径、从而导致  VBUS 电源丢失。

    您是否已使用 DRP 状态机完成测试?

    您能否共享 I2C 日志和 GPIO2 行为(其中显示 Barrel_Jack_Event 未清除电池电量耗尽标志)?

    谢谢您、

    Katilynn

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

    是的、这是用于为连接的器件充电的源配置、但它是相对于数据的上游端口(上游器件是主机)。

    由于我们选择了封装、并且这些引脚上没有测试焊盘、因此我们无法成功测试 GPIO 功能。 我们在下一次电路板迭代中实现此目的。

    我们将在收到新电路板后确认桶形插孔事件的功能、谢谢。

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

    您好、Michael、

    我已经注意到了供电配置。  

      当新电路板到货时、请随时联系以获得有关桶形插孔事件功能的支持。

    谢谢您、

    Katilynn