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.

[参考译文] BEAGLEBK:I2C 问题

Guru**** 2609775 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/654550/beaglebk-i2c-issue

器件型号:BEAGLEBK

大家好、我使用 BeagleBone Black (运行 Processor SDK 4.1)通过 I2C 使用 BBB 的内置接头与 IC 进行通信。  我使用的是 I2C 总线2。  我一直在尝试与 IC 进行通信、使用通用 Python I2C 模块、过去使用同一个 IC (尽管在 Raspberry Pi 上)对我来说很有用。  BBB 在 I2C 写入命令时始终失败。  我还注意到在使用 i2cdetect -y 2时会发生这种情况、这会导致:

"错误:无法在此总线上使用 SMBus 快速写入命令"

i2cset -r 2 0x0F 0x3E 导致:

"警告-数据不匹配-写入0x3E、读回0x22"、其中0x22是本应从 IC 发回的正确值。

我有点困惑、i2cset 意味着 I2C 总线可以正常工作、但已知在其他机器上工作的脚本 本身不使用第三方 python 模块(源代码在这里)、似乎不起作用。

关于 BBB 上的 I2C 总线、我应该知道什么特别的吗?  速度限制?  我是否应该在器件树中将 IC 添加为节点?  请提供任何帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Tom、

    检查器件树中是否存在以下 I2C 引脚多路复用器配置。 如果未收到、请添加:

    i2c1_pins:pinmux_i2c2_pins{
    pinctrl-single、pins =<
    AM33XX_IOPAD (0x978、PIN_INPUT_PULLUP | MUX_MODE2)/* i2c2_sda *
    / AM33XX_IOPAD (0x97c、PIN_INPUT_PULLUP | MUX_MODE2
    );
    * i2C_MODE2 >}*/ i2* 
    i2c2:I2C@4819c000{
    compatible ="ti、OMAP4-i2c";
    #address-cells =<1>;
    #size-cells =<0>;
    ti、hwmods ="i2c3";
    reg =<0x4819c000 0x1000>;
    中断=<30>;
    状态="禁用";
    }; 

    BR

    Tsvetolin Shulev

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

    我发现我的 I2C-2 pinctrl 与上面提到的那个略有不同:

    i2c2_pins:pinmux_i2c2_pins{
    pinctrl-single、pins =<
    AM33XX_IOPAD (0x978、PIN_INPUT_PULLUP | MUX_MODE3)/* uart1_CTSN.i2c2_sda */
    AM33XX_IOPAD (0x97c、PIN_MODE3
    );
    * uarts1_u_2 * uartsn.u_u_PUBL_MODE1;* u_PUBL_PUBL_MODON_PUBL_PUBL_N * 

    但是、根据我 在这里可以知 MUX_MODE3正确地将这些引脚(P19、P20)设置为 I2C。  

    我应该尝试不同的总线吗?  I2C_1将是这方面的主要候选器件。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正确、MUX_MODE3是您所使用引脚(UART1_CTSN)的正确模式。 mode2适用于 SPI0_SCLK 引脚。
    数据表中的表4-1
    www.ti.com/.../am3358.pdf
    您可以尝试使用不同的总线、如 I2C-1、但要检查连接线。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在我发布之前的回复后、我继续按照相同的方式配置 I2C1、但不幸的是、同一问题仍然存在。 我无法在总线1或2上运行 i2cdetect、但我可以使用 i2cset 写入总线、但无法使用 i2cset 从总线中读取。