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.

[参考译文] SN65DSI86:启用色条发生器

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1037973/sn65dsi86-enabling-color-bar-generator

器件型号:SN65DSI86

您好!


我正在使用 dsi86。 我正在尝试显示色条测试
因此、现在还没有使用来自 mipi 总线的视频。

DSI86使用 DSI 时钟。
时钟设置为460.2MHz。 我已使用范围对其进行了验证。
PLL 锁定、并保持锁定状态。
自协商成功。
但我看不到任何色条。 屏幕保持黑屏。

我使用 DSI 工具生成寄存器设置
我也手动检查了它们。

启动序列如下所示。
是否有任何想法、可能会出什么问题?

此时、芯片通过 i2c 启用并可见。

$ i2cdetect -y 2.
    0 1 2 3 4 5 6 7 8 9 A b c d e f
00:         ------------ ------------ ------
10:------------ ------------ ------------ --
20:------------ ------------ ---- 2c ------
30:------------ ------------ ------------ --
40:------------ ------------ ------------ --
50:---------- ------------ ------------ --
60:------------ ------------ ------------ --
70:------------ ------

#我们有一些需要设置的 GPIO 引脚。
#这些设置正确、因此 i2c 接口似乎正常。
$ i2cset -y 2 0x2C 0x5E 0x0C
$ i2cset -y 2 0x2C 0x5F 0x50

#复位寄存器
$ i2cset -y 2 0x2C 0x09 0x01
$ i2cset -y 2 0x2C 0x5A 0x00
$ i2cset -y 2 0x2C 0x0D 0x00
$ i2cset -y 2 0x2C 0x09 0x01

#选择时钟
# 3-1:100 - dsia clk、频率为460MHz
$ i2cset -y 2 0x2C 0x0A 0x09
$ i2cget -y 2 0x2C 0x0A
0x09

# DSI
#6-5:01 -单通道
# 4-3:00 - 4通道
$ i2cset -y 2 0x2C 0x10 0x26
$ i2cset -y 2 0x2C 0x11 0x00

# DSI 时钟范围
7:0:5C - 460.2MHz
$ i2cset -y 2 0x2C 0x12 0x5C
$ i2cset -y 2 0x2C 0x13 0x5C

#禁用增强型组帧并设置 ASSR
$ i2cset -y 2 0x2C 0x5A 0x00
# DP 颜色格式- 24bpp
$ i2cset -y 2 0x2C 0x5B 0x00

2条通道-禁用展频
$ i2cset -y 2 0x2C 0x93 0x24

#选择数据速率(我们需要2.7Gbps 才能在2条信道上执行1920*1080@60操作)
$ i2cset -y 2 0x2C 0x94 0x80

#设置分辨率(从 EDID 提取)
1920 * 1080
# Hori - FP:58 - SYNC:42 - BP:88
垂直#- FP: 8 -同步:14 - BP:16

$ i2cset -y 2 0x2C 0x20 0x80
$ i2cset -y 2 0x2C 0x21 0x07
$ i2cset -y 2 0x2C 0x24 0x38
$ i2cset -y 2 0x2C 0x25 0x04
$ i2cset -y 2 0x2C 0x2C 0x2a
$ i2cset -y 2 0x2C 0x2D 0x00
$ i2cset -y 2 0x2C 0x30 0x0E
$ i2cset -y 2 0x2C 0x31 0x00
$ i2cset -y 2 0x2C 0x34 0x58
$ i2cset -y 2 0x2C 0x36 0x10
$ i2cset -y 2 0x2C 0x38 0x3A
$ i2cset -y 2 0x2C 0x3A 0x08

#启用色条
$ i2cset -y 2 0x2C 0x3C 0x18

#启用 PLL
$ i2cset -y 2 0x2C 0x0D 0x01
#检查 PLL 是否已锁定-必须设置 MSB。
$ i2cget -y 2 0x2C 0x0A
0x89
#这返回0x89 -> PLL 已锁定。

#启动半自动链接
$ i2cset -y 2 0x2C 0x96 0x0A
$ i2cget -y 2 0x2C 0x96
0x01
#这将返回0x01 ->链路正常+切换到正常模式

# Enable video stream (#启用视频流)-禁用 ASSR 和增强组帧
$ i2cset -y 2 0x2C 0x5A 0x08

#之后转储寄存器
$ i2cdump -y 2 0x2C
    0 1 2 3 4 5 6 7 8 9 A b c d e f   0123456789abcdef
00:36 38 49 53 44 20 20 20 02 00 89 00 01 00   68ISD  ?..
10:26 00 5c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   和。\\n ...........
20:80 07 00 38 04 00 00 00 00 00 00 00 00 2a 00 00 00 00   ??..8?...... *。。
30:0E 00 00 58 00 10 00 3a 00 08 00 10 00 00 00 00   ?... X...?????...
40:09 43 00 00 80 00 3c 08 5e 04 82 00 1e 00 2a 00   »c.?.50:0E 00 80 07 38 04 20 00 40 E4 09 00 10 00 fc 50   ????8? @???P
60:A0 60 A4 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00   `
70:00 00 00 00 01 02 01 80 81 00 00 00 00 00 00 00 00 00…    ???? …
80:00 00 00 00 00 00 00 00 00 00 1f 7c f0 c1 07 1f 7c   … ?????|
90:F0 C1 07 64 80 00 01 04 00 00 00 00 00 00 00 00 00   ???d?.....
A0:01 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?..........
B0:04 78 AC 08 6c 9c 0c 5c 5c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c 0c   x??l????????
C0:3F 3f 0f 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 00    
E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    
F0:00 23 00 00 02 00 01 00 00 00 00 00 00 00 00 00 00 00   .#...??


我使用黑屏而不是色条的原因可能是什么?

此致、

环路2.

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

    环路2.

    请使用电子表格来生成 DSI86寄存器编程值、而不是 DSI 调谐器。 您可以在以下 e2e 链接 中找到电子表格:https://e2e.ti.com/support/interface-group/interface/f/interface-forum/945404/faq-sn65dsi86-how-do-i-programming-the-sn65dsi86-registers

    要禁用 ASSR、 请通过1k 至10k 电阻器将 TEST2引脚拉至1.8V。 一旦 TEST2为高电平、必须执行以下步骤:

    1.将0x07写入寄存器0xFF。 这将选择第7页。
    2.将0x01写入寄存器0x16。 这将使 ASSR_CONTROL 成为读取/写入。
    3.将0x00写入寄存器0xFF。 这将选择第0页。
    4、将0写入寄存器0x5A 的位1:0。 这将从 ASSR 变为标准 DP。

    谢谢

    David

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

    Hallo David、

    感谢您的回答。 电子表格不支持从 MIPI 时钟计时、因此我们必须调整计时设置。

    显然、我们的团队需要 ASSR、但这种情况的记录很差。

    是否有有关 ASSR 的其他信息?

    以下序列有什么作用?

    # enable ASSR on panel (本机辅助命令)
    i2cset -y 2 0x2C 0x64 0x01
    i2cset -y 2 0x2C 0x74 0x00
    i2cset -y 2 0x2C 0x75 0x01
    i2cset -y 2 0x2C 0x76 0x0A
    i2cset -y 2 0x2C 0x77 0x01
    i2cset -y 2 0x2C 0x78 0x81

    (由电子表格生成)

    这是我们当前的脚本:

    芯片组#启用
    (GPIO 设置)

    #芯片现已可见(2c)
    # i2cdetect -y 2.

    #将 GPIO 引脚3设置为高电平
    i2cset -y 2 0x2C 0x5E 0x0C
    i2cset -y 2 0x2C 0x5F 0x50

    #复位寄存器
    i2cset -y 2 0x2C 0x09 0x01

    #选择时钟
    # 3-1:100 - dsia clk、频率为460MHz
    i2cset -y 2 0x2C 0x0A 0x09
    i2cget -y 2 0x2C 0x0A

    # DSI
    #6-5:01 -单通道
    # 4-3:00 - 4通道
    i2cset -y 2 0x2C 0x10 0x26

    # DSI 时钟范围
    7:0:5C - 460.2MHz
    i2cset -y 2 0x2C 0x12 0x5C
    i2cset -y 2 0x2C 0x13 0x5C

    #选择数据速率(我们需要2.7Gbps 才能在2条信道上执行1920*1080@60操作)
    i2cset -y 2 0x2C 0x94 0x80

    ###启用 PLL
    i2cset -y 2 0x2C 0x0D 0x01
    #检查 PLL 是否已锁定-必须设置 MSB。
    i2cget -y 2 0x2C 0x0A
    #这返回0x89 -> PLL =已锁定。

    # enable ASSR on panel (本机辅助命令)
    i2cset -y 2 0x2C 0x64 0x01
    i2cset -y 2 0x2C 0x74 0x00
    i2cset -y 2 0x2C 0x75 0x01
    i2cset -y 2 0x2C 0x76 0x0A
    i2cset -y 2 0x2C 0x77 0x01
    i2cset -y 2 0x2C 0x78 0x81

    #启用增强型组帧和 ASSR
    i2cset -y 2 0x2C 0x5A 0x05

    2条信道-禁用扩频
    i2cset -y 2 0x2C 0x93 0x20

    ###启动半自动链接
    i2cset -y 2 0x2C 0x96 0x0A
    i2cget -y 2 0x2C 0x96
    #这将返回0x01 ->链路正常+切换到正常

    ###设置分辨率(使用 Excel 工作表计算)
    #有效行长度
    i2cset -y 2 0x2C 0x20 0x80
    i2cset -y 2 0x2C 0x21 0x07
    #垂直活动尺寸
    i2cset -y 2 0x2C 0x24 0x38
    i2cset -y 2 0x2C 0x25 0x04
    #水平脉冲宽度
    i2cset -y 2 0x2C 0x2C 0x20
    i2cset -y 2 0x2C 0x2D 0x00
    #垂直脉冲宽度
    i2cset -y 2 0x2C 0x30 0x0A
    i2cset -y 2 0x2C 0x31 0x00
    # HBP
    i2cset -y 2 0x2C 0x34 0x50
    VBP
    i2cset -y 2 0x2C 0x36 0x11
    # HFP
    i2cset -y 2 0x2C 0x38 0x30
    VFP
    i2cset -y 2 0x2C 0x3A 0x03

    # DP 颜色格式- 24bpp
    i2cset -y 2 0x2C 0x5B 0x00

    ###色条
    i2cset -y 2 0x2C 0x3C 0x10

    # Enable video stream (#启用视频流)-启用 ASSR 和增强组帧
    i2cset -y 2 0x2C 0x5A 0x0D

    此致、

    环路2.

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

    环路2.

    请注意、当使用 REFCLK 作为时钟源时、支持任何 DSI 时钟频率。 但是、如果时钟源改为 DSI A 时钟、则所需的 DSI 时钟频率需要更改为 DSI86支持的频率。 在此模式下运行时、可使用以下任一 DSI A 时钟频率:384MHz、416MHz、460.8MHz、468MHz 或486MHz。

    如果面板支持 ASSR、则以下命令是本机 AUX 写入面板 DPCD 寄存器以启用 ASSR 功能。  

    # enable ASSR on panel (本机辅助命令)
    i2cset -y 2 0x2C 0x64 0x01
    i2cset -y 2 0x2C 0x74 0x00
    i2cset -y 2 0x2C 0x75 0x01
    i2cset -y 2 0x2C 0x76 0x0A
    i2cset -y 2 0x2C 0x77 0x01
    i2cset -y 2 0x2C 0x78 0x81

    您能否读取状态寄存器0xf8并查看启用了色条功能时链路训练是否成功? 如果链路训练成功、我会尝试禁用 DSI86中的 ASSR、看看您是否可以在屏幕上看到颜色条。

    谢谢

    David

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

    尊敬的 David:

    抱歉、我的回答不明确:使用生成的电子表格初始化、显示屏会显示色条。 但它仅在启用 ASSR 的情况下工作。

    我想知道这些字节在本机 aux 命令中的作用是什么。 这是哪个协议?

    总之、这个小组现在可以工作了、非常感谢!

    如果我需要 另一个面板、那么我将使用/不使用 ASSR 对其进行测试。

    此致、

    环路2.

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

    环路2.

    很高兴听到您设法让该小组工作。

    对于您的问题、我将参考 DSI86数据表的第8.4.5.2.1节"本机辅助事务"。 基本上、您将写入 DSI86 I2C 寄存器、DSI86将获取 I2C 寄存器中的值、并转换为 DP AUX 总线上的本机 AUX 写入。  

    在本例中、DSI86将向电池板 DPCD 寄存器0x0010Ah (寄存器0x74 = 0x00、0x75 = 0x01、0x76 = 0x0A)发送本机 AUX 写入(寄存器0x78 = 0x81)。 这是一个字节写入(0x77 = 0x01)、写入 DPCD 寄存器0x0010Ah 的值为0x01 (寄存器0x64 = 0x01)。

    谢谢

    David