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.

[参考译文] SN65DSI83:SN65DSI83 + Riverdi RVT101HVDNWC00 (1280×800):测试模式稳定、DSI 流会产生确定性帧同步崩溃

Guru**** 2874300 points

Other Parts Discussed in Thread: SN65DSI83

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1641257/sn65dsi83-sn65dsi83-riverdi-rvt101hvdnwc00-1280-800-test-pattern-stable-dsi-stream-produces-deterministic-frame-sync-collapse

器件型号: SN65DSI83

您好:

我创建了一个带有 Riverdi RVT101HVDNWC00 面板的 SN65DSI83(1280×800 IPS LVDS、面板 PCB 上的集成 SN65DSI83 桥接器)。 内部测试模式运行非常稳定。 一旦我启用 DSI 视频流、显示屏就会显示确定性的重复图形、即每次刷新时显示相同的图像、而不是随机的图像、这表示 DSI 输入和 LVDS 输出之间的帧同步未正确对齐。

我已根据数据表和分辨率常见问题解答 (https://e2e.ti.com/.../faq-sn65dsi84-sn65dsi83-sn65dsi84-and-sn65dsi85-resolution-guide) 多次验证了所有配置寄存器和频率。 所有值均显示正确、但问题仍然存在。

dislay.jpg

硬件设置

  • DSI 主机: STM32H757XI(SoMLabs StarSOM 模块,定制载板)
  • 桥接器: SN65DSI83(在 Riverdi 面板 PCB 上)
  • 小组讨论: Riverdi RVT101HVDNWC00、10.1“、1280×800、24bpp RGB888、单链路 LVDS
  • 连接: DSI 通道、5V、3.3V VREF、PWM 背光、I2C 从 STM32 到 Riverdi PCB
  • REFCLK: 未连接(LVDS 时钟源自 DSI 时钟)

时钟配置

有用 数据值
HSE 25MHz
LTDC 像素时钟 (PLL3R) 75MHz
DSI HS 时钟 450MHz (PLLNDIV=36、IDF=1、ODF=2)
DSI 通道比特率 每通道 900Mbps
DSI 通道字节时钟 56.25MHz
TXEscapeClk 14.0625MHz (TXEscapeCkdiv=4)
LVDS 像素时钟 75MHz (DSI/6)
帧速率 60Hz

DSI CLK 公式检查:

DSI CLK = (LVDS CLK × bpp) / (2 × num_DSI_lanes)
        = (75 × 24) / (2 × 2) = 450 MHz

面板时序(根据 Riverdi 数据表)

  • HSW = 1、HBP+HSW = 88、HACT = 1280、HFP = 72→HTotal = 1440
  • VSW = 1、VBP+VSW = 23、VACT = 800、VFP = 15→VTotal = 838
  • HSYNC、VSync、DE:低电平有效
  • 格式:JEIDA、24 bpp

 

SN65DSI83 寄存器配置(通过回读进行验证)

0x09 = 0x00   (no soft reset until end of init)
0x0A = 0x05   (LVDS_CLK_RANGE 62.5–87.5 MHz, HS_CLK_SRC = DSI)
0x0B = 0x28   (DSI_CLK_DIVIDER = 6 → 24bpp/2lanes/2 = 6)
0x0D = 0x01   (PLL_EN, set after CSR writes)
0x10 = 0x36   (Single channel, CHA = 2 lanes)
0x11 = 0x00   (no equalization)
0x12 = 0x5A   (CHA_DSI_CLK_RANGE = 90 → 450 MHz)
0x18 = 0x7A   (HS/VS active low, single-link channel A only, JEIDA)
0x19 = 0x05   (LVDS swing/CM)
0x1A = 0x03   (LVDS termination CHA)
0x20/21 = 0x0500  (HACT = 1280)
0x24/25 = 0x0320  (VACT = 800)
0x28 = 0x21   (SYNC_DELAY = 33, TI Tuner suggested)
0x2C = 0x01   (HSW = 1)
0x30 = 0x01   (VSW = 1)
0x34 = 0x57   (HBP = 87)
0x36 = 0x16   (VBP = 22)
0x38 = 0x48   (HFP = 72)
0x3A = 0x0F   (VFP = 15)
0x3C = 0x00   (test pattern OFF)

初始化序列后通过 I2C 回读验证所有寄存器值均正确。

STM32 DSI 主机配置

PLL: NDIV=36, IDF=1, ODF=2
NumberOfLanes = 2
TXEscapeCkdiv = 4
AutomaticClockLaneControl = DISABLE (continuous HS clock)

Mode = DSI_VID_MODE_BURST
ColorCoding = RGB888
PacketSize = 1280
NumberOfChunks = 0
NullPacketSize = 0xFFF
HSPolarity = ACTIVE_LOW
VSPolarity = ACTIVE_LOW
DEPolarity = ACTIVE_HIGH
HorizontalSyncActive = 1
HorizontalBackPorch = 87
HorizontalLine = 2160
VerticalSyncActive = 1
VerticalBackPorch = 22
VerticalFrontPorch = 15
VerticalActive = 800
LP*Enable = all DISABLE
LooselyPacked = DISABLE

PHY Timings (currently using ST EVAL board reference values):
ClockLaneHS2LPTime = 35
ClockLaneLP2HSTime = 35
DataLaneHS2LPTime  = 35
DataLaneLP2HSTime  = 35
DataLaneMaxReadTime = 0
StopWaitTime = 10

STM32 LTDC 配置(根据 ST 公式)

HSPolarity = AL, VSPolarity = AL, DEPolarity = AL, PCPolarity = IPC
HorizontalSync = 0     (HSW = 1)
VerticalSync = 0       (VSW = 1)
AccumulatedHBP = 87    (HSW + HBP - 1)
AccumulatedVBP = 22    (VSW + VBP - 1)
AccumulatedActiveW = 1367
AccumulatedActiveH = 822
TotalWidth = 1439
TotalHeigh = 837
PixelFormat = RGB888

初始化序列

  1. 配置 GPIO、外设、PLL3 (LTDC)、DSI PLL
  2. 初始化后立即禁用 LTDC
  3. 启用背光 PWM (500Hz)
  4. 重置触摸控制器
  5. LCD 电源打开
  6. HAL_DSI_Start()—HS 中的 DSI 时钟、LP11 中的数据通道
  7. 启用 DSI 包装器
  8. SN65DSI83 init 通过 I2C(根据表 7-2 进行 CSR 写入)
  9. 设置 PLL_EN (0x0D = 0x01)、等待 10ms、验证 PLL_LOCK
  10. 禁用 LTDC 层 0
  11. 启用 LTDC、将 BCCR 设置为红色。
  12. 设置 DSI_WCR_LTDCEN 开始流式传输

电桥状态(在运行期间持续监控)

  • CSR 0xE5 = 0x00 (无错误,无 sync_ERR、无 CRC、无 ECC、无 PLL_UNLOCK)
  • CSR 0x0A 位 7 = 1 (PLL_LOCK =已锁定,稳定)
  • 通过初始化后回读来验证所有配置寄存器
  • LTDC 状态寄存器 (CDSR、CPSR) 显示正常帧时序

症状

测试模式 (CSR 0x3C = 0x10): 覆盖整个面板的稳定、干净的色条(红色/绿色/蓝色/白色水平条纹)。 确认桥接器、LVDS 和面板都正常工作。

启用 DSI 流(CSR 0x3C = 0x00、禁用层、BCCR =蓝色): 显示屏显示三个水平蓝色条纹(顶部,中间,底部)—它们对应于 LTDC 反色—由两个黄色 — 绿色-白色水平线图案区域分隔。 还有一条细的垂直蓝色线、大约为显示宽度的 40%。 该模式是完全确定的 —每个帧在完全相同的像素位置显示完全相同的图像。 没有闪烁、没有随机像素噪声。

确定性特性排除了信号完整性问题(这将产生随机位错误)。 桥接器以相同的方式解释每个帧、但结果与单个 1280×800 帧不匹配、就好像桥接器将一个 DSI 帧视为多个较短的子帧一样。

我已经尝试过的

  • 根据分辨率常见问题解答重新计算和验证所有时钟频率
  • DSI 时钟变化:450,400,375、350MHz 具有相应的 DSI_CLK_DIVIDER
  • DSI 模式:突发和非突发同步事件
  • LP 转换:所有禁用和全部启用 VSync/VBP/VFP/VACT/HBP/HFP
  • DSI PHY 时序:STM32 EVAL 参考值 (35/35/35/35、StopWait=10) 及其他各项
  • SYNC_DELAY:0x18、0x21(TI 调谐器)
  • LVDS 格式:SPWG (0x78) 与 JEIDA (0x7A)
  • HBW/HBP 分离式型号:HBW=0 HBP=88 与 HBW=1 HBP=87(匹配显示数据表“HBP、脉冲宽度= 88“)
  • AutomaticClockLaneControl:启用和禁用
  • 层启用/禁用、帧缓冲区填充

这些变化都不会以任何有意义的方式影响症状。 测试模式保持稳定、DSI 流以相同的确定性模式保持损坏。

问题

  1. 鉴于确定性症状模式、是否有任何 DSI 侧参数可能导致桥接器在仍报告 CSR 0xE5 = 0x00 的同时误解帧边界?
  2. 我是否存在已知的 STM32H7 DSI 主机+ SN65DSI83 + 1280×800 面板不兼容或所需配置?
  3. 是否会增加一个外部 REFCLK(当前为 DSI 时钟源)来解决这种确定性线路时间不匹配问题?
  4. 是否有办法读取桥接器的内部帧计数器或解释的帧时序、以验证桥接器在 DSI 输入上实际看到的内容?

请提供任何指导。 如果有用、我可以提供 UART 日志、照片和完整的源代码 (ltdc.c、dsihost.c、sn65dsi83.c、main.c)。

此致、Daniel

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

    尊敬的 Daniel:

    感谢您分享有关此问题的详细信息。 请给我,直到明天检查,并得到你.

    此致、
    Ikram

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

    尊敬的 Daniel:

    1. 鉴于确定性症状模式、是否有任何 DSI 侧参数可能导致桥接器在仍报告 CSR 0xE5 = 0x00 的同时误解帧边界?

      对于 DSI 数据通道、您能否通过初始化序列来确认视频在数据表初始化序列中显示的软复位和延迟之后从 LP11 状态切换到 HS 状态。 所有寄存器设置都应与添加的延迟一起按顺序完成。

      从主机到 DSI83 的 DSI 连接是否稳定? 对于接口的布局、连接器或布线是否存在任何问题?

    2. 我是否存在已知的 STM32H7 DSI 主机+ SN65DSI83 + 1280×800 面板不兼容或所需配置?

      没有与此类似的已知问题。 闪烁和帧同步可能与时序和 DSI 接口线时间不匹配有关。


      您还请查看显示数据表本身的显示时序。 HSW 实际上只是 1 个像素吗? 这是建议吗?

      “STM32 LTDC 配置“和“STM32 DSI 主机配置“之间的时序为什么不同? SoC 时序应与显示和 DSI83 桥时序(已编程)相匹配。

    3. 是否会增加一个外部 REFCLK(当前为 DSI 时钟源)来解决这种确定性线路时间不匹配问题?

      如果 DSI 输入时钟通道稳定、则应该可以将其用作源、而不是单独的 REFCLK。

    4. 是否有办法读取桥接器的内部帧计数器或解释的帧时序、以验证桥接器在 DSI 输入上实际看到的内容?

      我将检查是否有此选项。  

    此致、
    Ikram