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

Other Parts Discussed in Thread: SN65DSI86

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1055981/sn65dsi86-black-screen-no-color-bar

器件型号:SN65DSI86

您好!

ICH 为 Raspberry PI CM4创建了一个载板、其中 SN65DSI86用作 DSI (4通道)到 EDP (2通道)的桥接器、用于驱动1920x1080显示屏。
背光照明工作正常、I2C 通信看起来正常、即使是链路训练也正常。 但显示屏 仅保持黑色。
显示 模型是从在 HDMI 适配器板上运行的显示屏中获取的(来自 EDID 和 xrandr --verbose)。

为了精确地找出问题、我 在 Linux 内核的 SN65DSI86驱动程序中添加了大量的调试线路。
我已经发现、在没有外部 REFCLK 的情况下、CM4无法在运行 DSI86所需的 DSI 上生成所需的时钟(CM4只有一个整数分频器、用于生成 DSI 时钟频率)。

因此、我轻轻地上拉参考时钟引脚并连接了一个外部时钟振荡器芯片以进行测试。

我在 Linux 驱动程序覆盖区中添加了 REFCLK、驱动程序日志指示设置了参考时钟寄存器并  检测到参考时钟信号。 现在还可以链接培训工作。
之后、我尝试 通过设置寄存器0x3C 来显示颜色测试模式、但结果很不幸。 显示屏仍然保持不动:-(

有什么想法、问题可能出在哪?

生成 REFCLK 信号以进行测试的芯 片是 Microchip 的 DSC1001DE2-027.0000。 这是否有效?
(遗憾的是、DSN86数据表对 refclock 信号应如何显示的细节有点害羞)

我知道该参考设计在  CDCEL913PW 芯片周围使用了相对复杂的设置。 遗憾的是、设置起来太复杂、无法在没有 PCB 的情况下进行测试(至少对我而言)。
所以我希望 DSC1001DE2-027.0000也能正常工作...

可以帮帮我吗? 未显示测试模式的原因可能是什么?

此致、
Thomas

PS1:我还尝试禁用 ASSR (TEST2为高电平并设置适当的寄存器)

PS2:作为参考、下面是我在引导时的当前内核日志:

[4.998385]   vc4_DSI fe700000。DSI:vc4_DSI_bind...
[4.998605]   vc4_DSI fe700000。DSI:vc4_DSI_BIND => PLL_phy_clock:速率:11718751
[4.998876]   vc4_DSI fe700000.dSI:vc4_DSI_init_phy_clocks,parent_name:plld_dsi1...
[4.999719]   vc4_DSI fe700000。DSI:vc4_DSI_bind:连接桥接器...
[4.999738]   ti_sn65dsi86 10-002c:TI_SN_Bridge_Attach:开始...
[4.999775]   vc4_DSI fe700000。DSI:MIPI_DSI_DEVICE_REGISTER_FULL:通道0
[4.999790]   mipi-DSI (空):MIPI_DSI_DEVICE_ALLOC...
[4.999950]   vc4_DSI fe700000。DSI:MIPI_DSI_DEVICE_REGISTER_FULL、DSI 通道0、名称:TI_SN_BRIDGE
[4.999965]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_Attach:将 DSI->通道设置为4
[4.999985   ] ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:开始...
[5.009550]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_RESUME:使用1调用 gpioD_SET_VALUE (EN)
[5.021785]   ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:完成!
[5.022313]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_Attach:CLK_src 为:0 (0:= REFCLK、1:DSI-PHY)
[5.022333]   vc4_DSI fe700000。DSI:vc4_DSI_HOST_Attach,通道:0,通道:4……
[5.022346]   ti_sn65dsi86 10-002c:TI_SN_Bridge_Attach:完成! 已附加 DSI!
[5.022422]   vc4-DRM GPU:Bound fe700000。DSI (ops vc4_DSI_ops [vc4])
[5.022781]   vc4-DRM GPU:Bound fe004000.TxP (ops vc4_TxP_ops [vc4])
[5.023320]   vc4-DRM GPU:Bound fe206000.PIXELVALVE (ops vc4_CRTC_ops [vc4])
[5.023605]   vc4-DRM GPU:Bound fe207000.PIXELVALVE (ops vc4_CRTC_ops [vc4])
[5.023856]   vc4-DRM GPU:Bound fe20a000.PIXELVALVE (ops vc4_CRTC_ops [vc4])
[5.024055]   vc4-DRM GPU:Bound fe216000.pixelpulve (ops vc4_CRTC_ops [vc4])
[5.024305]   vc4-DRM GPU:bound fec12000.pixelpulve (ops vc4_CRTC_ops [vc4])
[5.025319]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_SUSPEND:以0开始并调用 gpioD_set_value (EN)
[5.025353]   ti_sn65dsi86 10-002c:TI_SN_Bridge_SUSPEND:完成!
[5.047533]  [DRM]为次要0上的 GPU 初始化了 vc4 0.0.0.0 20140616
[5.053470]   vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_MODE_FIXUP、输入:parent_rate:3000000091、DSI->分频器:6、mode->时钟:148500
[5.053489]   vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_MODE_FIXUP => PIXEL_CLOCK _Hz:148500000、PLL_CLOCK:891000000 =>分频器:3.
[5.053503]   vc4_DSI fe700000.dSI:vc4_DSI_ENCODER_MODE_FIXUP => PIXEL_CLOCK_Hz:16666771,MODE->htotal:2200,aditioned_mode->htotal:2469 => adensed_mode->clock:166666
[5.053753]   vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_ENABLE……
[5.053785]   vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_ENABLE:PHY_CLOCK:1000002000 (PIXEL_CLOCK _Hz:1666000、分频器:6)
[5.054894]   vc4_DSI fe700000。DSI:vc4_DSI_ENCODER_ENABLE:HS_CLOCK: 1000000031 (PLL_phy_clock 的)
[5.054984]   ti_sn65dsi86 10-002c:TI_SN_Bridge_pre_enable:开始...
[5.055000]   ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:开始...
[5.055106]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_RESUME:使用1调用 gpioD_SET_VALUE (EN)
[5.067317]   ti_sn65dsi86 10-002c:TI_SN_Bridge_RESUME:完成!
[5.067347]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_REFCLK_freq =>使用 REFCLK LUT
[5.067370]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_REFCLK_freq:REFCLK_RATE:27000000、REFCLK_LUT[i]、I:3、找到:1.
[5.067382]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_REFCLK_freq:设置 REFCLK_RATE   将寄存器0x0a 设置为0x06 (带位掩码14)
[5.092015]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:reg 95的状态(GPIO 配置):0
[5.092493]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:reg 94的状态(当前 GPIO 值):176
[5.125374]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:pddata->DP_Lanes:2 (最大值:2)
[5.125395]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:设置 DSI 通道:        将寄存器0x10设置为0x00 (使用位掩码24)
[5.126217]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:通道分配(默认为0xe4):将寄存器0x59设置为0xe4
[5.126578]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:增强型组帧和 ASSR: 将寄存器0x5a 设置为0x05
[5.127387]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:ASSR 开/关状态(bit01):1 (0:标准、1:ASSR)
[5.127403]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:设置通道多项式:   将寄存器0x5a 设置为0x00 (使用位掩码0xf0)
[5.127869]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_DSI_RATE:bit_RATE:3984、clk_freq_MHz:498
[5.128219]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:启用 ASSR (驱动程序方式)
[5.131832]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:设置 DP 数据格式:将寄存器0x5b 设置为0x00 (0:24bpp、1:18bpp)
[5.132308]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:设置 DP 通道数: 将寄存器0x93设置为0x20 (val:32)(2个通道)
[5.141899]   ti_sn65dsi86 10-002c:TI_SN_Bridge_Read_VALIDE_RATEs:接收到的 EDP 版本字节:0x2
[5.150891]   ti_sn65dsi86 10-002c:TI_SN_Bridge_calc_min_DP_RAM_idx:时钟:16666666kHz、bit_RAM_kHz:3999984kHz、DP_RAM_MHz:2500MHz => I:4 (DP_DATA_RATE:2700)
[5.150910]   ti_sn65dsi86 10-002c:TI_SN_LINK_training:DP 速率:       将寄存器0x94设置为0x80 (DP_RATE _idx:4)
[5.151707]   ti_sn65dsi86 10-002c:TI_SN_LINK_training:启用 PPL:   将寄存器0x0d 设置为0x01
[5.152493]   ti_sn65dsi86 10-002c:TI_SN_LINK_training:Cursor2 0dB:  将寄存器0x95设置为0x00
[5.152838]   ti_sn65dsi86 10-002c:TI_SN_LINK_training:开始尝试:0...
[5.153613]   ti_sn65dsi86 10-002c:TI_SN_LINK_training 成功
[5.153624]   ti_sn65dsi86 10-002c:状态寄存器:
[5.154081]   ti_sn65dsi86 10-002c:状态寄存器[0xf0]= 0x00000000
[5.154536]   ti_sn65dsi86 10-002c:状态寄存器[0xF1]= 0x00000002
[5.15498]   ti_sn65dsi86 10-002c:状态寄存器[0xF2]= 0x00000000
[5.155453]   ti_sn65dsi86 10-002c:状态寄存器[0xF3]= 0x00000000
[5.155903]   ti_sn65dsi86 10-002c:状态寄存器[0xf4]= 0x00000001
[5.156353]   ti_sn65dsi86 10-002c:状态寄存器[0xf5]= 0x00000000
[5.156812]   ti_sn65dsi86 10-002c:状态寄存器[0xf6]= 0x00000000
[5.157264]   ti_sn65dsi86 10-002c:状态寄存器[0xf7]= 0x00000000
[5.157715]   ti_sn65dsi86 10-002c:状态寄存器[0xf8]= 0x00000000
[5.157731]   ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO 时序:时钟:166666、hdisplay:1920、vdisplay:1080、HSYNC_START:2277、HSYNC_END:2321、 VSYNC_START:1082、VSYNC_END:1087
[5.159739]   ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO_TIming: HSYNC_PULSE_WIDTH    =>(val: 44) reg 2c => 2c 0
[5.160443]   ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO_时序:vSYNC_PULSE_WIDTH    =>(val: 5) reg 30 => 5 0
[5.160807]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_VIDEO_TIVESS_TIMing: Horizontale_BACT_STACH= >(val:148) reg 34 => 0x94
[5.161170]   ti_sn65dsi86 10-002c:TI_SN_Bridge_SET_VIDEO_时序:竖直_后_沿  =>(val: 38) reg 36 => 0x26
[5.161524]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_VIDEO_TIVESS_TIRING_RACY-PORTing=>(val:101) reg 38 => 0x65
[5.161877]   ti_sn65dsi86 10-002c:TI_SN_Bridge_Set_VIDEO_Timing: Vertical _front_Porch  =>(val: 2) reg 3a => 0x2
[5.172427]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_TEST_pattern_ENABLE:启用测试模式:0、En 位:16
[5.173225]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:在启用前检查 REFCLK:寄存器0x0a 具有值134 (REFCLK 位:3、rfclk src:0)
[5.173237]   ti_sn65dsi86 10-002c:TI_SN_BRIDGE_ENABLE:现在启用视频流、使用0x0d (15位掩码)更新寄存器0x5a
[5.174005]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:现在启用面板...
[5.174017]   ti_sn65dsi86 10-002c:状态寄存器:
[5.174470]   ti_sn65dsi86 10-002c:状态寄存器[0xf0]= 0x00000000
[5.174928]   ti_sn65dsi86 10-002c:状态寄存器[0xF1]= 0x00000002
[5.175379]   ti_sn65dsi86 10-002c:状态寄存器[0xF2]= 0x00000000
[5.175824]   ti_sn65dsi86 10-002c:状态寄存器[0xF3]= 0x00000000
[5.176271]   ti_sn65dsi86 10-002c:状态寄存器[0xf4]= 0x00000001
[5.176720]   ti_sn65dsi86 10-002c:状态寄存器[0xf5]= 0x00000000
[5.177165]   ti_sn65dsi86 10-002c:状态寄存器[0xf6]= 0x00000000
[5.177610]   ti_sn65dsi86 10-002c:状态寄存器[0xf7]= 0x00000000
[5.178057]   ti_sn65dsi86 10-002c:状态寄存器[0xf8]= 0x00000000
[5.178507]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:测试模式检查:reg 0x3c 的值为16
[5.178517]   ti_sn65dsi86 10-002c:TI_SN_Bridge_enable:全部完成!

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

    您好!

    您能否检查并确保 HPD 被驱动为高电平?

    请参阅此 e2e 常见问题解答的链接 、https://e2e.ti.com/support/interface-group/interface/f/interface-forum/945404/faq-sn65dsi86-how-do-i-programming-the-sn65dsi86-registers。 您可以使用常见问题解答中的电子表格根据接收器的 EDID 信息生成 DSI86寄存器编程值。

    我还附加了一个简单的800x600脚本示例文件、您能看到色条是否适用于此示例文件吗?

    e2e.ti.com/.../1263.4DP_5F00_4DSI_5F00_RBR_5F00_800x600_5F00_Color_5F00_Bar.xml

    谢谢

    David

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

    尊敬的 David:  

    感谢您的快速回复。

    我没有 Aardvark 设备。 因此、我将内核配置为仅加载 I2C 总线、而不加载驱动程序。
    之后、我 通过  python i2c 库从 python 文件运行 aardvark 配置。

    我不确定我是否使用 count="0"正确编程了写入操作。 也许您可以更仔细地查看产生 的输出...

    不幸的是、我仍然看不到色条。

    这是脚本的输出:

    <aardvark>
        <configure i2c="1" spi="1" gpio="0" tpower="1" pullups="1"/>
        <i2c_bitrate khz="100"/>
      <i2c_write addr="0x2D" count="1" radix="16">5C 01</i2c_write> <sleep ms="10"/>
          >Write 0x5c => set   1 (0x01/0b00000001)
          >Sleep: 10 ms
       <i2c_write addr="0x2D" count="1" radix="16">FF 07</i2c_write> <sleep ms="10"/>
          >Write 0xff => set   7 (0x07/0b00000111)
          >Sleep: 10 ms
    ======DUMP CFR======
       <i2c_write addr="0x2D" count="0" radix="16">16 </i2c_write> <sleep ms="10"/>
          >WriteByte 0x16
          >Sleep: 10 ms
    ======Read======
        <i2c_read addr="0x2D" count="1" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 0x00 =>  92 (0x5c/0b01011100)
          >Sleep: 10 ms
       <i2c_write addr="0x2D" count="1" radix="16">16 01</i2c_write> <sleep ms="10"/>
          >Write 0x16 => set   1 (0x01/0b00000001)
          >Sleep: 10 ms
       <i2c_write addr="0x2D" count="0" radix="16">16 </i2c_write> <sleep ms="10"/>
          >WriteByte 0x16
          >Sleep: 10 ms
    ======Read======
        <i2c_read addr="0x2D" count="2" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 2 bytes ...
          >Read nr.  0 =>   1 (0x01/0b00000001)
          >Read nr.  1 =>   0 (0x00/0b00000000)
          >Sleep: 10 ms
      <i2c_write addr="0x2D" count="1" radix="16">FF 00</i2c_write> <sleep ms="10"/>
          >Write 0xff => set   0 (0x00/0b00000000)
          >Sleep: 10 ms
    ======Single 4 DSI lanes======
      <i2c_write addr="0x2D" count="1" radix="16">10 26 </i2c_write> <sleep ms="10"/>
          >Write 0x10 => set  38 (0x26/0b00100110)
          >Sleep: 10 ms
    ======DSI CLK FREQ======
      <i2c_write addr="0x2D" count="0" radix="16">12 </i2c_write> <sleep ms="10"/>
          >WriteByte 0x12
          >Sleep: 10 ms
       <i2c_read addr="0x2D" count="2" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 2 bytes ...
          >Read nr.  0 =>   0 (0x00/0b00000000)
          >Read nr.  1 =>   0 (0x00/0b00000000)
          >Sleep: 10 ms
    ======enhanced framing======
      <i2c_write addr="0x2D" count="1" radix="16">5A 04 </i2c_write> <sleep ms="10"/>
          >Write 0x5a => set   4 (0x04/0b00000100)
          >Sleep: 10 ms
    ======ADDR 0x93 CFR======
       <i2c_write addr="0x2D" count="0" radix="16">93</i2c_write> <sleep ms="10"/>
          >WriteByte 0x93
          >Sleep: 10 ms
    ======Read======
        <i2c_read addr="0x2D" count="6" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 6 bytes ...
          >Read nr.  0 =>  48 (0x30/0b00110000)
          >Read nr.  1 =>  32 (0x20/0b00100000)
          >Read nr.  2 =>   0 (0x00/0b00000000)
          >Read nr.  3 =>   0 (0x00/0b00000000)
          >Read nr.  4 =>   4 (0x04/0b00000100)
          >Read nr.  5 =>   1 (0x01/0b00000001)
          >Sleep: 10 ms
    ======Pre0dB 1 lanes no SSC======
       <i2c_write addr="0x2D" count="1" radix="16">93 30</i2c_write> <sleep ms="10"/>
          >Write 0x93 => set  48 (0x30/0b00110000)
          >Sleep: 10 ms
    ======L0mV RBR======
       <i2c_write addr="0x2D" count="1" radix="16">94 20</i2c_write> <sleep ms="10"/>
          >Write 0x94 => set  32 (0x20/0b00100000)
          >Sleep: 10 ms
    ======POST2 0dB ======
       <i2c_write addr="0x2D" count="1" radix="16">95 00</i2c_write> <sleep ms="10"/>
          >Write 0x95 => set   0 (0x00/0b00000000)
          >Sleep: 10 ms
    ======PLL ENABLE======
       <i2c_write addr="0x2D" count="1" radix="16">0D 01</i2c_write> <sleep ms="10"/>
          >Write 0x0d => set   1 (0x01/0b00000001)
          >Sleep: 10 ms
       <i2c_write addr="0x2D" count="0" radix="16">0A</i2c_write> <sleep ms="10"/>
          >WriteByte 0x0a
          >Sleep: 10 ms
       <i2c_read addr="0x2D" count="2" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 2 bytes ...
          >Read nr.  0 => 134 (0x86/0b10000110)
          >Read nr.  1 =>   0 (0x00/0b00000000)
          >Sleep: 10 ms
    ======Semi-Auto TRAIN ======
       <i2c_write addr="0x2D" count="1" radix="16">96 0A</i2c_write> <sleep ms="20"/>
          >Write 0x96 => set  10 (0x0a/0b00001010)
          >Sleep: 20 ms
    ======ADDR 0x0A CFR======
       <i2c_write addr="0x2D" count="0" radix="16">96</i2c_write> <sleep ms="20"/>
          >WriteByte 0x96
          >Sleep: 20 ms
    ======Read======
        <i2c_read addr="0x2D" count="1" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 0x00 =>  54 (0x36/0b00110110)
          >Sleep: 10 ms
    =====CHA_ACTIVE_LINE_LENGTH=======
        <i2c_write addr="0x2D" count="2" radix="16">20 00 04</i2c_write> <sleep ms="10"/>
          >Write 0x20/0x21 => 1024
          >Write 0x20 => set   0 (0x00/0b00000000)
          >Write 0x21 => set   4 (0x04/0b00000100)
          >Sleep: 10 ms
    =====CHA_VERTICAL_DISPLAY_SIZE=======
        <i2c_write addr="0x2D" count="2" radix="16">24 58 02</i2c_write> <sleep ms="10"/>
          >Write 0x24/0x25 => 600
          >Write 0x24 => set  88 (0x58/0b01011000)
          >Write 0x25 => set   2 (0x02/0b00000010)
          >Sleep: 10 ms
    =====CHA_SYNC_DELAY=======
        <i2c_write addr="0x2D" count="2" radix="16">28 00 00</i2c_write> <sleep ms="10"/>
          >Write 0x28/0x29 => 0
          >Write 0x28 => set   0 (0x00/0b00000000)
          >Write 0x29 => set   0 (0x00/0b00000000)
          >Sleep: 10 ms
    =====CHA_HSYNC_PULSE_WIDTH=======
        <i2c_write addr="0x2D" count="2" radix="16">2C 80 80</i2c_write> <sleep ms="10"/>
          >Write 0x2c/0x2d => 32896
          >Write 0x2c => set 128 (0x80/0b10000000)
          >Write 0x2d => set 128 (0x80/0b10000000)
          >Sleep: 10 ms
    =====CHA_VSYNC_PULSE_WIDTH=======
        <i2c_write addr="0x2D" count="2" radix="16">30 04 80</i2c_write> <sleep ms="10"/>
          >Write 0x30/0x31 => 32772
          >Write 0x30 => set   4 (0x04/0b00000100)
          >Write 0x31 => set 128 (0x80/0b10000000)
          >Sleep: 10 ms
    =====CHA_HORIZONTAL_BACK_PORCH=======
        <i2c_write addr="0x2D" count="1" radix="16">34 28 </i2c_write> <sleep ms="10"/>
          >Write 0x34 => set  40 (0x28/0b00101000)
          >Sleep: 10 ms
    =====CHA_VERTICAL_BACK_PORCH=======
        <i2c_write addr="0x2D" count="1" radix="16">36 09</i2c_write> <sleep ms="10"/>
          >Write 0x36 => set   9 (0x09/0b00001001)
          >Sleep: 10 ms
    =====CHA_HORIZONTAL_FRONT_PORCH=======
        <i2c_write addr="0x2D" count="1" radix="16">38 28</i2c_write> <sleep ms="10"/>
          >Write 0x38 => set  40 (0x28/0b00101000)
          >Sleep: 10 ms
    =====CHA_VERTICAL_FRONT_PORCH=======
        <i2c_write addr="0x2D" count="1" radix="16">3A 01</i2c_write> <sleep ms="10"/>
          >Write 0x3a => set   1 (0x01/0b00000001)
          >Sleep: 10 ms
    =====DP_18BPP_EN =======
      <i2c_write addr="0x2D" count="1" radix="16">5B 01 </i2c_write> <sleep ms="100"/>
          >Write 0x5b => set   1 (0x01/0b00000001)
          >Sleep: 100 ms
    =====COLOR BAR =======
        <i2c_write addr="0x2D" count="1" radix="16">3C 10</i2c_write> <sleep ms="100"/>
          >Write 0x3c => set  16 (0x10/0b00010000)
          >Sleep: 100 ms
    ======enhanced framing and Vstream enable======
      <i2c_write addr="0x2D" count="1" radix="16">5A 0C </i2c_write> <sleep ms="100"/>
          >Write 0x5a => set  12 (0x0c/0b00001100)
          >Sleep: 100 ms
    ======DUMP CFR======
        <i2c_write addr="0x2D" count="0" radix="16">20</i2c_write> <sleep ms="10"/>
          >WriteByte 0x20
          >Sleep: 10 ms
    ======Read======
        <i2c_read addr="0x2D" count="32" radix="16">00</i2c_read> <sleep ms="10"/>
          >Read 32 bytes ...
          >Read nr.  0 =>   0 (0x00/0b00000000)
          >Read nr.  1 =>   4 (0x04/0b00000100)
          >Read nr.  2 =>   0 (0x00/0b00000000)
          >Read nr.  3 =>   0 (0x00/0b00000000)
          >Read nr.  4 =>  88 (0x58/0b01011000)
          >Read nr.  5 =>   2 (0x02/0b00000010)
          >Read nr.  6 =>   0 (0x00/0b00000000)
          >Read nr.  7 =>   0 (0x00/0b00000000)
          >Read nr.  8 =>   0 (0x00/0b00000000)
          >Read nr.  9 =>   0 (0x00/0b00000000)
          >Read nr. 10 =>   0 (0x00/0b00000000)
          >Read nr. 11 =>   0 (0x00/0b00000000)
          >Read nr. 12 => 128 (0x80/0b10000000)
          >Read nr. 13 => 128 (0x80/0b10000000)
          >Read nr. 14 =>   0 (0x00/0b00000000)
          >Read nr. 15 =>   0 (0x00/0b00000000)
          >Read nr. 16 =>   4 (0x04/0b00000100)
          >Read nr. 17 => 128 (0x80/0b10000000)
          >Read nr. 18 =>   0 (0x00/0b00000000)
          >Read nr. 19 =>   0 (0x00/0b00000000)
          >Read nr. 20 =>  40 (0x28/0b00101000)
          >Read nr. 21 =>   0 (0x00/0b00000000)
          >Read nr. 22 =>   9 (0x09/0b00001001)
          >Read nr. 23 =>   0 (0x00/0b00000000)
          >Read nr. 24 =>  40 (0x28/0b00101000)
          >Read nr. 25 =>   0 (0x00/0b00000000)
          >Read nr. 26 =>   1 (0x01/0b00000001)
          >Read nr. 27 =>   0 (0x00/0b00000000)
          >Read nr. 28 =>  16 (0x10/0b00010000)
          >Read nr. 29 =>   0 (0x00/0b00000000)
          >Read nr. 30 =>   0 (0x00/0b00000000)
          >Read nr. 31 =>   0 (0x00/0b00000000)
          >Sleep: 10 ms
    </aardvark>

    您能从输出中看到问题是什么?

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

    我刚刚尝试了数据表中的 aardvark 配置、但在启用测试模式的情况下:

    <configure i2c="1" spi="1" gpio="0" tpower="1" pullups="0" />
    <i2c_bitrate khz="100" />
    ======REFCLK 27MHz ======
    <i2c_write addr="0x2D" count="1" radix="16">0A 06</i2c_write> />
    ======Single 4 DSI lanes======
    <i2c_write addr="0x2D" count="1" radix="16">10 26</i2c_write> />
    ======DSIA CLK FREQ 445MHz======
    <i2c_write addr="0x2D" count="1" radix="16">12 59</i2c_write> />
    ======enhanced framing and ASSR======
    <i2c_write addr="0x2D" count="1" radix="16">5A 05</i2c_write> />
    ======2 DP lanes no SSC======
    <i2c_write addr="0x2D" count="1" radix="16">93 20</i2c_write> />
    ======HBR (2.7Gbps)======
    <i2c_write addr="0x2D" count="1" radix="16">94 80</i2c_write> />
    ======PLL ENABLE======
    <i2c_write addr="0x2D" count="1" radix="16">0D 01</i2c_write> <sleep ms="10" />
    ======Verify PLL is locked======
    <i2c_write addr="0x2D" count="0" radix="16">0A</i2c_write> />
    <i2c_read addr="0x2D" count="2" radix="16">00</i2c_read> <sleep ms="10" />
    ======POST-Cursor2 0dB ======
    <i2c_write addr="0x2D" count="1" radix="16">95 00</i2c_write> />
    ======Write DPCD Register 0x0010A in Sink to Enable ASSR======
    <i2c_write addr="0x2D" count="1" radix="16">64 01</i2c_write> />
    <i2c_write addr="0x2D" count="1" radix="16">74 00</i2c_write> />
    <i2c_write addr="0x2D" count="1" radix="16">75 01</i2c_write> />
    <i2c_write addr="0x2D" count="1" radix="16">76 0A</i2c_write> />
    <i2c_write addr="0x2D" count="1" radix="16">77 01</i2c_write> />
    <i2c_write addr="0x2D" count="1" radix="16">78 81</i2c_write> <sleep ms="10" />
    
    ======Semi-Auto TRAIN ======
    <i2c_write addr="0x2D" count="1" radix="16">96 0A</i2c_write> <sleep ms="20" />
    ======Verify Training was successful======
    <i2c_write addr="0x2D" count="0" radix="16">96</i2c_write> />
    <i2c_read addr="0x2D" count="1" radix="16">00</i2c_read> <sleep ms="10" />
    =====CHA_ACTIVE_LINE_LENGTH is 1920 =======
    <i2c_write addr="0x2D" count="2" radix="16">20 80 07</i2c_write> />
    =====CHA_VERTICAL_DISPLAY_SIZE is 1080 =======
    <i2c_write addr="0x2D" count="2" radix="16">24 38 04</i2c_write> />
    =====CHA_HSYNC_PULSE_WIDTH is 44 positive =======
    <i2c_write addr="0x2D" count="2" radix="16">2C 2C 00</i2c_write> />
    =====CHA_VSYNC_PULSE_WIDTH is 5 positive=======
    <i2c_write addr="0x2D" count="2" radix="16">30 05 80</i2c_write> />
    =====CHA_HORIZONTAL_BACK_PORCH is 148=======
    <i2c_write addr="0x2D" count="1" radix="16">34 94</i2c_write> />
    =====CHA_VERTICAL_BACK_PORCH is 36=======
    <i2c_write addr="0x2D" count="1" radix="16">36 24</i2c_write> />
    =====CHA_HORIZONTAL_FRONT_PORCH is 88=======
    <i2c_write addr="0x2D" count="1" radix="16">38 58</i2c_write> />
    =====CHA_VERTICAL_FRONT_PORCH is 4=======
    <i2c_write addr="0x2D" count="1" radix="16">3A 04</i2c_write> />
    ======DP- 24bpp======
    <i2c_write addr="0x2D" count="1" radix="16">5B 00</i2c_write> />
    =====COLOR BAR =======
        <i2c_write addr="0x2D" count="1" radix="16">3C 10</i2c_write> <sleep ms="100"/>
    
    
    ======enhanced framing, ASSR, and Vstream enable======
    <i2c_write addr="0x2D" count="1" radix="16">5A 0D</i2c_write> />
    </aardvark>

    它起作用。 没想到!

    您是否看到它使用该配置的原因?

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

    您好!

    使用工作代码、如果禁用颜色栏、您现在是否能够在屏幕上获取图片?

    谢谢

    David  

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

    尊敬的 David:

    这并不是那么容易。 我根据配置修改了显示配置和 Linux 内核驱动程序的某些部分。
    但驾驶员仍然无法激活 测试模式、无法说出真实图像。

    结果显示在接受/处理命令之前需要大约一秒钟的电源。 我的设计中有一个 P-MOSFET、用于根据传输到电桥的 EN 信号来控制功率。 不好主意。

    之后、显示模式和 Raspberry PI DSI 内核驱动程序仍然存在问题。
    4个 DSI 线路无法正常工作。 如果有人找到了路、请联系我。

    对于 3条线路、 在额定60Hz 下、Raspberry 会为我的2.7 Gbps 最大 EDP 信道选择略高的数据速率(显示受限)。 遗憾的是、Raspberry 使用固定整数分频器来操作其 DSI 参考时钟。 因此、它"过冲"大部分是相当多的。

    现在的解决方案是将显示时钟设置半半个。 显示屏现在可处理30fps。 这对我的应用来说足够了。 即使是50Hz 也能正常工作。 稍后将对此进行测试。

    感谢您的帮助!

    此致、
    Thomas