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.

[参考译文] TPS65987D:I2C3作为主器件不工作

Guru**** 2589265 points
Other Parts Discussed in Thread: TIDA-050047, BQ25792

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working

器件型号:TPS65987D
主题中讨论的其他器件:BQ25703TPS65987TIDA-050047BQ25792

我已经制作了一个带有 TPS65987的测试板、用于与 BQ25703通信。 我已阅读 SLVAE18 PDF、在表1中、建议使用 I2C3将 TPS65987连接到充电器等

我的测试板可以通过跳线选择哪个 I2C 端口可用作主设备、从而:

蓝色端口会连接到 Aardvark 接头上的 I2C 引脚。

当我使用时、将 I2C3配置为主器件-在 PD_SDA 或时钟 PD_SCL 上无数据

如果我使用 I2C1 -我获取数据和时钟。 我使用 Battery Management Studio 验证这些数据、以读取 BQ25703上的寄存器。

我检查 GPIO 5和6的 GPIO 设置、它们配置为 I2C 引脚。

理想情况下、我需要使用 I2C1连接到嵌入式控制器(从该设计开始)。

您能否告知我为何无法使用 I2C3与 BQ25703进行通信、以及为什么没有数据? 请找到随附的使用 I2C3的项目文件。

e2e.ti.com/.../Test_5F00_DRP_5F00_5_2D00_5.pjt

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

    尊敬的 Chris:

    您是否在电池电量耗尽模式下进行测试? 此外、根据您需要对电池充电器进行控制的内容、您必须输入 I2C 主设备事件表并确认器件的从设备地址正确。 我将查看项目文件、看看是否缺少任何内容。

    此外、如果您仅在寻找 PD +充电器、还可以查看使用 TPS25750D 和 BQ25792的 TIDA-050047。

    谢谢、

    哈里

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

    您好 Hari、

    感谢您提供该文件。 遗憾的是、我还需要替代模式(显示端口)、但另一方面、我肯定会使用它。 我使用 I2C1端口继续工作。

    我也有另一个问题。 我已配置事件表、以通过不同的功率协商来更改充电器的充电电流。 但是、当我将 USB-C 电源连接到电路板时、I2C 总线上没有通信告知充电器要使用的电流。

    Vbus 上的电压会根据我配置的合同发生变化、PD 控制器会在发生连接和断开事件时向充电器发送数据、但不会发送数据来配置充电电流。

    协商是否失败、因此这就是不发送电流数据的原因?

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

    尊敬的 Chris:

    项目文件看起来不错、但我认为您的所有 I2C 端口的原理图配置有时可能会相互冲突。 要确认、您有跳线、但在测试 I2C3端口时、您只连接了这些引脚的跳线、其他引脚断开连接、对吧? 我看到所有这些引脚都连接在一起、只有将它们分开的跳线、但看起来好像是连接了 I2C1、它有2个标签:I2C1_SCL/SDA 和 PD_SCL/SDA。

    我建议最好将所有 I2C 端口分开、并使用它们自己的专用电阻器、然后将它们上拉至 LDO_3V3。 EEPROM 连接到什么? 此外、我没有看到另一个方框图来显示您所连接的 PD 控制器引脚的其余部分。

    如果您看到一些 I2C 消息正在通过、但其他消息不是、我怀疑充电器上的某些默认设置可能会阻止 PD 控制器覆盖充电电流。 我将尝试查看充电器团队的某个人是否能提供帮助。

    如果您能够捕获 I2C 线路的一些示波器截图、这些示波器截图还有助于 PD 日志、您可以使用 Total Phase PD Analyzer 或类似工具进行捕获。

    谢谢、

    哈里

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

    您好 Hari、


    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3699964 #3699964"]要确认您有跳线、但在测试 I2C3端口时、您只连接了这些引脚的跳线、其他引脚断开连接、正确吗?

    是的、没错。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3699964 #3699964") EEPROM 连接到什么? 此外、我没有看到其他方框图来显示您所连接的 PD 控制器引脚中的其余部分。

    请参阅随附的:

    我删除了 R45、R43、C63、C61、并从 Q8的栅极添加了100k 到 GND。 但是、对于我的测试、我使用内部开关。

    如您所见、I2C1引脚始终连接到 Aardvark 连接器。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3699964 #3699964"]如果能够捕获 I2C 线路的一些示波器截图、这些示波器截图也有助于创建 PD 日志、您可以使用 Total Phase PD Analyzer 或类似工具来捕获这些日志。

    这是我使用的 USB-C 电源连接时的 PD 数据(请注意、我更改 了电压协议以协商15V 而不是9V):

    我获得的唯一 I2C 数据是仅当 I2C1跳线短接时。 以下是 POR 上的数据(希望您能够看到数据值):

    这里是连接接收设备时的一些 I2C 数据(接收设备连接 了一 个连接到10欧姆电阻器的 ZY12PDN)-因此它可以在协商成功后发送数据。

    以下是连接此灌电流器件时的 CC 数据:

    这里是 USB-C 电源断开时的数据、告诉 Bq25703返回 OTG 模式:

    我想 指出 的  是、SLVAE18中的说明需要更新以包含一个分离事件、从而将 BQ25703重置为 OTG 模式、因为我发现当您断开电源并连接灌电流时、灌电流不会接收任何功率。 我在 列表中添加了该事件、它工作正常、我能够在灌电流器件和拉电流器件之间进行切换。

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

    尊敬的 Chris:

    我将查看您提供的数据、谢谢。 此外、您是否还说过从这种转变到交换电源角色、您能够解决您原来的问题? 对于您提到的文档、是的、我们正在更新它、它将包含在下一个修订版中。

    谢谢、

    哈里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3701712 #3701712"]此外,您是否还说过从这一更改到交换电源角色,您可以解决您原来的问题?

    否、原始问题仍然存在。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3699964 #3699964"]我建议将所有 I2C 端口分开、并使用自己的专用电阻器、然后将它们上拉至 LDO_3V3。

    我已经修改了设计、使每个 I2C 端口上都有上拉电阻。 从 跳线7、8和9中删除链接现在、我能够通过应用定制工具使用调试功能。

    因此、我决定做一些实验、我有一个发展。

    我 从全局系统配置(0x27)中启用 I2C3作为主器件、并配置了 I2C 主器件配置(0x64)、以便从器件1主器件选择为 I2C3。

    然后、我重新刷写了 EEPROM、开始调试并查看了 I2C 主配置寄存器:

    它仍然声称使用 I2C1。 那么、为什么会发生这种情况呢?

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

    尊敬的 Chris:

    更改配置时、如何刷写 EEPROM? 您是否在 GUI 上使用了"Flash from Current Project"选项? 此外、当您重新刷新时、还需要对电路板进行下电上电以 加载新配置。  

    此外、您碰巧有 EVM 吗?

    谢谢、

    哈里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3703205 #3703205">更改配置时如何刷写 EEPROM? 您是否在 GUI 上使用了"Flash from Current Project"选项? 此外、当您重新刷新时、还需要对电路板进行下电上电以 加载新配置。  [/报价]

    我使用总相位中的 Aardvark 对其进行了刷写。 我 在 GUI 中使用了"flash from current project"选项。 我断开了电路板的所有电源(USB-C、连接到充电器的电池和 Aardvark 本身)、以进行下电上电并将新配置加载到控制器中。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3703205 #3703205"]此外、您是否碰巧拥有 EVM?

    否 我只能在查看它之后、没有简单/便宜的方法将它连接到我的设计中需要的另一个器件以验证兼容性、因此我制作了我的电路板。

    谢谢、

    Chris

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

    尊敬的 Chris:

    我将尝试与我的团队进行讨论、以了解问题可能是什么、并在下周向您提供一些反馈。  

    同时、我建议仔细检查您的原理图并将其与 TPS65987DEVM 原理图进行比较、该原理图可在 EVM 的用户指南中找到。

    谢谢、

    哈里

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

    尊敬的 Chris:

    我不确定是什么导致了这种行为。 您是否能够验证 PD 是否从闪存获取新配置而不是默认配置、或者 EEPROM 是否已正确刷写? 也许在项目配置中、您可以更改源功能、并在重新刷新和下电上电后检查 PD 日志是否与您的更改相匹配。

    另一种可能是布局问题。

    谢谢、

    哈里  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3711536 #3711536"]您是否能够验证 PD 是否从闪存而不是默认配置获得了新配置、或者 EEPROM 是否已正确刷写? 也许在项目配置中、您可以更改源功能、并在重新刷新和下电上电后检查 PD 日志是否与您的更改相匹配。[/quot]

    我可以看一下、但我非常有信心在不同的场合将电源电压能力从5V 更改为9V、更改为15V。

    我将项目导出为.bin 文件、上传到闪存、然后使用 aardvark 通过 总相位闪存中心软件读取 EEPROM 使用 bin 比较工具从配置工具和闪存中心读取 bin 文件。 我很快就会发布我的结果。

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

    请找到我从应用定制工具导出的文件以及我在 wards.e2e.ti.com/.../BIN-files-for-comparison.zip 之后从 SPI-Flash 中提取的文件

    我尝试比较了这些文件、但无法从中收集任何内容、因为我找不到将 SPI 闪存映射到 PD 控制器的信息。

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

    尊敬的 Chris:

    通过查看2个 bin 文件、我认为 EEPROM 未正确更新其内容。 如果并排查看这两个文件、您将在地址2000处看到数据不匹配。 因此、由于 EEPROM 不包含相同的数据、闪存编程可能在某个点失败。

    我认为电路板的原理图或布局中的某个位置可能会出现问题、从而导致 EEPROM 出现一些问题。  

    谢谢、

    哈里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3716680 #3716680"]如果并排查看两个文件,则会在地址2000中看到数据不匹配。 因此、由于 EEPROM 不包含相同的数据、闪存编程可能在某些时候失败。

    感谢您查看这些文件。 我稍后确实注意到了这一点、但不确定我是否正确解释了数据。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3716680 #3716680"]我认为电路板的原理图或布局中的某个位置可能会出现问题,从而导致 EEPROM 出现问题。

    我仍然对布局如何导致地址移位感到困惑。 当然、如果我的布局会造成干扰、它会干扰数据的所有方面、而不仅仅是将数据移动到不同的地址? 您可以就此提供任何建议吗?

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

    您好 Hari、

    我的电路上有一个逻辑分析仪、可以确认发送到 EEPROM 的数据是正确的、并且不会因布局而改变。 我也有另外两位工程师对此进行了总结、他们都认为这不是我的布局、不会导致地址移位。

    我想知道 I2C3端口被启用的存储器地址是什么、应该存在什么数据?

    我还将尝试使用总相位闪存工具将导出的 bin 文件从 GUI 加载到电路板。 我将发布我的调查结果。

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

    尊敬的 Chris:

    这可能是闪存问题、另一个团队成员发现某些 EEPROM 与 Aardvark 适配器不兼容。 对于 I2C3地址、对于 PD 控制器、它应该只是0x21、但我可以进行双次检查。  

    我还注意到、在寄存器0x62中、您已设置端口1编号和起始索引、您是否还可以尝试从端口1 索引和索引编号移至公共部分?

    谢谢、

    哈里

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

    我想它已经工作了一秒钟了,但事实证明它不是。 正如您所说、我更改了索引、现在充电器充电、但电流错误、我仍然无法在 I2C3端口上看到数据、因此我不知道这些数据是如何传输到充电器的。

    在调试模式下、仍在使用中报告端口 I2C1。 我已经尝试强制将正确的数据写入寄存器:

    我写入0x100000000000000000000000000000000006b

    它报告0x6b 写入成功、不正确。 似乎我需要在开始时设置1位、而不是设置它。 为什么它不设置该1位。

    此外、从该寄存器的原始视图中可以看到应该有20个字节、但我的计数为21、接口技术手册中的值为16、我真的很困惑!

    我开始对我们的设计的此解决方案失去信心。

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

    尊敬的 Chris:

    当您通过 I2C1使用调试模式时、这是否意味着您的设计中还连接了 I2C3跳线? 此外、您是否遵循数据表中显示的 I2C 消息格式? 如果您能够捕获从 PD 控制器打开之前开始的任何类型的 I2C 日志、我可以查看一下、因为它应该会发出这些初始 POR 命令。

    您是否还可以将此问题发布到标题中的电池充电器器件? 这样、电池充电器团队可以确保发送的数据是正确的、并查看是否可能需要在更改电流之前配置其他设置/寄存器。

    您也指的是哪个寄存器? I2C 主机事件表将不同于0x64寄存器。

    谢谢、

    哈里  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3723210 #3723210"]当您通过 I2C1使用调试模式时,这是否意味着 I2C3在您的设计中也连接了跳线?

    否 跳线从一组移至另一组。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3723210 #3723210"]此外,您是否遵循了 I2C 消息数据表中显示的格式?

    当然、这是由我通过 Aardvark 接口使用的软件来处理的。 您可以参考您所提到的部分吗?

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3723210 #3723210"]如果您能够捕获从 PD 控制器打开之前开始的任何类型的 I2C 日志,我可以查看它应该发出这些初始 POR 命令。

    我们来看看。

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3723210 #3723210"]您是否还可以将此问题发布到标题中的电池充电器器件?

    如何编辑此主题的标题?

    [引用 userid="413993" URL"~/support/interface-group/interface/f/interface-forum/1001039/tps65987d-i2c3-as-master-not-working/3723210 #3723210")您也指的是哪个寄存器? I2C 主设备事件表将不同于0x64寄存器。[/QUERP]

    0x64寄存器

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

    对于 I2C 部分、我指 的是数据表的第8.3.12.4节、其中包含一些写入/读取协议的图。

    当您获得 I2C 日志时、我将查看正在发生的情况。  

    对于标题、我只是想打开一个新的 e2e 线程、并在标题中包含您的充电器器件型号、因为这可能是另一个团队可以帮助解决的单独问题。

    谢谢、

    哈里