RK 平台MIPI 点屏注意事项

这篇具有很好参考价值的文章主要介绍了RK 平台MIPI 点屏注意事项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

转自:https://www.cnblogs.com/chorm590/p/11658360.html

rk 平台关于 MIPI 屏幕的点屏流程已经非常完善了,基本上只要确定了硬件没问题、接线没问题、屏幕没问题,再稍稍配置一下 dtsi 里的参数就可以的了。

MIPI 点屏流程大致可以概括为以下几步:

1、确认硬件环境;

2、确认相关接口管脚;

3、配置屏幕背光 dts;

4、配置 MIPI 屏幕参数;

5、屏幕显示效果调校。

1、确认硬件环境

确认硬件环境这个活理论上来说是由硬件人员来提供保证的,大多数软件人员都不懂这块的知识,只能相信他人。但他人毕竟是他人,你无法保证他人不会犯迷糊,所以有的时候身为软件人员,要和硬件打交道的话,会很痛苦。

言归正传,所谓确认硬件环境,无非就是要确认以下几点信息:

1、MIPI 排线接口电路正确;

2、板端接口到屏端接口的走线正确;

3、供电符合要求。

保证了以上三点就可以开始软件点屏了。

2、确认相关接口管脚

这个是要根据板端原理图来确认哪些引脚是接到我们要点的屏幕上去的。

例如,通常 rk 的芯片都会有多组视频信号输送接口,如 lcd0 ~ lcdx。我们要找到属于我们的那个管脚。

还要找到控制背光开关的管脚。由于背光电流强度是由 pwm 来决定的,所以还要再确认好是哪组 pwm 用于控制我们要点的屏幕。

3、配置屏幕背光 dts

直接修改 kernel 的 dts 文件即可。

不同板端所使用的 dts 文件通常不一致,所以这步要自行确认自己使用的是哪一个文件。不过这个文件通常都位于以下目录中:

./kernel/arch/arm/boot/dts/

在你的 dts 文件中,主要是要找到 backlight 节点,然后再配置 pwm 与 gpio 信息,如下所示:

mipi屏幕点亮,单片机,物联网,stm32

    backlight {
        compatible = "pwm-backlight";
        pwms = <&pwm2 0 25000>;
        brightness-levels = <
              ...
              >;
        default-brightness-level = <200>;
        enable-gpios = <&gpio7 GPIO_C6 GPIO_ACTIVE_HIGH>;
    };

mipi屏幕点亮,单片机,物联网,stm32

其次再将对应的 pwm 节点置为可用状态:

&pwm2 {
        status = "okay";
};

然后可以关注一下以下节点配置,它表明了这个屏幕的参数被记载的节点名称,后续初始化屏幕时就会去这里指定的节点里查找信息:

&rk_screen {
     display-timings = <&disp_timings>;
};

最后是将输送视频信号的相关功能置为开启状态,这个需要参考原理图才能决定填哪个了:

&lcdc0 {
    status = "okay";
    rockchip,mirror = <NO_MIRROR>;
    ...
}

4、配置MIPI屏幕参数

这一步就是配置上一步中提到的 display-timins = <&disp_timings>; 的信息了。

通常这个节点的信息会独立保存在一个文件后缀为 dtsi 的文件中。它在配置好以后是通过前面的 dts 文件 include 进来使用的。

这个 dtsi 文件中的信息主要有以下四种节点:

1、disp_mipi_init: mipi_dsi_init 节点;

2、disp_timings: display-timings 节点;

3、disp_mipi_power_ctr: mipi_power_ctr 节点;

4、disp_mipi_init_cmds: screen-on-cmds 节点。

disp_mipi_init: mipi_dsi_init

这个节点一般记载有以下信息:

mipi屏幕点亮,单片机,物联网,stm32

disp_mipi_init: mipi_dsi_init{
    compatible = "rockchip,mipi_dsi_init";
    rockchip,screen_init    = <1>;
    rockchip,dsi_lane        = <4>;
    rockchip,dsi_hs_clk        = <600>;
    rockchip,mipi_dsi_num    = <1>;
};

mipi屏幕点亮,单片机,物联网,stm32

screen_init 参数表示这块屏幕是否需要做初始化操作。通常 MIPI 屏幕都是要做的,置 1 表示需要,置 0 表示不需要。

dsi_lane 表示屏幕用于传输信息的通道数量。这个要根据屏幕规格书业确认,例如:

mipi屏幕点亮,单片机,物联网,stm32

这就表示这块 MIPI 屏幕有 4 组数据线,所以填 4 就好。

dsi_hs_clk 表示总时钟数,单位为 MHZ。

mipi_dsi_num 一般填 1 就好。

disp_timings: display-timings

这个节点中的内容关乎于屏幕的参数信息。它的结构如下示例所示:

mipi屏幕点亮,单片机,物联网,stm32

disp_timings: display-timings {
    native-mode = <&timing0>;
    compatible = "rockchip,display-timings";
    timing0: timing0 {
        screen-type = <SCREEN_MIPI>;
        out-face    = <OUT_P666>;
        clock-frequency = <50000000>;
        
        hactive = <800>;
        vactive = <1280>;
        
        hback-porch = <32>;
        hfront-porch = <32>;
        
        vback-porch = <32>;
        vfront-porch = <22>;
        
        hsync-len = <4>;
        vsync-len = <4>;
        
        hsync-active = <0>;
        vsync-active = <0>;
        
        de-active = <0>;
        pixelclk-active = <0>;
        
        swap-rb = <0>;
        swap-rg = <0>;
        swap-gb = <0>;
    };
    
};

mipi屏幕点亮,单片机,物联网,stm32

这个节点的信息含义不作过多解释,这里仅关注如何填值。

这块节点的信息基本要从屏幕规格书中来。

screen_type 可填的值有:SCREEN_MIPI , SCREEN_DUAL_MIPI。

out-face 可填的值有:OUT_P565 , OUT_P666 , OUT_P888。

后面的信息就要查阅屏幕规格书,通常可以找到 INPUT_SIGNAL_TIMING 章节,其中通常会记载有类似信息:

mipi屏幕点亮,单片机,物联网,stm32

mipi屏幕点亮,单片机,物联网,stm32

clock-frequency 就是上图中的 DCLK frequency 中的数据。这些表格中,我们一般取 Typ 列的值来使用。

hactive 与 vactive 就是屏幕分辨率,这个信息对应于上图表中的 Horizontal Display Area 与 Vertical Display Area。

hback-porch 对应于 Hs Back Porch。

hfront-porch 对应于 Hs Front Porch。

vback-porch 对应于 Vs Back Porch。

vfront-porch 对应于 Vs Front Porch。

hsync-len 对应于Hs pulse width。

vsync-len 对应于 VS Pulse Width。

通常填好这几个参数就可以了。

disp_mipi_power_ctr: mipi_power_ctr

这个节点记载 MIPI 屏幕的重置脚与使能脚的信息。根据实际情况配置即可。

mipi屏幕点亮,单片机,物联网,stm32

disp_mipi_power_ctr: mipi_power_ctr {
    compatible = "rockchip,mipi_power_ctr";
    mipi_lcd_rst:mipi_lcd_rst{
        compatible = "rockchip,lcd_rst";
        rockchip,gpios = <&gpio7 GPIO_B4 GPIO_ACTIVE_HIGH>;
        rockchip,delay = <100>;
    };
    mipi_lcd_en:mipi_lcd_en {
        compatible = "rockchip,lcd_en";
        rockchip,gpios = <&gpio0 GPIO_A2 GPIO_ACTIVE_HIGH>;
        rockchip,delay = <100>;
    };
};

mipi屏幕点亮,单片机,物联网,stm32

disp_mipi_init_cmds: screen-on-cmds

这个节点中记载的是屏幕的初始化指令。指令内容通常需要厂家提供。厂家给过来的指令有可能不是直接适配到 RK 平台的,需要做转换。

那如何转换呢?我这里直接援引某位大神博客(https://blog.csdn.net/sdkdlwk/article/details/78698494)中的内容了,如下图所示:

mipi屏幕点亮,单片机,物联网,stm32

mipi屏幕点亮,单片机,物联网,stm32

mipi屏幕点亮,单片机,物联网,stm32

我这里需要额外强调一点:0x29 和 0x39 是有区别的,不可通用,如果你发现自己的指令内容没有错,但就是点不起来,那么可以尝试一下更改 0x29 系或 0x39 系看看效果。

5、屏幕显示效果调校

如果按照上面的配置能正常显示自然是最好,但也不能排除仍然无法显示,或者是显示的效果不好的。这种情况就需要调校上一步中的参数信息了。

首先是屏幕初始化指令,指令一定要正确,这里说的正确除了指令内容正确外还得保证指令成功写了出去。有些屏幕它的单条初始化指令是很长的,而 RK 默认的单条指令长度又有限制,当指令内容过长时,就会导致段错误的发生,直接引起无法开机。

如何解决这个问题呢?答案是增大系统中保存指令的空间。在哪里改?在 uboot 中。

./u-boot/drivers/video/screen/lcd_mipi.c

在这份代码中会去解析 dtsi 中的指令,并存于一个数组中,直接将数组长度增大即可,如下图所示:

mipi屏幕点亮,单片机,物联网,stm32

当然,不敢保证所有人的代码结构都和笔者的是一样的,如果你的代码中并没有这样一个数组,那么还可以改这个结构体:

./u-boot/drivers/video/transmitter/mipi.dsi.h

在这个头文件中有一个结构体 struct dcs_cmd,将它里面的 cmds 数组的长度更改一下即可:

mipi屏幕点亮,单片机,物联网,stm32

如果改了这个仍然不起效果,那可能你的代码是被改动过的。这个时候就需要自行跟踪源码,看看它究竟把这些初始化指令保存到哪里去的。一般直接跟踪上面提到的 lcd_mipi.c 中的 rk_mipi_screen_init_dt 函数就可以的了。

其次是时钟信息。时钟不正确会导致显示不出来内容或者颜色有偏差。这里说的时钟包含:rockchip,dsi_hs_clk 与 clock-frequency。尤其是 dsi_hs_clk 节点,它代表总时钟,clock-frequency 代表单通道的时钟,因此前者时钟总是要比后者时钟大。关于这个关系的确定,我再贴上另一个大神博客(https://blog.csdn.net/u012715694/article/details/51751006)中的内容,如下图所示:

mipi屏幕点亮,单片机,物联网,stm32

最后还得关注下disp_timins 节点中的信息,它们也是会直接影响到显示效果的:

mipi屏幕点亮,单片机,物联网,stm32

实在不行的话,就用最笨的办法,一个一个去调去试,看看哪个出来的效果最好。当然,如果你有专业的理论知识可以直接计算出来,那就最好不过了。笔者很遗憾,笔者没有!文章来源地址https://www.toymoban.com/news/detail-708254.html

到了这里,关于RK 平台MIPI 点屏注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • rk3568点亮LCD(mipi)

    MIPI (Mobile Industry Processor Interface) 是2003年由ARM, Nokia, ST ,TI等公司成立的一个联盟,目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化,从而减少手机设计的复杂程度和增加设计灵活性。MIPI设备接口分为两种:摄像头接口CSI(Camera Serial Interface)和显示接

    2023年04月09日
    浏览(57)
  • rk3568驱动开发之mipi屏

    屏是嵌入式驱动开发中常见的设备,一般的带屏项目中最开始要调试的,简单记录一下自己在项目开发中的经验过程。所用平台是rockchip的rk3568,android11。 硬件原理图主要看接的是哪个mipi接口,屏的电源控制io,背光控制io,这些需要在设备树中配置的要仔细核对。 PS:以上

    2024年02月12日
    浏览(52)
  • RK系列(RK3568) MIPI屏适配 PWM背光 驱动开发

    平台:Android12 SOC:RK3568 一般拿到MIPI屏 厂家会给一个跑的配置文件  例如我的: 那么可以配置设备树 由于我接的是DSI0 backlight = backlight; 设置背光

    2024年02月07日
    浏览(52)
  • RK3568/RK3566 mipi双摄调试(gc2093+gc2053)

    这篇文章给大家介绍一下RK3568双摄的调试,RK3568有一个4lane的mipi dphy,最高支持2.5G/bps每lane,ISP自带csi host,最高处理8M的图像,rk3568这个mipi dphy还有一个处理方法,就是拆分成2个2lane的使用,其中一个连接到单独的csi host,另一个连接到isp内部自带的csi host,这样就可以支持双

    2023年04月08日
    浏览(147)
  • 海康硬盘录像机接入RTSP/onvif协议安防视频平台EasyNVR的注意事项

    EasyNVR安防视频云服务平台可支持设备通过RTSP/Onvif协议接入平台,能提供视频监控直播、录像、云存储、检索与回看、国标级联等视频能力,可支持分发RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等格式的视频流。 有用户咨询,将海康硬盘录像机接入EasyNVR平台后显示离线,不知道什

    2024年02月05日
    浏览(82)
  • RK3568 android11 调试mipi摄像头 gc2093

    GC2093是一个高质量的1080P CMOS图像传感器,用于安全相机产品、数码相机产品和手机相机应用程序。包含了一个1920H x 1080V像素阵列、片上10位ADC和图像信号处理器。高性能和低功耗功能的全面集成使GC2093最适合设计,减少了实现过程,并延长了运动相机、汽车DVR和各种移动应用

    2024年01月17日
    浏览(72)
  • RK3588-Camera:MIPI-CSI调试之通路解析

    本文介绍RK3588平台的Camera:MIPI-CSI调试之通路解析 MIPI联盟,即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟。MIPI(移动产业处理器接口)是 MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。 目的是把手机内部的接口如摄像头、显示屏接口、射频

    2023年04月08日
    浏览(79)
  • rk3568mipi摄像头调试(gc2385 + gc2053)

    RK3568平台仅有一个标准物理mipi csi2 dphy,可以工作在full mode 和split mode两个模式, 拆分为csi2_dphy0/csi2_dphy1/csi2_dphy2三个逻辑dphy Full Mode: 仅使用csi2_dphy0,csi2_dphy0与csi2_dphy1/csi2_dphy2互斥,不可同时使用; data lane最大4 lanes; 最大速率2.5Gbps/lane; Split Mode: 仅使用csi2_dphy1和csi2_dphy2, 与csi2_dph

    2024年02月16日
    浏览(60)
  • 基于RK3399 Android11适配OV13850 MIPI摄像头

      从上图可看出,我们需要关心的,①MIPI数据和时钟接口使用的是MIPI_TX1/RX1 ②I2C使用的是I2C4总线 ③RST复位引脚使用的是GPIO2_D2 ④PWDN使用的是GPIO1_C7 ⑤MCLK使用的是GPIO3_B7 ⑥需要保证红色框框的供电电源正常。   结合RK提供的文档,如下摄像头数据采集拓扑图所示,我们

    2024年03月14日
    浏览(47)
  • 关于 Delphi 11.3跨平台开发Android调用 JNI JAR java 的说明和注意事项

    关于 调用 JNI JAR 的说明和注意事项,调用第三方 JAR SDK 和 翻译 安卓 JAVA 代码 的说明 V2017.10.18 (* ************************************************ *) (* *) (* *) (* 设计:爱吃猪头肉 Flying Wang 2015-04-15  *) (* 上面的版权声明请不要移除。 *) (* *) (* ************************************************ *) 本人所

    2024年02月07日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包