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.

[参考译文] SN65DSI84:芯片设置/芯片存储器映射回读中的 I2C NACK

Guru**** 2924030 points

Other Parts Discussed in Thread: USB2ANY

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1628895/sn65dsi84-i2c-nacks-in-chip-setup-chip-mem-map-readback

器件型号: SN65DSI84
主题中讨论的其他器件: USB2ANY

您好、

我们在我们的设计中使用 IC SN65DSI84ZXHR、以便从 Radxa CM5 SOM (RK358S2) 的 DSI 端口驱动 1920 x 1080 屏幕。 我们设计了主板、并在上面使用了 Radxa 的 SOM。

在 TI 芯片的初始化期间、有许多情况下会收到 I2C NACK(SN65DSI84ZXHR 不会确认写入事务的第一个字节或读回事务的第一个字节)。 我们修改了 TI 芯片的主线 Linux 驱动程序、以便在出现 NACK 时进行重试、这可以缓解问题。

一旦芯片成功初始化(在许多情况下会发生这种情况)、当执行 i2cdump 时、我们就会从芯片得到大量的读取 NACK(即,芯片不会确认其 i2c 地址,即事务的第一个字节)。  

不管我们修复了什么问题(当芯片配置的 I2C 事务中有 NACK 时添加 I2C 重试)、这种情况对我们来说仍然是不利的、因为有时初始化根本不会发生(许多 NACK、LP11 状态仅持续一段时间,我们无法控制)

从硬件的角度来看、电源线和 i2c 总线运行正常。 在该特定的 I2C 总线中、我们只有 TI 芯片。  

为什么您期望 SN65DSI84ZXHR 具有这样的行为? 我们的设计可能出现什么问题?

在图片中:具有许多“第一个字节 NACK “(XX 中的字节)的 i2cdump 示例。

i2cdump.png

在下图中:芯片初始化序列的跟踪(30fps 时的 1920 x 1080,因此我们可以捕获时钟)。

capture-init-seq-TI.png

在以下文件中:I2C 配置序列。 在这种情况下、只捕获了一个 NACK(驱动程序会以后缀重试)

跟踪 I2C 详细信息 — 1.1.9.pdf 

谢谢!

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

    尊敬的 Sebastian:

    我正在研究这个问题,我明天会回来给你。

    此致、

    Cameron

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

    添加新信息:

    我们还确认、在通过 I2C 写入事务设置芯片时、即使它们在 DSI 的 LP11 期间发生、我们也会得到第一个字节的 NACK(i、e、芯片不会跟踪其 I2C 地址) 。 在 pic 中、LA 的最后一个通道中带有 EN、然后 I2C 总线带有写入事务。 4 个 NACK、每 10 个事务。

     

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

    感谢卡梅伦,请让我们知道,一旦你有什么(因为我们是压力).

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

    尊敬的 Sebastian:

    我对您使用的设置有几个问题:

    1. 这是定制电路板还是 EVM?
    2. 您使用的电源电压是多少?
    3. 您在 SCL 和 SDA 线路上使用了哪些上拉电阻器?
    4. 您尝试使用的 I2C 速度是多少?
    5. 您能给我发送*。Sal 文件、其中包含您从 Logic 2 程序捕获的 I2C 事务吗?

    此致、

    Cameron

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

    尊敬的 Cameron:

    1.定制电路板。 电桥的原理图、此处为:

    2.该子系统由 1v8 LDO 供电。 它是 RK806-1 PMIC 的输出、并且 PMIC 安装在 CM5(位于 Radxa 的计算机模块中)中。  
    3. 4k7 上拉至相同的 1V8。 今天我会用更强的 2k2 进行测试、但我用示波器进行了跟踪、虽然有 RC、但看起来很好。 这是该 I2C 总线中的唯一元件
    4. 100kbps
    5.我今天会在这里发布这个的 SAL 和其他的(用 i2cdump 等突发读取)

    谢谢!
    问题:芯片是否应该无人应答 I2C Addr 调用?

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

    尊敬的 Sebastian:

    感谢您提供额外信息。  

    问题:芯片是否应该无人应答 I2C Addr 调用?

    否、它应遵循标准 I2C 协议。

    [quote userid=“691059" url="“ url="~“~/support/interface-group/interface/f/interface-forum/1628895/sn65dsi84-i2c-nacks-in-chip-setup-chip-mem-map-readback/6283045 该子系统由 1v8 LDO 供电。 它是 RK806-1 PMIC 的输出、并且 PMIC 安装在 CM5(位于 Radxa 的计算机模块中)中。  
    3. 4k7 上拉至相同的 1V8。 今天我会用更强的 2k2 进行测试、但我用示波器进行了跟踪、虽然有 RC、但看起来很好。 这是该 I2C 总线中的唯一元件
    4. 100kbps
    5.今天我将在这里发布这个的 SAL 和其他的(用 i2cdump 等突发读取)[/报价]

    这一切看起来都很好、准备好后、我将查看 SAL 文件。  

    我还有一个问题、您在尝试设置读取时使用的地址是什么? 我在您的原理图中看到、您将 ADDR 引脚接地、因此这会将器件设置为具有 8 位 I2C 地址(用于写入)和 0x59(用于读取)模式。 您是否在读取和写入之间更改了地址?

    此致、

    Cameron

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

    尊敬的 Cameron:

    是的、我们使用 0x58/0x59。 只是为了澄清,这并不是我们根本不能读取和写入,我们在大约 0.5%的事务中有问题(但大多数都是可以的,读和写)


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

    尊敬的 Sebastian:

    我的理解是,这是一个很大的百分比的交易获得了 NAK'ed. 这是仅在一个板上发生、还是在多个板上重现?

    此致、

    Cameron

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

    尊敬的 Cameron:  

    在多个电路板中都会发生这种情况。

    在附加的顺序中、DSI84 芯片有 10 个重新初始化

    总线中总共有 872 个 I2C 事务/主机、调用 DSI84

    在这 872 个地址调用中、有 9 个未响应的调用(即主机不确认 I2C 调用)

    *信号完整性良好
    *在大多数情况下,上一个事务和否定的事务之间有很好的间距
    *总线中只有一个设备
    *它发生在不同的寄存器,在初始化的不同部分。

    最初我们担心的是主线 Linux 驱动程序没有执行重新传输、因此我们在字段中出现空白屏幕(无法初始化)
    我们修复了驱动程序、现在对 DSI84 的每个 i2c 设置都有一个回读来验证、并且还会在收到 NACK 时重新传输

    我们仍然担心的是、I2C 总线 100 次否定确认的事务中有 1 次是一个很大的不合理数字。 我们认为现场有机器、甚至可能会变得更糟。 因此我们需要了解为什么会发生这种情况。

    请查看随附的 10 次重新初始化的 SAL。
    以及该 SAL 捕获的 csv

    在 SAL 中、NACK 在 CSV/次行中:
    第 633 行:12.87952 秒
    第 665 行:12.88811 秒
    Row 2012: 27.08261 s
    第 2066 行:27.09671 秒
    第 2105 行:27.10599 秒
    第 2283 行:27.15259 秒
    第 2981 行:43.92724 秒
    第 3383 行:50.61638 秒
    第 3423 行:50.63 秒


    谢谢、祝您周末愉快。

    更新:系统不允许我上传 SAL 文件、我可以发送电子邮件给您吗?

    e2e.ti.com/.../10_5F00_DSI84_5F00_reinits.csv

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

    尊敬的 Sebastian:  

    我的电子邮件是 c-hoholik-carlson@ti.com、您可以通过电子邮件向我发送.Sal 文件。 也许把它放在一个 zip 文件将允许您上传? 当然不完全是。  

    感谢您提供的额外信息、这绝对是一个合理的问题。 获得捕获结果后、我将回顾它们并确定正在进行的操作。  

    此致、

    Cameron

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

    尊敬的 Sebastian:

    我收到了包含 Sal 文件的电子邮件。 对于后续步骤、我们能否查看 I2C 总线的上升/下降时间和设置/保持时间? 我想消除 I2C 配置具有满足数据表要求的边界性、导致很少发生事务失败的情况。

    此致、

    Cameron

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

    尊敬的 Cameron:  

    感谢您的跟进!

    在下面添加 2 个示波器截图、将回答这些问题。 总线以 100kbps 的速率运行、存在 1us 的 TR、tf 可以忽略不计。

    数据转换在 0 态下时钟的一半发生、最坏情况的 T_setup 为 2us。 T_HOLD > 4us

    我还使用 2K2 上拉电阻进行了一些测试(我在电路板的 BOM 中有 4k7)、  由于改进的 T_r、我应该给我更好的 TR 和 T_setup(我没有使用该情况的范围进行测量)、我得到了类似的 NACK 统计数据(即每 100 或 200 次事务 1 次)

    第一个迹线中 SDA 中非常短的脉冲是 TI 芯片下拉线路以确认事务(如果存在 ACK、如所示、在 99%至 99.5%的情况下、确认速度非常快。

    谢谢!

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

    尊敬的 Sebastian:

    感谢您的测试和示波器屏幕截图、这很有帮助。 我想看看上升时间缩短时的行为是否有些奇怪、您是否考虑使用具有较低上拉电阻值的示波器? 根据 I2C 规范、以 100kHz 的频率运行总线时、最大上升时间为 1000ns 或 1us。 因此、理想情况下、降低电阻和上升时间可以确保它始终低于最大值并提高 NACK 频率。  

    此外、是否有您可以访问的单独 I2C 控制器? 我们通常将 Aardvark 或 USB2ANY 与 EVM 一起使用、我想尝试使用不同的控制器、以确保问题与 SoC 或其 I2C 驱动程序无关。  

    此致、

    Cameron

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

    尊敬的 Cameron:

    再次感谢您的答复。 我将跟踪它。 还会得到不同的 i2c 主器件来驱动芯片。 在此注释中、我为 DSI84 构建了单独的板(如 Eval、正如一个 TI 使用 DSI83)。 我也会得到该板以及当前 SOC 等的布线。

    让我们获取所有组合。 我要花一点时间、但我会尽快更新。

    谢谢

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

    尊敬的 Sebastian:

    这听起来不错、如果您在此期间有任何问题、请告诉我。

    此致、

    Cameron