DS90UB983-Q1: 983搭配984,使用984出pattern

Part Number: DS90UB983-Q1

使用983搭配984无法配置出图,验证984单独出pattern图片。但984也无法单独配置出pattern画面。请问这种edp的链路该如何配置984出pattern画面:

  屏              ->           984

eDP0_D0P -> eDP_D3P 
eDP0_D0N -> eDP_D3N
eDP0_D1P -> eDP_D2P
eDP0_D1N -> eDP_D2N
eDP0_D2P -> eDP_D1P
eDP0_D2N -> eDP_D1N
eDP0_D3P -> eDP_D0P
eDP0_D3N -> eDP_D0N

屏幕timing

THW[0] = 3120
TVW[0] = 1842
AHW[0] = 2880
AVW[0] = 1800
HBP[0] = 60
VBP[0] = 8
HSW[0] = 60
VSW[0] = 2
HFP[0] = 120
VFP[0] = 32
HSP[0] = 0
VSP[0] = 0
PCLK[0] = 344.82
Bits_per_pixel[0] = 24

  • 您好!

    可以使用98x 脚本生成工具 v5.5生成983-984 PATGEN 脚本。 这将帮助客户按照自己的意愿生成自己的脚本。 生成脚本后、客户可以使用这些寄存器重新映射 eDP kanes、如上所述:

    客户需要首先使用此寄存器启用重映射功能:

  • 你好,

    感谢您的回复!

    我们当前就是使用v5.5的脚本生成了寄存器的配置,但是依然无法让984显示pattern画面。您发的图片这个网页上是无法打开的,有无文字描述或其他方式给我们提供上面的图片信息呢。

    另外期望您看一下此问题的关联子问题,我们983输出信号后,984的54寄存器一直显示无有效frame,此问题还需要您的帮助,感谢!

  • 我可以为他们生成 patgen 脚本。 客户使用的 DP 率是多少? FPD-Link 速率是多少?

  • 您好,如果使用984输出pattern的话,我理解是不需要关心FPD-Link 速率的,只需要关心问题前面的timing和线序,不是吗?

  • 您是对的。 让我们从984 PATGEN开始,看看屏幕是否可以显示出来。 我使用提供的解决方案生成了984 PATGEN脚本,我还根据您共享的内容添加了DP通道重新映射:

    ## TI Confidential - NDA Restrictions
    ## 
    ## Copyright 2018 Texas Instruments Incorporated. All rights reserved.
    ## 
    ## IMPORTANT: Your use of this Software is limited to those specific rights
    ## granted under the terms of a software license agreement between the user who
    ## downloaded the software, his/her employer (which must be your employer) and
    ## Texas Instruments Incorporated (the License). You may not use this Software
    ## unless you agree to abide by the terms of the License. The License limits your
    ## use, and you acknowledge, that the Software may not be modified, copied or
    ## distributed unless embedded on a Texas Instruments microcontroller which is
    ## integrated into your product. Other than for the foregoing purpose, you may
    ## not use, reproduce, copy, prepare derivative works of, modify, distribute,
    ## perform, display or sell this Software and/or its documentation for any
    ## purpose.
    ## 
    ## YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
    ## PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
    ## INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
    ## NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS
    ## INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
    ## NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL
    ## EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT
    ## LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL
    ## DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS,
    ## TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
    ## LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
    ## 
    ## Should you have any questions regarding your right to use this Software,
    ## contact Texas Instruments Incorporated at www.TI.com.
    ## 
    
    ## DS90xx98x-Q1 Auto Script Generation Output
    ## Tool Version 5.5
    
    
    import time 
    ## Deserializer 0: DS90UH984-Q1
    ## User Inputs:
    ## Deserializer I2C Address = 0x58
    ## Deserializer I2C Alias = 0x5a
    ## Override of DES eFuse enabled
    ## DP Port 0 Enabled
    ## DP Port 0 PatGen Enabled
    ## Patgen Video Properties:
    ## Total Horizontal Pixels = 3120
    ## Total Vertical Lines = 1842
    ## Active Horizontal Pixels = 2880
    ## Active Vertical Lines = 1800
    ## Horizontal Back Porch = 60
    ## Vertical Back Porch = 8
    ## Horizontal Sync = 60
    ## Vertical Sync = 2
    ## Horizontal Front Porch = 120
    ## Vertical Front Porch = 32
    ## Horizontal Sync Polarity = Positive
    ## Vertical Sync Polarity = Positive
    ## Bits per pixel = 24
    ## Pixel Clock = 344.82MHz
    ## DP Port 1 Disabled
    ## DP Port 1 PatGen Disabled
    ## DP Rate set to 5.4 Gbps
    ## DP lane number set to 4 lanes
    
    desAlias0 = 0x58
    ## *********************************************
    ## Check for DES0 Communication
    ## *********************************************
    DES_READBACK = board.ReadI2C(desAlias0,0x0,1)
    if DES_READBACK == 0:
      print "Error - no DES detected"
    else:
      print "Deserializer detected successfully"
    ## *********************************************
    ## Override DES0 eFuse
    ## *********************************************
    board.WriteI2C(desAlias0,0x49,0xc)
    board.WriteI2C(desAlias0,0x4a,0x0)
    board.WriteI2C(desAlias0,0x48,0x1b)
    UNIQUEID_Reg0xC = board.ReadI2C(desAlias0,0x4b,1)
    if UNIQUEID_Reg0xC != 0x19 and DES_READBACK != 0:
      print "Non-Final DES Silicon Detected - Overriding DES eFuse"
      board.WriteI2C(desAlias0,0xe,0x3)
      board.WriteI2C(desAlias0,0x61,0x0)
      board.WriteI2C(desAlias0,0x5a,0x74)
      board.WriteI2C(desAlias0,0x5f,0x4)
      board.WriteI2C(desAlias0,0x40,0x3c)
      board.WriteI2C(desAlias0,0x41,0xf5)
      board.WriteI2C(desAlias0,0x42,0x21)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x43)
      board.WriteI2C(desAlias0,0x42,0x3)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x43)
      board.WriteI2C(desAlias0,0x42,0x3)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x5)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x5)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x6)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x6)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x37)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x37)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x8d)
      board.WriteI2C(desAlias0,0x42,0xff)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x8d)
      board.WriteI2C(desAlias0,0x42,0xff)
      board.WriteI2C(desAlias0,0x40,0x5c)
      board.WriteI2C(desAlias0,0x41,0x20)
      board.WriteI2C(desAlias0,0x42,0x3c)
      board.WriteI2C(desAlias0,0x41,0xa0)
      board.WriteI2C(desAlias0,0x42,0x3c)
      board.WriteI2C(desAlias0,0x40,0x38)
      board.WriteI2C(desAlias0,0x41,0x24)
      board.WriteI2C(desAlias0,0x42,0x61)
      board.WriteI2C(desAlias0,0x41,0x54)
      board.WriteI2C(desAlias0,0x42,0x61)
      board.WriteI2C(desAlias0,0x41,0x2c)
      board.WriteI2C(desAlias0,0x42,0x19)
      board.WriteI2C(desAlias0,0x41,0x5c)
      board.WriteI2C(desAlias0,0x42,0x19)
      board.WriteI2C(desAlias0,0x41,0x2e)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x5e)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x18)
      board.WriteI2C(desAlias0,0x42,0x4b)
      board.WriteI2C(desAlias0,0x41,0x38)
      board.WriteI2C(desAlias0,0x42,0x4b)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x15)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x15)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x4a)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x4a)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xaa)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xaa)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xab)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xab)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xac)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xac)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xad)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xad)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xae)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xae)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xaf)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xaf)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x5)
      board.WriteI2C(desAlias0,0x42,0xa)
      board.WriteI2C(desAlias0,0x41,0x25)
      board.WriteI2C(desAlias0,0x42,0xa)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x89)
      board.WriteI2C(desAlias0,0x42,0x38)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x89)
      board.WriteI2C(desAlias0,0x42,0x38)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x1a)
      board.WriteI2C(desAlias0,0x42,0x8)
      board.WriteI2C(desAlias0,0x41,0x3a)
      board.WriteI2C(desAlias0,0x42,0x8)
      board.WriteI2C(desAlias0,0x40,0x38)
      board.WriteI2C(desAlias0,0x41,0x6f)
      board.WriteI2C(desAlias0,0x42,0x54)
      board.WriteI2C(desAlias0,0x41,0x70)
      board.WriteI2C(desAlias0,0x42,0x5)
      board.WriteI2C(desAlias0,0x41,0x80)
      board.WriteI2C(desAlias0,0x42,0x55)
      board.WriteI2C(desAlias0,0x41,0x81)
      board.WriteI2C(desAlias0,0x42,0x44)
      board.WriteI2C(desAlias0,0x41,0x82)
      board.WriteI2C(desAlias0,0x42,0x3)
      board.WriteI2C(desAlias0,0x41,0x86)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x41,0x87)
      board.WriteI2C(desAlias0,0x42,0x6)
      board.WriteI2C(desAlias0,0x41,0x18)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x41,0x48)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x41,0x19)
      board.WriteI2C(desAlias0,0x42,0xe)
      board.WriteI2C(desAlias0,0x41,0x49)
      board.WriteI2C(desAlias0,0x42,0xe)
      board.WriteI2C(desAlias0,0x41,0x17)
      board.WriteI2C(desAlias0,0x42,0x72)
      board.WriteI2C(desAlias0,0x41,0x47)
      board.WriteI2C(desAlias0,0x42,0x72)
      board.WriteI2C(desAlias0,0x41,0x26)
      board.WriteI2C(desAlias0,0x42,0x87)
      board.WriteI2C(desAlias0,0x41,0x56)
      board.WriteI2C(desAlias0,0x42,0x87)
      board.WriteI2C(desAlias0,0x40,0x2c)
      board.WriteI2C(desAlias0,0x41,0x3d)
      board.WriteI2C(desAlias0,0x42,0xd5)
      board.WriteI2C(desAlias0,0x41,0x3e)
      board.WriteI2C(desAlias0,0x42,0x15)
      board.WriteI2C(desAlias0,0x41,0x7d)
      board.WriteI2C(desAlias0,0x42,0xd5)
      board.WriteI2C(desAlias0,0x41,0x7e)
      board.WriteI2C(desAlias0,0x42,0x15)
      board.WriteI2C(desAlias0,0x41,0x82)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x41,0x29)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x41)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x42)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x24)
      board.WriteI2C(desAlias0,0x41,0x20)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x21)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x23)
      board.WriteI2C(desAlias0,0x42,0x30)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x14)
      board.WriteI2C(desAlias0,0x42,0x78)
      board.WriteI2C(desAlias0,0x41,0x35)
      board.WriteI2C(desAlias0,0x42,0x7e)
      board.WriteI2C(desAlias0,0x40,0x6c)
      board.WriteI2C(desAlias0,0x41,0xd)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x1c)
      board.WriteI2C(desAlias0,0x41,0x8)
      board.WriteI2C(desAlias0,0x42,0x13)
      board.WriteI2C(desAlias0,0x41,0x28)
      board.WriteI2C(desAlias0,0x42,0x13)
      board.WriteI2C(desAlias0,0x40,0x14)
      board.WriteI2C(desAlias0,0x41,0x62)
      board.WriteI2C(desAlias0,0x42,0x31)
      board.WriteI2C(desAlias0,0x41,0x72)
      board.WriteI2C(desAlias0,0x42,0x31)
      board.WriteI2C(desAlias0,0x41,0x61)
      board.WriteI2C(desAlias0,0x42,0x26)
      board.WriteI2C(desAlias0,0x41,0x71)
      board.WriteI2C(desAlias0,0x42,0x26)
      board.WriteI2C(desAlias0,0x1,0x1) #Soft Reset DES
      time.sleep(0.04)
    
    ## *********************************************
    ## Hold Des DTG in reset
    ## *********************************************
    print("Hold Des 0 DTG in reset and configure video settings")
    board.WriteI2C(desAlias0,0x40,0x50) #Select DTG Page
    board.WriteI2C(desAlias0,0x41,0x32)
    board.WriteI2C(desAlias0,0x42,0x6) #Hold Local Display Output Port 0 DTG in Reset
    board.WriteI2C(desAlias0,0x41,0x62)
    board.WriteI2C(desAlias0,0x42,0x6) #Hold Local Display Output Port 1 DTG in Reset
    
    
    ## *********************************************
    ## Disable Stream Mapping
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x3) #Select both Output Ports
    board.WriteI2C(desAlias0,0xd0,0x0) #Disable FPD4 video forward to Output Port
    board.WriteI2C(desAlias0,0xd7,0x0) #Disable FPD3 video forward to Output Port
    
    
    ## *********************************************
    ## Force DP Rate
    ## *********************************************
    board.WriteI2C(desAlias0,0x40,0x2c) #Select DP Page
    board.WriteI2C(desAlias0,0x41,0x81)
    board.WriteI2C(desAlias0,0x42,0xc0) #Set DP Rate to 5.4Gbps
    board.WriteI2C(desAlias0,0x41,0x82)
    board.WriteI2C(desAlias0,0x42,0x3) #Enable force DP rate with calibration disabled
    board.WriteI2C(desAlias0,0x41,0x91)
    board.WriteI2C(desAlias0,0x42,0xc) #Force 4 lanes on DP port 0
    board.WriteI2C(desAlias0,0x40,0x30) #Disable DP SSCG
    board.WriteI2C(desAlias0,0x41,0xf)
    board.WriteI2C(desAlias0,0x42,0x1)
    board.WriteI2C(desAlias0,0x1,0x40)
    
    
    ## *********************************************
    ## Setup DP ports
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x12) #Select Port 1 registers
    board.WriteI2C(desAlias0,0x46,0x0) #Disable DP Port 1
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port 0 registers
    board.WriteI2C(desAlias0,0x1,0x40) #DP-TX-PLL RESET Applied
    
    
    ## *********************************************
    ## Map video to display output
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x3) #Select both Output Ports
    board.WriteI2C(desAlias0,0xd0,0xc) #Enable FPD_RX video forward to Output Port
    board.WriteI2C(desAlias0,0xd1,0xf) #Every stream forwarded on DC
    board.WriteI2C(desAlias0,0xd6,0x8) #Send Stream 0 to Output Port 0 and Send Stream 1 to Output Port 1
    board.WriteI2C(desAlias0,0xd7,0x0) #FPD3 to local display output mapping disabled
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port 0 
    
    
    ## *********************************************
    ## Set up deserializer Patgen
    ## *********************************************
    board.WriteI2C(desAlias0,0x40,0x50) #Set Patgen page
    board.WriteI2C(desAlias0,0x41,0x1) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0xc) #Set bit per pixel
    board.WriteI2C(desAlias0,0x41,0x2) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0x86) #Set patgen address auto increment
    board.WriteI2C(desAlias0,0x41,0x3) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0x30) #Set patgen THW
    board.WriteI2C(desAlias0,0x42,0xc) #Set patgen THW
    board.WriteI2C(desAlias0,0x42,0x32) #Set patgen TVW
    board.WriteI2C(desAlias0,0x42,0x7) #Set patgen TVW
    board.WriteI2C(desAlias0,0x42,0x40) #Set patgen AHW
    board.WriteI2C(desAlias0,0x42,0xb) #Set patgen AHW
    board.WriteI2C(desAlias0,0x42,0x8) #Set patgen AVW
    board.WriteI2C(desAlias0,0x42,0x7) #Set patgen AVW
    board.WriteI2C(desAlias0,0x42,0x3c) #Set patgen HSW
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen HSW
    board.WriteI2C(desAlias0,0x42,0x2) #Set patgen VSW
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen VSW
    board.WriteI2C(desAlias0,0x42,0x3c) #Set patgen HBP
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen HBP
    board.WriteI2C(desAlias0,0x42,0x8) #Set patgen VBP
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen VBP
    board.WriteI2C(desAlias0,0x42,0x0) #HSYNC Polarity = +, VSYNC Polarity = +
    board.WriteI2C(desAlias0,0x41,0x0) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0x95) #Enable Patgen color bar
    
    
    ## *********************************************
    ## Program quad pixel clock for DP port 0
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port0 registers
    board.WriteI2C(desAlias0,0xb1,0x1) #Enable clock divider
    board.WriteI2C(desAlias0,0xb2,0xf4) #Program M value lower byte
    board.WriteI2C(desAlias0,0xb3,0x42) #Program M value middle byte
    board.WriteI2C(desAlias0,0xb4,0x5) #Program M value upper byte
    board.WriteI2C(desAlias0,0xb5,0x80) #Program N value lower byte
    board.WriteI2C(desAlias0,0xb6,0xf5) #Program N value middle byte
    board.WriteI2C(desAlias0,0xb7,0x20) #Program N value upper byte
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port 0 registers
    
    
    ## *********************************************
    ## Setup DTG for port 0
    ## *********************************************
    board.WriteI2C(desAlias0,0x40,0x50) #Select DTG Page
    board.WriteI2C(desAlias0,0x41,0x20)
    board.WriteI2C(desAlias0,0x42,0x93) #Set up Local Display DTG BPP, Sync Polarities, and Measurement Type
    board.WriteI2C(desAlias0,0x41,0x29) #Set Hstart
    board.WriteI2C(desAlias0,0x42,0x80) #Hstart upper byte
    board.WriteI2C(desAlias0,0x41,0x2a)
    board.WriteI2C(desAlias0,0x42,0x78) #Hstart lower byte
    board.WriteI2C(desAlias0,0x41,0x2f) #Set HSW
    board.WriteI2C(desAlias0,0x42,0x40) #HSW upper byte
    board.WriteI2C(desAlias0,0x41,0x30)
    board.WriteI2C(desAlias0,0x42,0x3c) #HSW lower byte
    
    
    ## *********************************************
    ## Program DPTX for DP port 0
    ## *********************************************
    board.WriteI2C(desAlias0,0x48,0x1) #Enable APB interface
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xa4) #Set bit per color
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x20)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xb8) #Set pixel width
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x4)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xac) #Set DP Mvid
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0xbc)
    board.WriteI2C(desAlias0,0x4c,0x51)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xb4) #Set DP Nvid
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x0)
    board.WriteI2C(desAlias0,0x4c,0x80)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc8) #Set TU Mode
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x0)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xb0) #Set TU Size
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x40)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x1e)
    board.WriteI2C(desAlias0,0x4e,0xc)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc8) #Set FIFO Size
    board.WriteI2C(desAlias0,0x4a,0x0)
    board.WriteI2C(desAlias0,0x4b,0x6)
    board.WriteI2C(desAlias0,0x4c,0x40)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xbc) #Set data count
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x70)
    board.WriteI2C(desAlias0,0x4c,0x8)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc0) #Disable STREAM INTERLACED
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x0)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc4) #Set SYNC polarity
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0xc)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    
    
    ## *********************************************
    ## Release Des DTG reset
    ## *********************************************
    print("Release Des 0 DTG reset and enable video output")
    board.WriteI2C(desAlias0,0x40,0x50) #Select DTG Page
    board.WriteI2C(desAlias0,0x41,0x32)
    board.WriteI2C(desAlias0,0x42,0x5) #Release Local Display Output Port 0 DTG with WDT Enabled
    board.WriteI2C(desAlias0,0x41,0x62)
    board.WriteI2C(desAlias0,0x42,0x5) #Release Local Display Output Port 1 DTG with WDT Enabled
    
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0x80) #Set Htotal
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x30)
    board.WriteI2C(desAlias0,0x4c,0xc)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    ## *********************************************
    ## DP Lane Remapping
    ## *********************************************
    indirect_page = 11
    board.WriteI2C(desAlias0,0x40, indirect_page << 2)
    board.WriteI2C(desAlias0,0x41, 0x90)
    board.WriteI2C(desAlias0,0x42, 0x1F) #Enable DP Lane Remapping
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0x2C) #Enable DP output
    board.WriteI2C(desAlias0,0x4a,0x00)
    board.WriteI2C(desAlias0,0x4b,0x1b)
    board.WriteI2C(desAlias0,0x4c,0x01)
    board.WriteI2C(desAlias0,0x4d,0x00)
    board.WriteI2C(desAlias0,0x4e,0x00)
    
    ## *********************************************
    ## Enable DP 0 output
    ## *********************************************
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0x84) #Enable DP output
    board.WriteI2C(desAlias0,0x4a,0x0)
    board.WriteI2C(desAlias0,0x4b,0x1)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)

    客户能否对此进行测试,并告诉我他们能否显示显示屏。

  • hello 感谢您的支持!

    从您提供的脚本内容看,并没有dp线序的重新映射。

    验证后,显示屏也未能显示pattern画面。

    另外补充一个信息,屏端的dp接收只支持2.7G的速率

  • 您好

    您可以尝试附加此脚本吗? 我所做的就是将DPTX速率更改为2.7Gbps。

    ## TI Confidential - NDA Restrictions
    ## 
    ## Copyright 2018 Texas Instruments Incorporated. All rights reserved.
    ## 
    ## IMPORTANT: Your use of this Software is limited to those specific rights
    ## granted under the terms of a software license agreement between the user who
    ## downloaded the software, his/her employer (which must be your employer) and
    ## Texas Instruments Incorporated (the License). You may not use this Software
    ## unless you agree to abide by the terms of the License. The License limits your
    ## use, and you acknowledge, that the Software may not be modified, copied or
    ## distributed unless embedded on a Texas Instruments microcontroller which is
    ## integrated into your product. Other than for the foregoing purpose, you may
    ## not use, reproduce, copy, prepare derivative works of, modify, distribute,
    ## perform, display or sell this Software and/or its documentation for any
    ## purpose.
    ## 
    ## YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
    ## PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
    ## INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
    ## NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS
    ## INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
    ## NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL
    ## EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT
    ## LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL
    ## DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS,
    ## TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
    ## LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
    ## 
    ## Should you have any questions regarding your right to use this Software,
    ## contact Texas Instruments Incorporated at www.TI.com.
    ## 
    
    ## DS90xx98x-Q1 Auto Script Generation Output
    ## Tool Version 5.6
    
    
    import time 
    ## Deserializer 0: DS90UH984-Q1
    ## User Inputs:
    ## Deserializer I2C Address = 0x58
    ## Deserializer I2C Alias = 0x5a
    ## Override of DES eFuse enabled
    ## DP Port 0 Enabled
    ## DP Port 0 PatGen Enabled
    ## Patgen Video Properties:
    ## Total Horizontal Pixels = 3120
    ## Total Vertical Lines = 1842
    ## Active Horizontal Pixels = 2880
    ## Active Vertical Lines = 1800
    ## Horizontal Back Porch = 60
    ## Vertical Back Porch = 8
    ## Horizontal Sync = 60
    ## Vertical Sync = 2
    ## Horizontal Front Porch = 120
    ## Vertical Front Porch = 32
    ## Horizontal Sync Polarity = Positive
    ## Vertical Sync Polarity = Positive
    ## Bits per pixel = 24
    ## Pixel Clock = 344.82MHz
    ## DP Port 1 Disabled
    ## DP Port 1 PatGen Disabled
    ## DP Rate set to 2.7 Gbps
    ## DP lane number set to 4 lanes
    
    desAddr0 = 0x58
    desAlias0 = 0x58
    
    ## *********************************************
    ## Check for DES0 Communication
    ## *********************************************
    DES_READBACK = board.ReadI2C(desAlias0,0x0,1)
    if DES_READBACK == 0:
      print "Error - no DES detected"
    else:
      print "Deserializer detected successfully"
    ## *********************************************
    ## Override DES0 eFuse
    ## *********************************************
    board.WriteI2C(desAlias0,0x49,0xc)
    board.WriteI2C(desAlias0,0x4a,0x0)
    board.WriteI2C(desAlias0,0x48,0x1b)
    UNIQUEID_Reg0xC = board.ReadI2C(desAlias0,0x4b,1)
    if UNIQUEID_Reg0xC != 0x19 and DES_READBACK != 0:
      print "Non-Final DES Silicon Detected - Overriding DES eFuse"
      board.WriteI2C(desAlias0,0xe,0x3)
      board.WriteI2C(desAlias0,0x61,0x0)
      board.WriteI2C(desAlias0,0x5a,0x74)
      board.WriteI2C(desAlias0,0x5f,0x4)
      board.WriteI2C(desAlias0,0x40,0x3c)
      board.WriteI2C(desAlias0,0x41,0xf5)
      board.WriteI2C(desAlias0,0x42,0x21)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x43)
      board.WriteI2C(desAlias0,0x42,0x3)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x43)
      board.WriteI2C(desAlias0,0x42,0x3)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x5)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x5)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x6)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x6)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x37)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x37)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x8d)
      board.WriteI2C(desAlias0,0x42,0xff)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x8d)
      board.WriteI2C(desAlias0,0x42,0xff)
      board.WriteI2C(desAlias0,0x40,0x5c)
      board.WriteI2C(desAlias0,0x41,0x20)
      board.WriteI2C(desAlias0,0x42,0x3c)
      board.WriteI2C(desAlias0,0x41,0xa0)
      board.WriteI2C(desAlias0,0x42,0x3c)
      board.WriteI2C(desAlias0,0x40,0x38)
      board.WriteI2C(desAlias0,0x41,0x24)
      board.WriteI2C(desAlias0,0x42,0x61)
      board.WriteI2C(desAlias0,0x41,0x54)
      board.WriteI2C(desAlias0,0x42,0x61)
      board.WriteI2C(desAlias0,0x41,0x2c)
      board.WriteI2C(desAlias0,0x42,0x19)
      board.WriteI2C(desAlias0,0x41,0x5c)
      board.WriteI2C(desAlias0,0x42,0x19)
      board.WriteI2C(desAlias0,0x41,0x2e)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x5e)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x18)
      board.WriteI2C(desAlias0,0x42,0x4b)
      board.WriteI2C(desAlias0,0x41,0x38)
      board.WriteI2C(desAlias0,0x42,0x4b)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x15)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x15)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x4a)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x4a)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xaa)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xaa)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xab)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xab)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xac)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xac)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xad)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xad)
      board.WriteI2C(desAlias0,0x42,0x4c)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xae)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xae)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0xaf)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0xaf)
      board.WriteI2C(desAlias0,0x42,0xac)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x5)
      board.WriteI2C(desAlias0,0x42,0xa)
      board.WriteI2C(desAlias0,0x41,0x25)
      board.WriteI2C(desAlias0,0x42,0xa)
      board.WriteI2C(desAlias0,0x40,0x54)
      board.WriteI2C(desAlias0,0x41,0x89)
      board.WriteI2C(desAlias0,0x42,0x38)
      board.WriteI2C(desAlias0,0x40,0x58)
      board.WriteI2C(desAlias0,0x41,0x89)
      board.WriteI2C(desAlias0,0x42,0x38)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x1a)
      board.WriteI2C(desAlias0,0x42,0x8)
      board.WriteI2C(desAlias0,0x41,0x3a)
      board.WriteI2C(desAlias0,0x42,0x8)
      board.WriteI2C(desAlias0,0x40,0x38)
      board.WriteI2C(desAlias0,0x41,0x6f)
      board.WriteI2C(desAlias0,0x42,0x54)
      board.WriteI2C(desAlias0,0x41,0x70)
      board.WriteI2C(desAlias0,0x42,0x5)
      board.WriteI2C(desAlias0,0x41,0x80)
      board.WriteI2C(desAlias0,0x42,0x55)
      board.WriteI2C(desAlias0,0x41,0x81)
      board.WriteI2C(desAlias0,0x42,0x44)
      board.WriteI2C(desAlias0,0x41,0x82)
      board.WriteI2C(desAlias0,0x42,0x3)
      board.WriteI2C(desAlias0,0x41,0x86)
      board.WriteI2C(desAlias0,0x42,0x2c)
      board.WriteI2C(desAlias0,0x41,0x87)
      board.WriteI2C(desAlias0,0x42,0x6)
      board.WriteI2C(desAlias0,0x41,0x18)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x41,0x48)
      board.WriteI2C(desAlias0,0x42,0x32)
      board.WriteI2C(desAlias0,0x41,0x19)
      board.WriteI2C(desAlias0,0x42,0xe)
      board.WriteI2C(desAlias0,0x41,0x49)
      board.WriteI2C(desAlias0,0x42,0xe)
      board.WriteI2C(desAlias0,0x41,0x17)
      board.WriteI2C(desAlias0,0x42,0x72)
      board.WriteI2C(desAlias0,0x41,0x47)
      board.WriteI2C(desAlias0,0x42,0x72)
      board.WriteI2C(desAlias0,0x41,0x26)
      board.WriteI2C(desAlias0,0x42,0x87)
      board.WriteI2C(desAlias0,0x41,0x56)
      board.WriteI2C(desAlias0,0x42,0x87)
      board.WriteI2C(desAlias0,0x40,0x2c)
      board.WriteI2C(desAlias0,0x41,0x3d)
      board.WriteI2C(desAlias0,0x42,0xd5)
      board.WriteI2C(desAlias0,0x41,0x3e)
      board.WriteI2C(desAlias0,0x42,0x15)
      board.WriteI2C(desAlias0,0x41,0x7d)
      board.WriteI2C(desAlias0,0x42,0xd5)
      board.WriteI2C(desAlias0,0x41,0x7e)
      board.WriteI2C(desAlias0,0x42,0x15)
      board.WriteI2C(desAlias0,0x41,0x82)
      board.WriteI2C(desAlias0,0x42,0x1)
      board.WriteI2C(desAlias0,0x41,0x29)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x41)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x42)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x24)
      board.WriteI2C(desAlias0,0x41,0x20)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x21)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x41,0x23)
      board.WriteI2C(desAlias0,0x42,0x30)
      board.WriteI2C(desAlias0,0x40,0x10)
      board.WriteI2C(desAlias0,0x41,0x14)
      board.WriteI2C(desAlias0,0x42,0x78)
      board.WriteI2C(desAlias0,0x41,0x35)
      board.WriteI2C(desAlias0,0x42,0x7e)
      board.WriteI2C(desAlias0,0x40,0x6c)
      board.WriteI2C(desAlias0,0x41,0xd)
      board.WriteI2C(desAlias0,0x42,0x0)
      board.WriteI2C(desAlias0,0x40,0x1c)
      board.WriteI2C(desAlias0,0x41,0x8)
      board.WriteI2C(desAlias0,0x42,0x13)
      board.WriteI2C(desAlias0,0x41,0x28)
      board.WriteI2C(desAlias0,0x42,0x13)
      board.WriteI2C(desAlias0,0x40,0x14)
      board.WriteI2C(desAlias0,0x41,0x62)
      board.WriteI2C(desAlias0,0x42,0x31)
      board.WriteI2C(desAlias0,0x41,0x72)
      board.WriteI2C(desAlias0,0x42,0x31)
      board.WriteI2C(desAlias0,0x41,0x61)
      board.WriteI2C(desAlias0,0x42,0x26)
      board.WriteI2C(desAlias0,0x41,0x71)
      board.WriteI2C(desAlias0,0x42,0x26)
      board.WriteI2C(desAlias0,0x1,0x1) #Soft Reset DES
      time.sleep(0.04)
    
    ## *********************************************
    ## Hold Des DTG in reset
    ## *********************************************
    print("Hold Des 0 DTG in reset and configure video settings")
    board.WriteI2C(desAlias0,0x40,0x50) #Select DTG Page
    board.WriteI2C(desAlias0,0x41,0x32)
    board.WriteI2C(desAlias0,0x42,0x6) #Hold Local Display Output Port 0 DTG in Reset
    board.WriteI2C(desAlias0,0x41,0x62)
    board.WriteI2C(desAlias0,0x42,0x6) #Hold Local Display Output Port 1 DTG in Reset
    
    
    ## *********************************************
    ## Disable Stream Mapping
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x3) #Select both Output Ports
    board.WriteI2C(desAlias0,0xd0,0x0) #Disable FPD4 video forward to Output Port
    board.WriteI2C(desAlias0,0xd7,0x0) #Disable FPD3 video forward to Output Port
    
    
    ## *********************************************
    ## Force DP Rate
    ## *********************************************
    board.WriteI2C(desAlias0,0x40,0x2c) #Select DP Page
    board.WriteI2C(desAlias0,0x41,0x81)
    board.WriteI2C(desAlias0,0x42,0x60) #Set DP Rate to 2.7Gbps
    board.WriteI2C(desAlias0,0x41,0x82)
    board.WriteI2C(desAlias0,0x42,0x3) #Enable force DP rate with calibration disabled
    board.WriteI2C(desAlias0,0x41,0x91)
    board.WriteI2C(desAlias0,0x42,0xc) #Force 4 lanes on DP port 0
    board.WriteI2C(desAlias0,0x40,0x30) #Disable DP SSCG
    board.WriteI2C(desAlias0,0x41,0xf)
    board.WriteI2C(desAlias0,0x42,0x1)
    board.WriteI2C(desAlias0,0x1,0x40)
    
    
    ## *********************************************
    ## Setup DP ports
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x12) #Select Port 1 registers
    board.WriteI2C(desAlias0,0x46,0x0) #Disable DP Port 1
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port 0 registers
    board.WriteI2C(desAlias0,0x1,0x40) #DP-TX-PLL RESET Applied
    
    
    ## *********************************************
    ## Map video to display output
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x3) #Select both Output Ports
    board.WriteI2C(desAlias0,0xd0,0xc) #Enable FPD_RX video forward to Output Port
    board.WriteI2C(desAlias0,0xd1,0xf) #Every stream forwarded on DC
    board.WriteI2C(desAlias0,0xd6,0x8) #Send Stream 0 to Output Port 0 and Send Stream 1 to Output Port 1
    board.WriteI2C(desAlias0,0xd7,0x0) #FPD3 to local display output mapping disabled
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port 0 
    
    
    ## *********************************************
    ## Set up deserializer Patgen
    ## *********************************************
    board.WriteI2C(desAlias0,0x40,0x50) #Set Patgen page
    board.WriteI2C(desAlias0,0x41,0x1) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0xc) #Set bit per pixel
    board.WriteI2C(desAlias0,0x41,0x2) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0x86) #Set patgen address auto increment
    board.WriteI2C(desAlias0,0x41,0x3) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0x30) #Set patgen THW
    board.WriteI2C(desAlias0,0x42,0xc) #Set patgen THW
    board.WriteI2C(desAlias0,0x42,0x32) #Set patgen TVW
    board.WriteI2C(desAlias0,0x42,0x7) #Set patgen TVW
    board.WriteI2C(desAlias0,0x42,0x40) #Set patgen AHW
    board.WriteI2C(desAlias0,0x42,0xb) #Set patgen AHW
    board.WriteI2C(desAlias0,0x42,0x8) #Set patgen AVW
    board.WriteI2C(desAlias0,0x42,0x7) #Set patgen AVW
    board.WriteI2C(desAlias0,0x42,0x3c) #Set patgen HSW
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen HSW
    board.WriteI2C(desAlias0,0x42,0x2) #Set patgen VSW
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen VSW
    board.WriteI2C(desAlias0,0x42,0x3c) #Set patgen HBP
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen HBP
    board.WriteI2C(desAlias0,0x42,0x8) #Set patgen VBP
    board.WriteI2C(desAlias0,0x42,0x0) #Set patgen VBP
    board.WriteI2C(desAlias0,0x42,0x0) #HSYNC Polarity = +, VSYNC Polarity = +
    board.WriteI2C(desAlias0,0x41,0x0) #Set patgen address
    board.WriteI2C(desAlias0,0x42,0x95) #Enable Patgen color bar
    
    
    ## *********************************************
    ## Program quad pixel clock for DP port 0
    ## *********************************************
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port0 registers
    board.WriteI2C(desAlias0,0xb1,0x1) #Enable clock divider
    board.WriteI2C(desAlias0,0xb2,0xf4) #Program M value lower byte
    board.WriteI2C(desAlias0,0xb3,0x42) #Program M value middle byte
    board.WriteI2C(desAlias0,0xb4,0x5) #Program M value upper byte
    board.WriteI2C(desAlias0,0xb5,0xc0) #Program N value lower byte
    board.WriteI2C(desAlias0,0xb6,0x7a) #Program N value middle byte
    board.WriteI2C(desAlias0,0xb7,0x10) #Program N value upper byte
    board.WriteI2C(desAlias0,0xe,0x1) #Select Port 0 registers
    
    
    ## *********************************************
    ## Setup DTG for port 0
    ## *********************************************
    board.WriteI2C(desAlias0,0x40,0x50) #Select DTG Page
    board.WriteI2C(desAlias0,0x41,0x20)
    board.WriteI2C(desAlias0,0x42,0x93) #Set up Local Display DTG BPP, Sync Polarities, and Measurement Type
    board.WriteI2C(desAlias0,0x41,0x29) #Set Hstart
    board.WriteI2C(desAlias0,0x42,0x80) #Hstart upper byte
    board.WriteI2C(desAlias0,0x41,0x2a)
    board.WriteI2C(desAlias0,0x42,0x78) #Hstart lower byte
    board.WriteI2C(desAlias0,0x41,0x2f) #Set HSW
    board.WriteI2C(desAlias0,0x42,0x40) #HSW upper byte
    board.WriteI2C(desAlias0,0x41,0x30)
    board.WriteI2C(desAlias0,0x42,0x3c) #HSW lower byte
    
    
    ## *********************************************
    ## Program DPTX for DP port 0
    ## *********************************************
    board.WriteI2C(desAlias0,0x48,0x1) #Enable APB interface
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xa4) #Set bit per color
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x20)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xb8) #Set pixel width
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x4)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xac) #Set DP Mvid
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x78)
    board.WriteI2C(desAlias0,0x4c,0xa3)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xb4) #Set DP Nvid
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x0)
    board.WriteI2C(desAlias0,0x4c,0x80)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc8) #Set TU Mode
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x0)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xb0) #Set TU Size
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x40)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x3d)
    board.WriteI2C(desAlias0,0x4e,0x6)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc8) #Set FIFO Size
    board.WriteI2C(desAlias0,0x4a,0x0)
    board.WriteI2C(desAlias0,0x4b,0x4)
    board.WriteI2C(desAlias0,0x4c,0x40)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xbc) #Set data count
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x70)
    board.WriteI2C(desAlias0,0x4c,0x8)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc0) #Disable STREAM INTERLACED
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x0)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0xc4) #Set SYNC polarity
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0xc)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    ## *********************************************
    ## DP Lane Remapping
    ## *********************************************
    indirect_page = 11
    board.WriteI2C(desAlias0,0x40, indirect_page << 2)
    board.WriteI2C(desAlias0,0x41, 0x90)
    board.WriteI2C(desAlias0,0x42, 0x1F) #Enable DP Lane Remapping
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0x2C) #Enable DP output
    board.WriteI2C(desAlias0,0x4a,0x00)
    board.WriteI2C(desAlias0,0x4b,0x1b)
    board.WriteI2C(desAlias0,0x4c,0x01)
    board.WriteI2C(desAlias0,0x4d,0x00)
    board.WriteI2C(desAlias0,0x4e,0x00)
    
    ## *********************************************
    ## Release Des DTG reset
    ## *********************************************
    print("Release Des 0 DTG reset and enable video output")
    board.WriteI2C(desAlias0,0x40,0x50) #Select DTG Page
    board.WriteI2C(desAlias0,0x41,0x32)
    board.WriteI2C(desAlias0,0x42,0x5) #Release Local Display Output Port 0 DTG with WDT Enabled
    board.WriteI2C(desAlias0,0x41,0x62)
    board.WriteI2C(desAlias0,0x42,0x5) #Release Local Display Output Port 1 DTG with WDT Enabled
    
    
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0x80) #Set Htotal
    board.WriteI2C(desAlias0,0x4a,0x1)
    board.WriteI2C(desAlias0,0x4b,0x30)
    board.WriteI2C(desAlias0,0x4c,0xc)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)
    
    ## *********************************************
    ## Enable DP 0 output
    ## *********************************************
    board.WriteI2C(desAlias0,0x48,0x1)
    board.WriteI2C(desAlias0,0x49,0x84) #Enable DP output
    board.WriteI2C(desAlias0,0x4a,0x0)
    board.WriteI2C(desAlias0,0x4b,0x1)
    board.WriteI2C(desAlias0,0x4c,0x0)
    board.WriteI2C(desAlias0,0x4d,0x0)
    board.WriteI2C(desAlias0,0x4e,0x0)

    Lane Remap脚本是我将其添加到以前的代码中,并且我也将其添加到该脚本中:

    如果运行脚本后屏幕没有显示增补数据,可以尝试执行软重置写入0x1以注册0x1。