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.

[参考译文] SN65DSI84:禁用 Hsync 和 Vsync

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1475734/sn65dsi84-disable-hsync-and-vsync

器件型号:SN65DSI84

工具与软件:

您好!

我们的产品使用 sn65dsi84作为 Linux CPU 模块(将 MIPI-DSI 输出至双通道 LVDS 面板)上的网桥。

面板数据表规定如下:

"由于该模块是通过仅 DE 模式运行的、因此 Hsync 和 Vsync 输入信号应设置为低逻辑电平或接地。 否则、此模块会异常运行"

实际上、为了使面板显示我们的引导标识、我们必须将 Linux 驱动程序和硬代码 Hysnc/Vsync 脉冲宽度寄存器修改为0。 这样,我们就可以"模拟"他们不能被使用的事实;没有这个小技巧,屏幕就会变成空白。

我想了解我们的"解决方案"是否是针对此类情况的预期解决方案、或者是否有更好/正确的方法来实现? 我要特别问这个问题、因为我们看到位0xE5.7设置为1、根据我的理解、可以忽略此设置、因为我们不依赖于 HS/VS。

提前感谢您!

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

    您好!

    您是否发现当前实施存在实际问题?

    视频帧的第一行需要以 VSS 数据包开始、所有其他行都从 VSE 或 HSS 开始。 在将延迟编程到 CHA_SYNC_DELAY_LOW/HIGH (CSR 0x28.7:0和0x29.3:0)和/或 CHB_SYNC_DELAY_LOW/HIGH (CSR 0x2A.7:0和0x2B.3:0)之后、DSI84需要看到这些数据包以在 LVDS 接口上生成 HS 和 VS (水平和垂直同步)信号。 当配置为双 DSI 通道时、SN65DSI84使用来自通道 A 的 VSS、VSE 和 HSS 数据包在 LVDS 接口上生成 HS 和 VS (水平和垂直同步)信号、并忽略来自通道 B 的 VSS、VSE 和 HSS 数据包。

    您是否已根据视频面板规格使用 DSI 调谐器生成 DSI84寄存器编程值?

    谢谢

    David

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

    感谢您的答复。

    如前所述、我可以正确看到启动标识(通过 drivers/video/logo/进行编程)、例如、我可以通过`cat /dev/random >/dev/fb`输出噪声(我看到它根据重复的命令而变化)。 在此之前、我还能够正确地看到测试图形。

    下面是来自面板的相关数据表片段、位于底部是我主要文章引用的内容:

    这是时序图:



    如您所见、面板不使用同步数据包。

    实际上、在将 CHA_HSYNC_PULSE_WIDTH_LOW/HIGH (CSR 0x2C.7:0和0x2C.1:0)和 CHA_VSYNC_PULSE_WIDTH_LOW/HIGH (CSR 0x30.7:0和0x31.1:0)设置为零之前、面板输出只是空白、之后面板将很快进入待机状态。

    我确实使用 DSI 调谐器在开始的某个时刻,当直接使用 sn65dsi84通过 i2c 播放。 但是、当切换到 Linux 时、我必须承认我在设备树中移植了可以移植的内容、并开始调试在内核驱动程序中计算/硬编码的值。 之后,我修补了驱动程序,并根据我提供的各种数据表( sn65dsi84, panel,..)微调了错误的值。 然后,我最近把这些硬编码的修复变成了一些更合适的设备树属性,然而,这仍然是下游。

    谢谢

    Alessandro

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

    Alessandro

    您是否能够在 Hysnc/Vsync 脉宽寄存器设置为0的情况下测量 DSI 输入和 LVDS 输出上的线时间? 必须确保 DSI 输入端的线时间(从 HSYNC 到 HSYNC 的时间)与 LVDS 输出端的线时间相匹配。 LVDS 输出端的线时间是水平像素总量除以 LVDS 时钟频率。 您可以通过放大数据通道上的数据流来使用示波器测量 DSI 输入端的线时间、如下所示:

    谢谢

    David

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

    我已经用示波器捕获了该信号、但不幸的是、它看起来与您的示波器不同。 因此、我不确定应该如何准确测量或如何测量。 在此消息的底部、我附上了一些随机 DSI/LVDS 通道+ LVDS 时钟的屏幕截图。

    此外、作为参考、 LVDS 输出时钟频率为~54 MHz、总水平像素为844。 这两个值也可以从我上一篇文章所附的数据表片段 I 中读取。

    DSI0 (1):

    DSI0 (2):

    DSI3 (1):

    DSI3 (2):

    LVDS2:

    LVDS 时钟:

    谢谢你

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

    Alessandro

    您能否说明下面提供的 LVDS 面板信息适用于一半的显示屏或整个显示屏?

    如果我假设时序为一半的显示屏、那么 DSI 输入端的线时间为 Htotal / Pixel clock = 844/54 = 15.63us、这与您的 DSI 输入测量值相匹配。 您是否能够看到在这种情况下显示的图像?

    我还假设 DSI CLK 是324MHz、并且您正在使用6的分频器来生成54MHz LVDS 时钟。

    谢谢

    David

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

    是的、您的假设是正确的:数据表信息针对单个 LVDS 通道、因此我在我的器件树中拥有两倍的水平属性;此外、DSI 时钟确实是324 MHz、并且分频器设置为6。

    正如我在之前的帖子中提到的、如果我将 H/Vsync 脉冲宽度设置为0、我可以在面板上正确看到图像。 然而,这是一个我不高兴的"黑客",我想更好地了解为什么这起作用,如果这将在未来产生问题。

    我主要担心的是、该面板预计 H/Vsync 信号为低电压/接地、但在 sn65dsi84上无法执行此操作、除非强制脉冲宽度为零。 这可以正常工作、意味着面板可以正确显示引导徽标或随机噪音、但这是一种丑陋的权变措施、可能掩盖了面板与 sn65dsi84之间的不兼容性。 作为一个现象、我可以看到位0xE5.7一直设置为1。

    这是我的问题的全部要点。 鉴于在 sn65dsi84中将 H/Vsync 信号脉冲宽度硬编码为零使得面板能够正确显示引导徽标、我是否可以期望整个信号链可靠地工作、即使面板需要低电压 H/Vsync 信号? 在这种情况下、0xE5.7错误位会怎么样?

    谢谢!

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

    您好!

    无需将水平或垂直视频 CSR 配置与 DSI 输入值匹配、CH*_ACTIVE_LINE_LENGTH (有效像素数)除外。 换句话说、只要满足线时间、LVDS 侧的消隐参数就不需要与 DSI 侧的消隐参数完全匹配。 但是、有效像素始终需要匹配。 我们确实验证了线时间是否正确匹配。  

    对于寄存器0xE5、位7被置位、这是因为 来自 DSI 源的线时间测量值与寄存器被设置的线时间不一致。 我们必须将其忽略、因为来自 DSI 源的线时间确实与 LVDS 面板的线时间相匹配。

    谢谢

    David

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

    感谢大卫的解释和支持!