DS90UB929-Q1: How to configure to achieve HDMI video transmission?

Part Number: DS90UB929-Q1

Tool/software:

The HDMI input is connected to the DS90UB929 chip, and then transmitted via FPD-LINK to the DS90UB928 chip for LVDS output display. However, the displayed image is very blurry. How should I initialize and configure the DS90UB929 chip? Which registers need to be configured?

  • Hello,

    Do you have a photo showing the blurry image output and what is the target video resolution?

    Best,

    Jack

  • blurry imagenormally projected image

    The resolution of the image is 960*480.

    The first picture shows a blurry image.(The HDMI input is connected to the DS90UB929 chip, and then transmitted via FPD-LINK to the DS90UB928 chip for LVDS output display.)

    The second picture shows a normal one.(The HDMI signal is directly connected to the projection device without going through SerDes).

    Is it because of the register configuration?Which registers of SerDes need to be configured?Thanks.

  • Hi,

    I have attached an example register configuration of the DS90UB929 that includes the recommended register settings outlined in DS90UB929 Datasheet Section 9.1.

    If you are still encountering issues with the blurry screen after adding these configurations, can you send over a copy of the DS90UB929 MainPage registers for a blurry screen and a normal screen so we can observe if there is any difference?

    For the EDID, are you manually programming the internal SRAM or using an external EEPROM?

    """
      
      Copyright 2020 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.
    
    """
    
    import time
    
    # System dependant variables - adjust according to system 
    UB929 = 0x18 # 949 I2C Address
    
    ##### Init A Sequence
    
    board.WriteI2C(UB929,0x5B,0x03) # Disable Reset on Frequency Change
    
    board.WriteI2C(UB929,0x16,0x02) # Adjust BCC watchdog timer to minimum
    board.WriteI2C(UB929,0x4,0x90) # Gate video being sent during blanking interval
    
    ##### Read State Machine Status
    
    count = 0
    board.WriteI2C(UB929,0x23,0x80)
    board.WriteI2C(UB929,0x24,0x80)
    mask = int('11111',2)
    state = board.ReadI2C(UB929,0x24,1)
    while (state & mask) != 27:   #27 = 5'b11011
        time.sleep(0.01)  #10ms delay
        state = board.ReadI2C(UB929,0x24,1)
        count = count +1
        if count == 10:
            print("Error: Serializer is not in expected state. TMDS clock may not be stabilized")
            break
    
    board.WriteI2C(UB929,0x23,0x0)
    board.WriteI2C(UB929,0x24,0x0)
    
    ##### Init B Sequence
    
    # Reset HDMI PLL after TMDS clock has stabilized 
    board.WriteI2C(UB929,0x40,0x10)
    board.WriteI2C(UB929,0x41,0x49)
    board.WriteI2C(UB929,0x42,0x10)
    board.WriteI2C(UB929,0x42,0x00)
    
    # Reset FPD PLL 
    board.WriteI2C(UB929,0x40,0x14)
    board.WriteI2C(UB929,0x41,0x49)
    board.WriteI2C(UB929,0x42,0x10)
    board.WriteI2C(UB929,0x42,0x00)
    
    

    Best,

    Jack

  • Thank you. I have already solved this problem.

  • I will go ahead and close this thread since the issue has been resolved.

    Thank you!