工具/软件:
尊敬的先生:
我们想使用 i2c over aux 来读取和写入面板,我已经尝试启用 IOA(直接模式)如下代码,但我不知道如何通过 sn65dsi 驱动程序读取和写入面板。请告诉我如何为面板执行 i2c 读取/写入吗?
启用 IOA 代码:


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.
工具/软件:
尊敬的先生:
我们想使用 i2c over aux 来读取和写入面板,我已经尝试启用 IOA(直接模式)如下代码,但我不知道如何通过 sn65dsi 驱动程序读取和写入面板。请告诉我如何为面板执行 i2c 读取/写入吗?
启用 IOA 代码:


嗨、Haibin、
它是在客户的电路板还是 TI EVM 上进行了测试? 客户是否在此电路板上提供了任何有关 I2C over AUX 的信息?
前面的 E2E 提供了一些有关使用 Aardvark 进行辅助通信的信息: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/949449/sn65dsi86-i2c-over-aux-direct-method
此致、
Ikram
嗨、Haibin、
该脚本显示正在读取 EDID。 0x2D 是 DSI 桥的地址、0xA1写入寄存器0x60。 然后可以读取地址0x50的 EDID。 在最后一行中、从 EDID 读取256个字节。
该脚本用于 Aardvark I2C 适配器。 请将语法更改为驱动程序的语法、并以相同的方式读取 EDID。
======= 启用 I2C_ADDR_CLAIM1=====
60 A1 />
======= 写入 EDID 基址00 =====
00 />
======= 读取256字节的 EEID=======
00 />
此致、
Ikram
尊敬的 Ikram:
我已经尝试了下面的代码,但我们无法获得 EDID,您能检查下面的代码(直接方法和间接方法)吗?
谢谢
void i2c_over_aux_get_EDID (结构 i2c_client *客户端)
这是什么步骤? 器件地址为0x2D、EDID 目标地址为0x50。 读取 EDID 的过程是 从 目标地址0x50 (EDID)的起始寄存器0x00读取到0xFF。
- Ikram
尊敬的 Ikram:
这个代码可能是错误的,因为我们不能完全理解脚本。
您能否检查以下代码(直接方法)是否正确?
sn65dsi86_write (client、EDP_I2C_ADDR、0x60、0xA1);
//读取 EDID
嗨、Haibin、
您之前提到过直接方法是有效的。 它是否持续运行?
SoC/source/GPU 数据表中应该提到是否支持 I2C 上的时钟延展。
对于间接方法、请执行以下操作:
1.先清除寄存器0xF4。 写入寄存器0xF4 = 0xFF
2.确保0xF4被清零:读取寄存器0xF4
3.通过写入以下内容对 AUX_CMD = 0x4进行编程:
-寄存器0x78 = 0x40
-寄存器0x76 = 0x50
-寄存器0x77 = 0x0
4、发送、通过写入寄存器0x78 = 0x41
5.确保设置 SEND_INT 且没有错误。 读取寄存器0xF4
6.确保发送位被清除。 读取寄存器0x78
我附加了上一个线程中的以下脚本、用于 Aadvark 适配器的间接方法步骤。 请检查一下是否正常工作、然后继续执行其余步骤。
如果直接方法有效、我们仍然建议使用它来简化步骤。
此致、
Ikram
======= 清除寄存器0xF4======
F4 FF />
======= 确保寄存器0xF4被清除======
F4. />
00 />
======= 对 AUX_CMD=0x4====进行编程
78 40 />
76 50 />
77 00 />
======= send=======
78 41. />
======= 确保设置了 SEND_INT 且没有错误=====
F4. />
00 />
======= 确保清除 SEND 位=====
78 />
00 />
使用 I2C 分析器、寄存器0xF4和0x78均被正确读回。
嗨、Haibin、
这两条线路用于读取操作。 它从从从0x00开始的地址0x50开始读取、并从256个字节开始读取。 对于读取 I2C、它有两个步骤、即写入和读取操作。
根据系统的发送方式、您只需从地址中读取并在一行操作中注册即可。
======= 写入 EDID 基址00 =====
00 />
======= 读取256字节的 EEID=======
00 />
此致、
Ikram
您好 Ikram、
当我们读取 NG 器件的 EDID 时遇到 i2c 错误、并且发现器件没有 ACK。 我们捕捉到波形、发现与普通设备相比、NG 设备上的 AUX P/N 已交换。您能告诉我们如何通过设置 DSI86的寄存器来交换 AUXP 和 AUXN 吗?
另外、如您所知、我们可以在一个项目上获得 EDID、但无法在另一个项目上获得 EDID、您可以采用任何调试方法吗?
我们有时发现0xF4=9和0x78发送位无法清零。
谢谢
嗨、Haibin、
1.您能否分享所捕获的波形,以及它们在工作板和不工作板之间的区别? 还请提供原理图、包括整个链接中的 AUX 通道。 请检查此设备(源端)和接收端(显示/接收端)的 AUX 通道组件和连接。
AUX 连接 应根据拉电流和灌电流原理图上的 DP/eDP 实现进行设置。 

2.在不工作的板上,当前出现的问题是什么?
所有电路板的构建是否相同、或者是否存在任何差异、例如不同的显示、不同的 eDP/DP 接收端等?
SN65DSI86只能交换数据通道的极性、而不能交换辅助通道。 因此没有寄存器设置来 反转极性。
此致、
Ikram