嵌入式分享#38:踩坑实录!我在 RK3576 HDMI 搭错线

嵌入式分享#38:踩坑实录!我在 RK3576 HDMI 搭错线嵌入式分享#38:踩坑实录!我在 RK3576 HDMI 搭错线# 嵌入式分享#38:踩坑实录!我在 RK3576 HDMI 搭错线

2020 年 8 月 30 日,一个三岁台湾女童不小心被风筝缠住身体。一阵大风吹来,就飞上了天,至少五层楼高。所幸风筝下落被众人抓住,女童没有大碍。

最近在调试 RK3576 HDMI。了解这块的老铁都知道,HDMI 基本不需要调试。因为 HDMI 是集成在 SOC,所以直接使用原厂的默认配置就能点亮。有问题就是硬件设计问题。

这会还真让我遇到了:使用 HDMI 后系统启动立马挂掉。

经排查硬件发现,HDMI 的硬件设计上使用了普通的 I2C,而不是 HDMI 专用的 I2C 接口。

殊不知,HDMI 的 I2C 是专用的,分别为 HDMI_TX_SCL 与 HDMI_TX_SCA。

虽然改版后 HDMI 显示功能正常,但是存在疑问:为什么硬件设计会踩这样的坑?

了解后发现,硬件同事之前是搞 MCU 裸机的。MCU 通常不直接集成 HDMI 接口,如需使用 HDMI 显示功能一般是通过外挂 HDMI 芯片实现的,顾然 I2C 就没有专用一说。

而 SOC 的 HDMI 接口通常是集成的。基于简化软件驱动以及硬件信号完整性的考虑,I2C 通常是指定专用的。毕竟 SOC 的 IO 资源不差那两根线。

当然这也不能一概而论,I2C 是否需要为专用具体还得看原厂相关的设计指导手册。

在这里分享以及记录一下,希望可以帮助读到这篇文章的老铁避坑。

附:DTS 片段

复制代码
/{
    hdmi_sound: hdmi-sound {
        compatible = "rockchip,hdmi";
        rockchip,mclk-fs = <128>;
        rockchip,card-name = "rockchip-hdmi";
        rockchip,cpu = <&sai6>;
        rockchip,codec = <&hdmi>;
        rockchip,jack-det;
    }
};
&hdmi {
    status = "okay";
    // enable-gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_HIGH>;
    rockchip,sda-falling-delay-ns = <360>;
};
&hdmi_in_vp0 {
    status = "okay";
};
&hdptxphy_hdmi {
    status = "okay";
};
&sai6 {
    status = "okay";
};
&route_hdmi {
    status = "okay";
    connect = <&vp0_out_hdmi>;
};

避坑要点

项 内容
现象 使用 HDMI 后系统启动立马挂掉
原因 用了普通 I2C,而不是 HDMI 专用 I2C
专用信号 HDMI_TX_SCL / HDMI_TX_SCA
为什么容易踩 MCU 裸机时代外挂 HDMI 芯片,I2C 通常不专用
SOC HDMI 集成,I2C 通常指定专用,以简化驱动并保证信号完整性
结论 是否专用还得看原厂设计指导手册

(完)

相关推荐
oku620891 天前
单片机底层系列:C 库运行时——从 libspace 到多任务与中断安全
嵌入式
Zwawa1 天前
反馈:让系统知道自己做得对不对
c语言·单片机·嵌入式
蓝天居士1 天前
PY32F系列MCU在OTA时App区概率性跑不起来的根因分析(2)
mcu·嵌入式
剑指offer.2 天前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
___波子 Pro Max.2 天前
软件开发里的 prebuilt 是什么
嵌入式
7yewh3 天前
SLAM 三维空间刚体运动(2)
数据结构·人工智能·机器人·嵌入式·slam
LCG元3 天前
树莓派 Pico RP2040 PIO 逻辑分析仪实战:SM 指令周期拆解、DREQ 触发 DMA 环形缓冲与采样率参数实测
嵌入式·树莓派·rp2040
7yewh3 天前
SLAM 从视觉里程计到建图(6)
数据结构·人工智能·机器人·自动驾驶·嵌入式
Zwawa3 天前
蜂鸣器为什么会响:有源、无源和低电平触发
单片机·嵌入式