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.

[参考译文] TMS320F280037C-Q1:F280037C I2C-B:SCL 正在切换、但 SDA 卡在高电平–逻辑分析仪上没有起始地址或地址

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1607637/tms320f280037c-q1-f280037c-i2c-b-scl-toggling-but-sda-stuck-high-no-start-or-address-on-logic-analyzer

器件型号: TMS320F280037C-Q1

尊敬的团队:

我正在使用 F280037C 开发定制的无人机电池充电器板、并尝试启动 I2C-B 以与电池电芯平衡器通信。

我从 SDK 示例 i2c_ex4_eeprom_polling.c 开始、在轮询模式下使用 driverlib。

硬件详细信息:
- MCU:F280037C
- I2C 实例:I2C-B
-使用的引脚:GPIO14 (SDA)、GPIO15 (SCL)
-外部上拉: 10K 欧姆至 3.3V 在 SDA 和 SCL
-逻辑分析仪直接连接到 SDA 和 SCL

软件详细信息:
- I2CB_BASE 无处不在
- GPIO 多路复用器配置为 I2C-B
- GPIO 方向设置为输入上拉
- I2C 初始化为 100kHz、7 位寻址
-目标地址设置为 0x50

观察到的行为:
- SCL 连续切换
- SDA 始终保持高电平
-未观察到启动条件
- SDA 上没有地址或数据
-在 I2C 总线扫描期间也有同样的行为

我已验证的内容:
-正确的 I2C-B 引脚多路复用器(非 I2C-A )
-正确的 EEPROM 地址
-存在外部上拉
- GPIO14 和 GPIO15 不被任何其他外设使用
-即使在 EEPROM 断开连接的情况下,结果也是一样的

问题:
1.即使 SDA 引脚多路复用器不正确、I2C-B 也可以生成 SCL 时钟吗?
2. F280037C 上的 I2C 是否需要任何额外的 GPIO 配置?
GPIO14 和 GPIO15 上的 I2C-B 是否存在已知问题?
是否为定制电路板推荐了最小 I2C 启动示例?

附录了逻辑分析仪捕获结果和原理图。

提前感谢您的支持。
此致、
Prashanth image.png

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

    尊敬的 Prashanth:  

    是否可以共享您用于生成上述波形的应用代码? 这将有助于紧固调试过程。  
    图像中的 CLK 波形看起来并不一致、这是预期的还是错误?

    此致、  
    Pranav Siddappa.

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

    尊敬的先生:

    感谢您的答复

    抱歉 它实际上是 SCL 它对配置没有响应。

    我想分享有关上 I2C-B 问题的更多调试详细信息 F280037C

    观察到的行为:

    • 配置 I2C-B GPIO14 (SDA) GPIO15 (SCL)

    • 在逻辑分析仪上:

      • SDA 切换

      • SCL 始终保持高电平 (无时钟脉冲)

    • 在 I2C-B 上未观察到启动条件或地址阶段

    执行的 GPIO 级测试:
    为了排除 I2C 配置问题、我将两个引脚配置为正常 GPIO 输出、并与板载 LED 一起循环切换它们:

    GPIO_togglePin(LED_GPIO);
    GPIO_togglePin(14); // SDA
    GPIO_togglePin(15); // SCL
    DEVICE_DELAY_US(1000000);

    结果:

    • LED 正确切换

    • GPIO14 (SDA) 正确切换

    • GPIO15 (SCL) 不切换并保持高电平 (即使配置为 GPIO 时也是如此)

    逻辑分析仪捕获结果确认 GPIO15 不会改变状态、而 GPIO14 会改变状态。

    到目前为止的结论:

    • 这似乎不是 I2C 驱动程序或软件问题

    • GPIO15 似乎是 被引脚功能或内部硬件阻止/覆盖

    • I2C-A (GPIO26/27) 在具有相同代码的同一器件上正常工作

    请求:

    • GPIO15 在内部保留或受限 F280037C 上的(引导,调试,HIC 或安全功能)?

    • 释放 GPIO15 以使用输出/I2C-B SCL 时、是否需要任何额外的寄存器(除了 GPIO 多路复用器和方向之外)?

    我将在下面添加相关的源代码以供参考。

    感谢您的 support.e2e.ti.com/.../i2c_5F00_ex4_5F00_eeprom_5F00_polling.c

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

    尊敬的 Prashanth:

    您说您正在使用定制电路板、能否验证您是否已将正确的 GPIO15 路由到您在硬件中采样的内容? GPIO15 没有特殊注意事项、因此如果软件与其他 GPIO 配合使用、这会让我相信这可能是一个硬件问题。 您能否检查电路板原理图并验证引脚?

    此致、

    彼得