保姆级教程:在RK3568 Android 11上,手把手教你为LT6911C HDMI转MIPI芯片添加DTSI节点
2026/6/13 4:10:02 网站建设 项目流程

RK3568 Android 11平台LT6911C HDMI转MIPI全流程实战指南

当你在RK3568开发板上尝试接入HDMI信号源时,是否遇到过这样的困境:官方SDK没有提供现成的HDMI转MIPI支持,而硬件设计又必须使用LT6911C这颗桥接芯片?本文将带你从零开始,完整实现从芯片手册解读、驱动适配到DTSI节点配置的全过程。

1. 硬件环境与准备工作

在开始软件配置前,我们需要确保硬件连接正确无误。LT6911C作为HDMI到MIPI CSI-2的转换芯片,其硬件接口主要包含三部分:

  • HDMI输入接口:标准HDMI Type A插座,支持最高4K@30Hz输入
  • MIPI CSI-2输出:4-lane MIPI接口,连接至RK3568的CSI接收端
  • 控制接口:I2C用于寄存器配置,GPIO用于复位和中断信号

关键硬件连接检查清单

  • 确认I2C2总线已正确连接(SCL: GPIO0_C0, SDA: GPIO0_C1)
  • 检查MIPI线序是否匹配(注意RK3568的CSI接口为RX方向)
  • 测量各电源轨电压(核心1.2V、IO 1.8V、HDMI 5V)
  • 确认复位信号(GPIO2_D1)和中断信号(GPIO2_D0)已正确连接

特别注意:MIPI差分线上不应串联匹配电阻,这与某些其他接口标准不同,是常见错误点。

2. 驱动移植与适配

RK3568的Android 11内核中通常不会预置LT6911C驱动,我们需要基于相近型号的驱动进行修改。以下是具体步骤:

2.1 驱动文件准备

首先在内核驱动目录定位媒体I2C设备驱动:

cd kernel/drivers/media/i2c/ cp lt6911uxc.c lt6911c.c

关键修改点对比表

修改项lt6911uxc.clt6911c.c
芯片ID寄存器0x400x1E
分辨率配置1920x1080支持动态EDID读取
中断处理轮询方式硬件中断触发
电源管理简单控制完整PM框架

2.2 时钟配置要点

LT6911C需要外部提供27MHz参考时钟,在DTS中配置如下:

&ext_cam_clk { clock-frequency = <27000000>; status = "okay"; };

驱动中需要正确声明时钟依赖关系:

static const char * const lt6911c_supply_names[] = { "avdd", /* Analog power */ "dovdd", /* Digital I/O power */ "dvdd", /* Digital core power */ };

3. 设备树节点详细解析

设备树配置是连接硬件与驱动的关键桥梁,下面分段解析每个关键节点。

3.1 I2C设备节点

&i2c2 { status = "okay"; clock-frequency = <400000>; lt6911c: lt6911c@2b { compatible = "lontium,lt6911c"; reg = <0x2b>; clocks = <&ext_cam_clk>; clock-names = "xvclk"; reset-gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>; interrupt-parent = <&gpio2>; interrupts = <RK_PD0 IRQ_TYPE_LEVEL_LOW>; port { lt6911c_out: endpoint { remote-endpoint = <&hdmi_to_mipi_in>; >&csi2_dphy_hw { status = "okay"; }; &csi2_dphy0 { status = "okay"; ports { port@0 { hdmi_to_mipi_in: endpoint { remote-endpoint = <&lt6911c_out>; ><CameraSettings> <CameraModuleConfig> <ModuleName>LT6911C</ModuleName> <SensorName>lt6911c</SensorName> <SensorFacing>BACK</SensorFacing> <HwModule>CSI</HwModule> <I2cBus>2</I2cBus> <I2cAddr>0x2B</I2cAddr> <LensName>NC</LensName> </CameraModuleConfig> <StreamConfig> <OutputFormat>YCbCr_420_888</OutputFormat> <SupportedResolution> <Item>1920x1080@30</Item> <Item>1280x720@60</Item> </SupportedResolution> </StreamConfig> </CameraSettings>

4.2 常见问题排查

现象1:系统启动后无HDMI信号

  • 检查I2C通信:i2cdetect -y 2
  • 验证复位时序:复位信号应在电源稳定后保持低电平至少1ms
  • 确认中断触发:cat /proc/interrupts查看中断计数

现象2:图像出现条纹或撕裂

  • 调整MIPI时钟相位:修改dphy硬件参数
  • 检查lane同步:media-ctl -p查看各链路状态
  • 验证EDID读取:hexdump /sys/class/drm/card0-HDMI-A-1/edid

5. 视频通路调试技巧

理解视频数据流向是调试的关键,我们可以使用media-ctl工具可视化整个通路:

# 安装调试工具 adb shell mount -o remount,rw / adb shell apt-get install media-ctl v4l-utils # 查看拓扑结构 media-ctl -p -d /dev/media0

典型输出示例:

- entity 1: lt6911c (1 pad, 1 link) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev0 pad0: Source [fmt:RGB888_1X24/1920x1080 field:none colorspace:srgb] -> "csi2_dphy0":0 [ENABLED] - entity 5: csi2_dphy0 (2 pads, 2 links) type V4L2 subdev subtype Unknown flags 0 device node name /dev/v4l-subdev4 pad0: Sink [fmt:RGB888_1X24/1920x1080 field:none colorspace:srgb] <- "lt6911c":0 [ENABLED] pad1: Source [fmt:RGB888_1X24/1920x1080 field:none colorspace:srgb] -> "mipi_csi2":0 [ENABLED]

在调试过程中,我发现在RK3568平台上,当MIPI时钟速率超过1.5Gbps时,需要特别注意PCB布局和阻抗匹配。曾经遇到图像偶尔出现噪点的问题,最终通过缩短MIPI走线长度并添加端接电阻解决。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询