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.

[参考译文] DS90UB941AS-Q1:使用 SoC'的 DSI 数据和时钟无法在屏幕上亮起

Guru**** 2568585 points
Other Parts Discussed in Thread: SN65DSI83

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1273097/ds90ub941as-q1-using-the-soc-s-dsi-data-and-clock-cannot-light-on-the-screen

器件型号:DS90UB941AS-Q1
主题中讨论的其他器件:SN65DSI83

大家好、

根据内部图像发生器、屏幕可亮起。 下面是一个简化的应用图表:  

但是、使用 SoC 的 DSI 数据和时钟进行了多次尝试、屏幕仍然无法打开。 DSI 输出配置为视频模式、突发模式、连续时钟模式。  通过示波器可以看出 DSI 可以正常输出。 但是、执行寄存器配置后、屏幕仍然不工作。 检查了 DPHY 相关寄存器0xF、0x10、0x11、0x12、0x13、0x14、0x15、所有四个数据通道的状态寄存器值均为0x14 = 0001 0100、其中位2和位4指示错误:  

寄存器配置如下:  

#!/bin/bash

# 800x480p60, Dual Link FPD III
# PCLK = 33.264MHz
# DSI clock = 99.792MHz
# DSI Lane Speed = 199.584Mbps/lane
# 4 Lanes DSI
# DSI input port 0
# DSI clock and DSI data
# use i2c-tools to debug

set -e

I2C_BUS_NUMBER=1
UB941AS_ADDR=0x12
UB928_ADDR=0x2c

# Disable DSI
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x01 0x08

# Select FPD-Link III Port 0
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x1e 0x01

# Enable I2C_PASSTHROUGH
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x03 0x9a

# Force select port 0
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x5b 0x21

# Select DSI Port 0 digital registers
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x40 0x04
# Select DSI_CONFIG_0 register
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x20
# Set DSI_SYNC_PULSES = 0
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x6f

# Select DSI_CONFIG_1 register
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x21
# Set DSI_VS_POLARITY=DSI_HS_POLARITY=1
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x60
#i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x00

# Set DSI_CONTINUOUS_CLOCK, single DSI, 4 lanes, DSI Port 0 input
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x4f 0x8c

# DSI_HSW_CFG_HI
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x30
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x00
# DSI_HSW_CFG_LO hsync-len = 48
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x31
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x30
# DSI_VSW_CFG_HI
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x32
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x00
# DSI_VSW_CFG_LO vsync-len = 1
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x33
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x01

# TSKIP_CNT set DSI/D-PHY port0
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x40 0x04
# TSKIP_CNT set indirect addr (reg DPHY_SKIP_TIMING)
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x05
# TSKIP_CNT set reg DPHY_SKIP_TIMING value
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x04

# Initialize DSI clock settings (From Section 10.2 of datasheet)
i2cset -y -f $I2C_BUS_NUMBER $UB941AS_ADDR 0x40 0x10
i2cset -y -f $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x86
i2cset -y -f $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x0A
i2cset -y -f $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x94
i2cset -y -f $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x0A

# Enable DSI
i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x01 0x00

1) 给药该错误指示 SoC 的 DSI 输出未正确配置? 或者还有什么误差?

2) 2)客户仅配置了941个寄存器、 928个解串器是否也需要额外配置?  

您能帮助检查这个案例吗? 谢谢。

此致、

切里

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

    您好、Cherry:

    1) 剂量此错误表明 soc 的 DSI 输出配置不正确? 或其他什么错误?

    根据寄存器的内容为0x14、每个 DPHY 通道上都存在同步序列错误。 客户可以输出 PATGEN 吗? 请查看此应用手册中的第3部分: https://www.ti.com/lit/an/snla356/snla356.pdf?ts = 1695335470653&ref_url=https%253A%252F%252Fe2e.ti.com%252F

    我建议遵循此应用手册中提供的流程图、因为该图逐步缩小了问题范围。

    此致、

    G·阿巴尔卡

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

    尊敬的  Gil Abarca:

    感谢您的支持!

    客户的 PATGEN 结果如下:

    • 可以正常显示的内部时钟和内部时序。
    • 可以正常显示的外部时钟和内部时序。
    •  无法 显示的外部时钟和外部时序。

    启用 PATGEN 与不使用外部时钟和外部时序启用 PATGEN 之间有何区别? 启用 PATGEN 时、显示的图像是色条或梯度图形集;未启用 PATGEN 时、显示 SoM 输出的图像。 这两者的区别在于所显示的内容的差异、对吧?  

    谢谢。此致、

    切里

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

    您好、Cherry:

    客户的 PATGEN 结果如下:

    • 可以正常显示的内部时钟和内部时序。
    • 可以正常显示的外部时钟和内部时序。
    •  无法 显示的外部时钟和外部时序。
    [/报价]

    由于客户能够生成 PATGEN、因此 FPD-Link 配置正确。

    DSI_VD_DTYPE 是否正确?

    启用 soc 和不使用外部时钟启用 PATGEN 之间有何区别?

    启用 PATGEN 时、显示的图像为色条或梯度图形集;未启用 soc 时、显示 SoM 的图像输出。 这两者的区别在于所显示的内容的差异、对吧?  [/报价]

    您曾提到屏幕不输出视频。 如果未启用 PATGEN、则屏幕输出视频数据是否正确? 您能解释一下吗?

    此致、

    G·阿巴尔卡

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

    尊敬的  Gil Abarca:

    启用 PATGEN 时、显示的图像是色条或梯度图形集;未启用 PATGEN 时、显示 SoM 输出的图像。 这两者的区别在于所显示的内容的差异、对吧?  

    您曾提到屏幕不输出视频。 如果未启用 PATGEN、则屏幕输出视频数据是否正确? 您能解释一下吗?

    [/报价]

    请让我澄清一下、这只是客户的假设、您已回复图像。 谢谢你。

    DSI_VD_DTYPE 正确吗?

    找不到 DSI_VD_DTYPE、而客户刚刚找到 DSI_VC_DTYPE 寄存器。 这是一个拼写错误吗? 如果没有、您能告诉我们在哪里可以找到它吗?  

    配置后、DSI_VC_DTYPE 读取为0x3E:  

    谢谢。此致、

    切里

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

    您好、Cherry:

    找不到 DSI_VD_DTYPE、而客户刚刚找到 DSI_VC_DTYPE 寄存器。 这是一个拼写错误吗? 如果没有、您能告诉我们在哪里可以找到它吗?  

    配置后、DSI_VC_DTYPE 读取为0x3E:  

    [/报价]

    您是对的、有一个拼写错误、即 DSI_VC_DTYPE。

    DSI 数据类型的低4位应介于0xB 到0xE 之间。 在客户系统中收集的数据表明、低4位为0xE 时、这是正确的。

    我们可以继续执行下一步"检查第4.4节以验证 TSKIP_CNT"。 该代码显示 TSKIP 值为0x04。 我使用应用手册中提供的公式(TSKIP_CNT =(65 * 0.099792 - 5)<< 1)进行了计算、该公式应该是0x2。 您能否在客户的系统中进行测试?

    此致、

    G·阿巴尔卡

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

    尊敬的  Gil Abarca:

    我使用应用手册中提供的公式(TSKIP_CNT =(65 * 0.099792 - 5)<< 1)进行了计算、该公式应为0x2。 您是否可以在客户的系统中测试此项?

    他们已 将 原始设置0x4更改为0x2、但屏幕仍然无法亮起。

    谢谢。此致、

    切里

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

    您好、Cherry:

    客户是否可以按照步骤4.3 + 4.6执行操作并将每个部分的数据发送给我?

    此致、

    G·阿巴尔卡

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

    尊敬的  Gil Abarca:

    4.6:使用了突发模式、因此 DSI_CONFIG_0寄存器中的 DSI_SYNC_PULSES 设置为0:

    #选择 DSI 端口0数字寄存器
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x40 0x04
    #选择 DSI_CONFIG_0寄存器
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x20
    #设置 DSI_SYNC_PULSES = 0
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x6f

    源信号参数如下:  

    现金统转= 800
    HFP = 40
    HBP = 40  
    HSW = 48
    HTOTAL = 928
    VACT = 480
    VFP = 13
    VBP = 31  
    VSW = 1
    VTOTAL = 525

    HSW 和 VSW 寄存器也已根据需要进行设置:

    # DSI_HSW_CFG_HI
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x30
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x00
    # DSI_HSW_CFG_LO HSYNC-LEN = 48
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x31
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x30
    # DSI_VSW_CFG_HI
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x32
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x00
    # DSI_VSW_CFG_LO vsync-len = 1
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x33
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x01

    4.3:客户 没有 DSI 分析仪、他们使用示波器来 捕获通道0的波形、如下所示:  

    谢谢。此致、

    切里

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

    您好、Cherry:

    我将查看数据、并在明天下班前与您联系。

    此致、

    G·阿巴尔卡

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

    您好、Cherry:

    看起来 LP-11转换发生在 HFP 期间。  在结束视频线长数据包和发送 HSS 数据包之间、DSI 源可能没有足够的时间在 HS->LP->HS 之间进行转换。  

    这可以用作潜在的解决方案:

    能否探测941正在接收的 HS/VS/DE 信号? 数据收集完成后、发送盐水捕获。

     需要完成的过程:

    1. 确保 VDDIO 为3.3V
    2. 将0xB6写入寄存器0x24
    3. 使用 Saleae 探测 GPIO 14、38和39
    4. GPIO 4 =数据使能、GPIO 38 = VSYNC、GPIO 39 = HSYNC

    此致、

    G·阿巴尔卡

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

    大家好!

    根据我们今天的讨论、以下是有关此案例的一些反馈:

    1.我重新审阅了脚本。 从脚本分析来看、看起来您实际上是在为 DSI 事件模式和脉冲模式配置941AS、因为您正在配置 DSI_SYNC_PULSES = 0。 这是可以做到的、但可能不需要、因为您的 SoC 似乎已经发送了 HSS 和 HSE (脉冲模式)。  

    但我看到了一个问题、即在事件模式下、当您覆盖时序时、941AS 存在一个已知的文档错误、即 DSI_VSYNC_WIDTH 的覆盖值必须从所需值+1处减1。 您可以在此处查看有关先前发现的问题的更多信息: https://e2e.ti.com/support/interface-group/interface---internal/f/interface---internal-forum/1116357/ds90ub941as-q1-need-help-to-complete-review-script-for-2-2-independent-mode 

    对于脚本、您需要进行以下修改:

    # DSI_VSW_CFG_LO vsync-len = 1
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x41 0x33
    i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x42 0x02

    这种修改实际上可能会解决您的显示问题、因为使用当前配置、我认为您不会获得任何 Vsync 脉冲、但要明确的是、它不会100%纠正您从 DSI 来源获得的时序问题。 因此、如果上述操作无法解决您的问题、我们必须深入研究如何通过2号更正 SoC 时序问题

    2、对于 SoC 时序问题、我已经附上了一个电子表格、其中显示了应来自不同 DSI 数据包事件之间 SoC 的已计算时序、并与测量值进行了比较以显示差异。 要点是 HFP 值大于预期值、这是因为 SoC 驱动程序正在尝试在 HFP 中插入一个 LP11脉冲、但没有足够的时间来这么做、并且仍然保持您预期的视频 DPI 时序。 因此、其效果是 HFP 太长、HSW 与预期值相比太短。 这只能通过 SoC 配置来解决。 有关此现象的详细信息、请参阅 DSI 启动应用手册的第4.3节  

    e2e.ti.com/.../941AS-Timing-Calcs.xlsx

    https://www.ti.com/lit/pdf/snla356

    此致、

    凯西  

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

    尊敬的  Casey:

    感谢 您在此处提供反馈和支持!

    在不修改 DSI 源的情况下、客户修改了941驱动器中的某些内容、并结合提供的寄存器修改、现在可以使用 DSI 成功照亮屏幕。

    但是、屏幕图片一直向左移动、而右侧有一个黑色块、如下所示:

    同一屏幕在 sn65dsi83上使用相同的时间,图片是正常的。 两个器件的 DSI 输入源也保持不变。
    也可以通过在器件树中将 HBP 值调整为较大来纠正该问题、如下所示:

    客户想知道导致这种情况的原因是什么? 是因为941和 sn65dsi83之间的分辨率有一些差异吗?  

    谢谢。此致、

    切里

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

    您好、Cherry:

    是否由于941和 sn65dsi83之间的分辨率有一些差异?  [/报价]

    这两种器件不同、其配置也不同。  

    Unknown 说:
    客户想知道什么可能导致此情况?

    预期 HBP 为40。 修改后的 HBP 是什么?

    此致、

    G·阿巴尔卡

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

     尊敬的  Gil Abarca:

    预计的 soc 为40。 修改后的 HBP 是什么?

    在 sn65dsi83上使用的 HBP 值为40、而在941上修改的 HBP 为92、以便显示在正确的位置。

    谢谢。此致、

    切里

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

    您好、Cherry:

    根据该线程中共享的图像、在 HFP 期间可能会发生 LP-11转换。 预期的消隐参数为  HFP = 40、 HBP = 40、 HSW = 48。  仍可能有一些 HFP、但不符合预期的40像素、或者有足够的像素满足显示的消隐要求。 因此、通过向 HBP 添加缺失的消隐、可以补偿显示器所需的总消隐。

    此致、

    G·阿巴尔卡