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.

[参考译文] PROCESSOR-SDK-AM62P:在 AM62P-LP EVM 上使用 SK-LCD1 触摸屏和外部 MPU6050 时、I2C 仲裁丢失

Guru**** 2556920 points
Other Parts Discussed in Thread: SK-LCD1, AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1568916/processor-sdk-am62p-i2c-arbitration-lost-when-using-sk-lcd1-touchscreen-and-external-mpu6050-on-am62p-lp-evm

器件型号:PROCESSOR-SDK-AM62P
主题中讨论的其他器件:SK-AM62P-LPSK-LCD1AM62P

工具/软件:

工具/软件:

您好:

我正在努力实现  AM62P-LP EVM  一方  SK-LCD1(具有电容式触控的 OLDI LCD)  互联。
我连接了一个  MPU6050(陀螺仪传感器,地址 0x68)  连接到扩展接头引脚 (27 = SDA、28 = SCL)。

我正在尝试使用以下命令访问 MPU6050:

i2cset -y 1 0x68 0x6B 0x00

但我收到以下错误:

[ 208.832185] omap_i2c 20000000.i2c: Arbitration lost
Error: Write failed
[ 211.865234] omap_i2c 20000000.i2c: controller timed out
[ 211.870509] tps6598x 1-003f: tps6598x_interrupt: failed to read version (-110)

观察到的情况:

  • 何时  SK-LCD1(带触摸屏)已连接 、出现 I2C 错误、无法访问 MPU6050。

  • 何时  SK-LCD1 断开连接 、我可以成功地与 MPU6050 通信。

其他信息:

  •  触摸屏控制器位于 0x41  系统资源。

  • 在中  该总线是 I2C0 、但在板上、它显示为  /dev/i2c-1

  • MPU6050 连接到  扩展接头引脚 27 (SDA) 和 28 (SCL)

查询:

  • SK-LCD1 触摸屏与 I2C 上的外部 MPU6050 之间是否存在总线冲突?

  • 或者是否有办法以正确的配置共享同一总线?

谢谢、
Manjunath

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

    你好、Manjunath、

    1) 您使用的是哪个版本的 SDK?

    2) 请分享在“不工作“系统中发生的错误,以及“工作“测试是什么样子。

    3) i2cdetect -y -r 的结果是什么

    4) 您是否对 Linux 器件树文件进行了任何修改?

    此致、

    Nick

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

    你好、Manjunath、

    要进行三重检查、您的输出“ i2cdetect -y -r 1“是打开面板电源吗? (如果没有,我会担心在地址 0x41 处使用外设的驱动器)

    我没有看到您之前报告的行为。 因此、下一步是收集更多有关情况的信息。

    附加测试

    您是否看到连接到该 I2C 总线的任何其他外设具有相同的行为?

    写入失败。 “那怎么办? 可以执行 i2cdump 等命令吗?

    查看 i2cset 返回的错误代码。 谷歌搜索向我显示了几种不同的方法来暴露错误代码和检查您的日志。

    此致、

    Nick

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

    您好、Nick、

    是的、要确认、 i2cdetect -y -r 1之前共享的输出 I 是使用获得的 SK-LCD1 面板已通电 。 时的器件 0x41是电容式触摸屏控制器。

    根据要求进行的附加测试:

    1. 同一 μ I²C 总线上的其他外设

    • 仅在尝试与通信时出现此问题 0x68面板+触摸屏处于活动状态时的外部 MPU6050

    1. 读取:

    • root@am62pxx-evm:~# i2cdump -y 1 0x68
      No size specified (using byte-data access)
           0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
      00: XX [  240.666696] omap_i2c 20000000.i2c: Arbitration lost
      XX [  243.702579] omap_i2c 20000000.i2c: controller timed out
      [  243.707902] tps6598x 1-003f: tps6598x_interrupt: failed to read version (-110)
      XX [  243.743402] omap_i2c 20000000.i2c: Arbitration lost
      XX [  246.774562] omap_i2c 20000000.i2c: controller timed out
      [  246.779844] tps6598x 1-003f: tps6598x_interrupt: failed to read event1
      XX [  246.814688] omap_i2c 20000000.i2c: Arbitration lost
      XX ^C[  249.846577] omap_i2c 20000000.i2c: controller timed out
      [  249.851924] tps6598x 1-003f: tps6598x_interrupt: failed to read version (-110)
      
      root@am62pxx-evm:~# 
      
    • 移除面板电源后、写入和读取操作都会成功、我可以从 MPU6050 获取有效的寄存器值。

    此致、

    Manjunath

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

    你好、Manjunath、

    好的、当面板+触摸屏处于活动状态时、您是否能够读写 0x38、0x51、0x52?

    “仲裁失败“让我怀疑总线上的硬件级正在发生一些事情 — 例如总线上的噪声,电压电平变得混乱,一些时间变得奇怪。  下一步可能是捕获 I2C 总线波形、以便我们能够准确地看到正在发生的情况。

    此致、

    Nick

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

    您好、Nick、

    我能够读取 0x51 EEPROM 数据  

    root@am62pxx-evm:~# i2cdump -y 1 0x51 b
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 55 fe ff ff ff ff ff ff ff ff ff ff ff ff ff ff    U?..............
    10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    root@am62pxx-evm:~# 
    

    也是 0x38

    root@am62pxx-evm:~# i2cdump -y 1 0x38 b
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 04 04 04 04 04 10 08 00 04 40 00 00 00 00 00 04    ???????.?@.....?
    10: 04 40 04 40 0b 0b 0b 0b 0b 0b 08 00 00 00 00 00    ?@?@???????.....
    20: 01 31 00 00 00 00 08 0e 08 04 00 02 00 0c 31 2f    ?1....????.?.?1/
    30: 1d 1d 40 39 06 04 04 14 10 00 00 00 00 00 00 02    ??@9?????......?
    40: 04 04 04 09 00 00 00 31 1c 1c 40 04 00 00 1d 1d    ????...1??@?..??
    50: 06 06 07 06 00 01 00 02 25 0b 02 00 40 04 00 05    ????.?.?%??.@?.?
    60: 1d 1d 0c 01 14 00 00 00 00 04 00 09 3c 04 04 05    ?????....?.?<???
    70: 01 1a 08 1a 04 04 18 18 07 07 20 20 09 3f 1a 1a    ??????????  ????
    80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    root@am62pxx-evm:~#

    寄存器 0x52

    root@am62pxx-evm:~# i2cdump -y 1 0x52 b
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff    ................
    root@am62pxx-evm:~#

    0x68

    root@am62pxx-evm:~# i2cdump -y 1 0x68 b
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: XX [  988.921366] omap_i2c 20000000.i2c: Arbitration lost
    XX [  991.961074] omap_i2c 20000000.i2c: controller timed out
    [  991.966416] tps6598x 1-003f: tps6598x_interrupt: failed to read version (-110)
    XX [  992.001890] omap_i2c 20000000.i2c: Arbitration lost
    XX [  995.033059] omap_i2c 20000000.i2c: controller timed out
    [  995.038419] tps6598x 1-003f: tps6598x_interrupt: failed to read event1
    XX [  995.073245] omap_i2c 20000000.i2c: Arbitration lost
    XX [  998.105085] omap_i2c 20000000.i2c: controller timed out
    [  998.110367] tps6598x 1-003f: tps6598x_interrupt: failed to read version (-110)
    XX [  998.145884] omap_i2c 20000000.i2c: Arbitration lost
    XX ^C[ 1001.177080] omap_i2c 20000000.i2c: controller timed out
    [ 1001.182364] tps6598x 1-003f: tps6598x_interrupt: failed to read event1

    此致
    Manjunath

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

    你好、Manjunath、

    有意思。 因此 I2C 协议本身不会损坏、因此不是波形发生严重失真而导致所有外设无法使用的情况...

    如果我是您、我要采取的下一步是捕获波形。 您需要使用实际的示波器、而不是逻辑分析仪、因为可能会出现噪声/压摆率/等问题。

    首先、我要检查启用和禁用触摸屏时波形的整体形状。 波形的基本形状是否会发生变化? 例如压摆率、电压电平、噪声等?

    接下来、我将捕获当 AM62p 尝试向故障外设发送消息时发生的情况。 在启用和禁用触摸屏时、这看起来有什么不同?

    我正在将您的线程发送给一位团队成员、他更熟悉外设的硬件组件、用于下一个调试阶段。

    此致、

    Nick