DS90UB941AS-Q1: dual link mode 的寄存器配置问题

Part Number: DS90UB941AS-Q1

硬件设计上是只接了DSI0    能支持到1080p60的dual link mode的输出吗? 有寄存器参考配置吗?

  • 您好,1080p60 需要像素时钟频率为148.5MHz,而941AS的dual link的像素时钟为210Mhz。所以是可以支持的。

    并且datasheet中也有描述:

    Supports pixel clock frequency up to 210 MHz for 3K (2880x1620) at 30Hz, QXGA (2048x1536), 2K (2880x1080), WUXGA (1920x1200), or 1080p60 (1920x1080) resolutions with 24-bit color depth。 

    dual link模式下,如果和948或940搭配使用的话 ,是自动可以识别的,不需要单独配置dual link 模式。

    或者也可以通过寄存器DUAL_CTL1 配置为force dual link mode。

  • 不好意思,需要补充下,刚看到您的电路是只接了DSI0, 那么这种情况下只能是single link mode的呢。

    无法配置为dual link mode。 

  • 也就是我们目前电路设计 就无法做到 dual link?  必须要接双DSI才行 对吧?

  • 上图不是只接的一个DSI  然后输出dual link mode?

  • 您好,不好意思,是的,上图这种使用两个deserilaizer的也是dual link。 single link和dual link的定义是通过下行端口即receiver 或者传输的视频源来决定的,

    比如derseralizer 使用948或者940,输入有两个通道,所以941 和948或者941连接的时候就是dual link。

    比如928或者926输入只有一个通道,那么就是single link。

    所以按照您的描述,输出TX0 和TX分别和deserailzier的RX0和RX1连接的话, 即为dual link。

    但是dual link的话,每个通道像素时钟为一半,即最高105Mhz,而1080p60的话需要148.5MHz的像素时钟,所以是不能同时输出两路1080p60分辨率的。

  • 您可能理解错我的意思了

    我的意思是 两个link 组成一个1080p60.     而不是 每个link都是1080p60

  • 确认下您的应用,单通道DSI0 输入,输出双路DOUT0 和DOUT1,分别接两个deserializer是吗? 

    如何将两个link组合成一个1080p60,DSI0和DSI1 两路输入,然后输出一路1080P60? 

  • 单通道DSI0 输入,输出双路DOUT0 和DOUT1 ,接一个deserializer,一个948  deserializer 配合使用不行吗?

  • 可以,也就是说941 DSI0 输入,DOUT0和DOUT1 输出,接948。 相当于948 dual link 输入,948的输出可以是single OpenLDI输出也可以是dual OLDI输出,但是时钟都能达到192Mhz,所以1080p60是支持的。

  • 那941 这边 DSI0 单输入 也没问题对吧?  941这边有参考配置说明吗  该如何去配置?

  • 您好,我的理解是,如果948 这边OLDI 需要1080p60 输出,那么FPD link端也需要支持1080p60. 

    而对于DS90UB941来说,如果只使用DSI0 single input,像素时钟最大为105Mhz, 这样的话941的FPD  link端是无法支持1080p60输出的,所以需要941也是dual DSI input才行。

    所以如果只是用DSI0或者DSI1 input, 整个架构应用是没问题的,但是对于948这端来说输出是达不到1080p60的,720p没问题,因为941的single input时钟为105Mhz。

  • 先不考虑我们用的什么derseralizer

     只是用DSI0 input, dual link 输出的话, 整个架构应用是没问题的  那这个我941应该怎么配置呢、?

  • 寄存器0x4F DUAL_DSI_EN  bit6=0 single DSI mode。

    DSI_PORT_SEL bit50  DSI port 0

    bit[3:2]=11 4lane 

    dual link 输出,寄存器0x5B bit[2:0].可以配置为force dual link mode,即011, 也可以配置为: Auto-Detect FPD link mode 即为000.

    另外就是寄存器0x01,可以enable DSI input。

    enable DSI input以及DSI lane selection 既可以通过寄存器配置,也可以通过MODE_SEL[1:0] pin 配置,参考Table8-8.

  • 输出port0  和port1的 那个clk 不知道怎么配,寄存器0x42  选择port0 要配一次  选择port1 要配一次?

    我目前配置如下:

    {0x01,0x08}, //Disable DSI

    {0x1E,0x01}, 
    {0x1E,0x04}, 

    {0x1E,0x01}, 
    {0x03,0x9A}, 

    {0x1E,0x01}, 
    {0x40,0x04}, 
    {0x41,0x21}, 
    {0x42,0x60}, 

    {0x1E,0x02}, 
    {0x40,0x04}, 
    {0x41,0x21}, 
    {0x42,0x60}, 

    {0x1E,0x01}, 
    {0x5B,0x03}, 
    {0x4F,0x8C}, 

    {0x1E,0x01}, 
    {0x40,0x04}, 
    {0x41,0x05}, 
    {0x42,0x18},

    {0x1E,0x02},
    {0x4F,0x8C}, 

    {0x1E,0x02},
    {0x40,0x04}, 
    {0x41,0x05}, 
    {0x42,0x18},

    {0x01,0x00}, //Enable DSI

  • 输出port 0 和输出port1 配置好之后,不需要配置DSIx_CLKP/N, 因为每个link 都包含一对clock+4 对data。所以配置FPD link port0或者port1 是把clock包含在内的。

    间接寄存器0x40~0x42 是在初始化的时候enable DSI input之前需要加上的。datasheet 中的配置例子因为是配置的impedant 2:2  mode,单独对port 0 和port1 分别进行了配置,所以配了两次。

    在您的应用中,FDP link 配置为dual link,我认为在enable DSI input之前配置一次就好了。

  • 配置DSIx_CLKP/N 这个不是得选 port ,不选port 直接配置也行?

    而且941内部需要 split  分奇偶信号嘛  不然那这个数据图像怎发送的 ? 

       两个link 都发送1080p? 

  • 这个问题我需要再确认下。

    另外,如果您是Single DSI -> 941AS -> Dual FPD -> 948 -> Display这个应用,是可以支持到1080p的。 

  • Single DSI -> 941AS -> Dual FPD -> 948 -> Display这个应用,是可以支持到1080p的  

    能提供下参考配置吗?

  • 您好,下面是941AS配置为1080p的例子,请参考:

    # 1920x1080p60, Dual Link FPD III
    # PCLK = 148.5MHz
    # DSI clock = 445.5MHz
    # DSI Lane Speed = 891Mbps/lane
    # 4 Lanes DSI
    # DSI input port 0
    # DSI non-burst mode with sync pulses
    # MODE_SEL0 strap = No. 3
    # MODE_SEL1 strap = No. 0 or 1

    import time

    UB941AS = 0x18

    board.WriteI2C(UB941AS,0x01,0x02) # Reset
    time.sleep(0.1)
    board.WriteI2C(UB941AS,0x01,0x08) # Disable DSI

    board.WriteI2C(UB941AS,0x40,0x04) # TSKIP_CNT
    board.WriteI2C(UB941AS,0x41,0x05) # TSKIP_CNT
    board.WriteI2C(UB941AS,0x42,0x30) # TSKIP_CNT

    board.WriteI2C(UB941AS,0x40,0x10) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x41,0x86) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x42,0x0A) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x41,0x94) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x42,0x0A) # Init DSI Clock Settings (From Section 10.2 of datasheet)

    board.WriteI2C(UB941AS,0x01,0x00) #Release DSI

  • board.WriteI2C(UB941AS,0x40,0x10) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x41,0x86) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x42,0x0A) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x41,0x94) # Init DSI Clock Settings (From Section 10.2 of datasheet)
    board.WriteI2C(UB941AS,0x42,0x0A) # Init DSI Clock Settings (From Section 10.2 of datasheet)  

    您好 ,这个还是没看懂 

    看datasheet 里面0x86  0x94 这两个寄存器 没明白  能说明下吗?

    而且0x94是针对DSI1 的配置  应该不需要吧

  • 如上参考配置:只对 TSKIP_CNT这个配置了,  DSI input   ,   Lane   ,FPD  Link  mode   全都没有呀 ,你确定可以?

  • 这只是一个基本的使用941AS应用1080p的配置,并不是完整例程,所以您说的 DSI input   ,   Lane   ,FPD  Link  mode 都是需要再配置的。

    另外,您也可以将您的问题提交到英文E2E论坛上,由美国的资深工程师给您解答。https://e2e.ti.com/support/interface-group/

  • 948不需要配置吗?

  • 如果主机和941接在一起, 那么需要配置的是941,948和display在整个link中都作为slave。

  • 具体怎么读写948的寄存器呢?

  • 您好,我们有专门FPD  link的培训视频,您可以参考一下,

    https://training.ti.com/fpd-link-learning-center?context=1134310

    另外我这边发现您也咨询了同样的问题在另一个帖子里,您可以参考上面关于FPD link的培训视频,也可以参考同事的建议,登录英文E2E咨询美国工程师。

    https://e2echina.ti.com/support/interface/f/interface-forum/211414/ds90ub941as-q1-single-dsi---941as---dual-fpd---948---display-1080p?tisearch=e2e-sitesearch&keymatch=%2520user%253A114803#

  • 我想知道具体 怎么操作  948的寄存器

  • "这只是一个基本的使用941AS应用1080p的配置,并不是完整例程" ,能提供下完整的例程吗?