Other Parts Discussed in Thread: SN65DSI83
器件型号: 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) 多次验证了所有配置寄存器和频率。 所有值均显示正确、但问题仍然存在。

硬件设置
- 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
初始化序列
- 配置 GPIO、外设、PLL3 (LTDC)、DSI PLL
- 初始化后立即禁用 LTDC
- 启用背光 PWM (500Hz)
- 重置触摸控制器
- LCD 电源打开
HAL_DSI_Start()—HS 中的 DSI 时钟、LP11 中的数据通道- 启用 DSI 包装器
- SN65DSI83 init 通过 I2C(根据表 7-2 进行 CSR 写入)
- 设置 PLL_EN (0x0D = 0x01)、等待 10ms、验证 PLL_LOCK
- 禁用 LTDC 层 0
- 启用 LTDC、将 BCCR 设置为红色。
- 设置 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 流以相同的确定性模式保持损坏。
问题
- 鉴于确定性症状模式、是否有任何 DSI 侧参数可能导致桥接器在仍报告 CSR 0xE5 = 0x00 的同时误解帧边界?
- 我是否存在已知的 STM32H7 DSI 主机+ SN65DSI83 + 1280×800 面板不兼容或所需配置?
- 是否会增加一个外部 REFCLK(当前为 DSI 时钟源)来解决这种确定性线路时间不匹配问题?
- 是否有办法读取桥接器的内部帧计数器或解释的帧时序、以验证桥接器在 DSI 输入上实际看到的内容?
请提供任何指导。 如果有用、我可以提供 UART 日志、照片和完整的源代码 (ltdc.c、dsihost.c、sn65dsi83.c、main.c)。
此致、Daniel