声明:本专栏内容以及相关的资料仅作为学习为目的。文章会持续更新,如内容有误欢迎指出,共同交流学习。

前言

        鉴于开发者最希望看到的是自己的主板正常运行起来了,接上屏幕显示一切正常,因此我决定从HDMI显示开始写本栏目。我们先来看一下RK3588S 的整体框架图,如下图所示:

android ble通信接口 安卓通用接口图_原理图

        从上图可以看出,RK3588S具有丰富的显示接口,包括 DP、HDMI、EDP、MIPI 。在根据产品的需求设计好硬件电路后,对SDK软件就行相应配置即可使用相应的接口进行显示。显示是人机交互必不可少的功能。

硬件设计

        HDMI部分的电路大家可以参考原理图(在后续的文章中会专门讲解RK3588S 由RK原厂提供的原理图)HDMI部分。如下图所示:

android ble通信接口 安卓通用接口图_android ble通信接口_02

android ble通信接口 安卓通用接口图_android ble通信接口_03

        上图很明显可以看出,RK3588s 的EDP和HDMI接口是复用接口,在本系列文章中,我们先介绍HDMI显示。 

        原理图中的 HDMI0_TX_ON_H 引脚需要特别注意,必须保持和软件配置一直,在我的原理图设计中,使用的是 GPIO4_B6,如图所示:

android ble通信接口 安卓通用接口图_android ble通信接口_04

        本文将在下面的软件部分展示对应配置代码。 HDMI 部分对应的其他引脚基本是固定的,不需要软件上配置,如果硬件设计在原厂设计上做了比较大的改动,一定要检查每个引脚对应的软件配置。 

        我们在调试过程中,还遇到一个比较典型也是容易忽略的问题,由于硬件设计是核心板设计,单独调试核心板时,HDMI部分的 5V 没有供电,导致只有开机 logo 可以通过HDMI显示,进入系统HDMI一直无显示,如果在调试过程中遇到类似问题,可以检查一下HDMI的5V。如下图:

android ble通信接口 安卓通用接口图_android ble通信接口_05

软件

        软件部分最主要的就是上文提到的 HDMI0_TX_ON_H 引脚的配置,原理图使用的是GPIO4_B6,软件就一定要配置为“&gpio4 RK_PB6 GPIO_ACTIVE_HIGH”,如下代码:

/* hdmi0 */                                                                                                                                     
&hdmi0 {
    enable-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
    status = "okay";
};

        然后就是 hdmi 使用的vp、sound 等对应功能在软件里面都要打开。这部分在 dtsi 里面对应的完整代码如下:

/* hdmi0 */
&hdmi0 {
    enable-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
    status = "okay";
};

&hdmi0_in_vp0 {
    status = "okay";
};

&hdmi0_sound {
        status = "okay";
};

&hdptxphy_hdmi0 {
    status = "okay";
};

&route_hdmi0{
    status = "okay";
};

总结

        HDMI 部分的调试相对来说是比较简单的,因为硬件的设计线路基本固定。只要在内核的设备树文件打开对应的节点,一般都可以正常工作。 让你看到系统友好的图形交互界面。