本文作者:豆面

如何使STM32成功输出HDMI信号?

豆面 2025-01-24 04:53:21 77
如何使STM32成功输出HDMI信号?摘要: 硬件准备1、选择支持HDMI输出的开发板:由于STM32本身没有HDMI接口,需要使用具有HDMI接口的开发板,如华清远见FS-MP1A开发板,该开发板集成了HDMI接口,2、连接...

硬件准备

1、选择支持HDMI输出的开发板:由于STM32本身没有HDMI接口,需要使用具有HDMI接口的开发板,如华清远见FSMP1A开发板,该开发板集成了HDMI接口。

如何使STM32成功输出HDMI信号?

2、连接显示器:将开发板的HDMI接口通过HDMI线连接到显示器的HDMI输入接口。

软件配置

1、修改设备树文件

设置I2C2的pinmux:在stm32mp15pinctrl.dtsi中找到I2C2的配置,根据实际使用的引脚进行配置,

      &i2c2 {
          pinctrlnames = "default", "sleep";
          pinctrl0 = <&i2c2_pins_a>;
          pinctrl1 = <&i2c2_pins_sleep_a>;
          status = "okay";
      };

添加HDMI的电源节点:在设备树的根节点下添加1.2V电压节点,供Sii9022A芯片使用,如下所示:

      v1v2_hdmi: regulatorfixed {
          compatible = "regulatorfixed";
          regname = "v1v2_hdmi";
          regulatorminmicrovolt = <1200000>;
          regulatormaxmicrovolt = <1200000>;
          regulatoralwayson = <true>;
          regulatorbooton = <true>;
          status = "okay";
      };

在i2c2节点追加HDMI子节点:用于接收LTDC数据,如下所示:

      &i2c2 {
          pinctrlnames = "default", "sleep";
          pinctrl0 = <&i2c2_pins_a>;
          pinctrl1 = <&i2c2_pins_sleep_a>;
          hdmitransmitter@39 {
              compatible = "sil,sii9022";
              reg = <0x39>;
              iovccsupply = <&v3v3>;
              cvcc12supply = <&v1v2_hdmi>;
              resetgpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
              interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
              interruptparent = <&gpioa>;
              #sounddaicells = <0>;
              status = "okay";
              ports {
                  #addresscells = <1>;
                  #sizecells = <0>;
                  port@0 {
                      reg = <0>;
                      sii9022_in: endpoint {
                          remoteendpoint = <&ltdc_ep_0_out>;
                      };
                  };
              };
          };
      };

2、使能内核自带的sii902x驱动:ST提供的linux内核已经集成了sii902x驱动,并且已经使能,在Linux的menuconfig中可以找到相应的配置选项,确保该驱动已使能。

3、修改ltdc节点,输出到HDMI子节点:在设备树文件中找到ltdc节点,修改其配置,使其输出到之前添加的HDMI子节点,并屏蔽之前的rgb面板节点,如下所示:

   &ltdc {
       pinctrlnames = "default", "sleep";
       pinctrl0 = <&ltdc_pins_b>;
       pinctrl1 = <&ltdc_pins_sleep_b>;
       status = "okay";
       port {
           #aggressivecells = <1>;
           #sizecells = <0>;
           ltdc_ep_0_out@0 {
               reg = <0>;
               sii9022_in: endpoint {
                   remoteendpoint = <&i2c2_hdmi>;
               };
           };
       };
   };

4、编译设备树:执行make dtbs命令编译设备树,生成可烧写的设备树镜像文件stm32mp157datk.dtb

如何使STM32成功输出HDMI信号?

5、烧写设备树和程序:将编译好的设备树镜像文件烧写到开发板的存储介质中,然后下载相应的程序到开发板上,以实现HDMI输出功能。

文章版权及转载声明

作者:豆面本文地址:https://www.jerry.net.cn/articals/21083.html发布于 2025-01-24 04:53:21
文章转载或复制请以超链接形式并注明出处杰瑞科技发展有限公司

阅读
分享