i.mx 8m plus是nxp推出的一款具有高可靠性,适合用于机器学习和视觉、高级多媒体和工业物联网的处理器。为发挥其强大的多媒体性能,启扬在i.mx8m plus配套底板上引出1 路 4 通道 mipi-dsi 显示接口、1 路双通道 lvds 显示接口、1 路 hdmi 显示接口(内含 earc 功能),支持三屏同显和三屏异显。
今天小编将简单分享一下启扬iac-imx8mp-kit开发板在连接lvds屏幕的过程中所进行的一系列调试过程。
注意
本文不着重于硬件的适配过程,只从软件角度分析,默认lvds屏幕连接正确,背光等连接正常。
工具:
启扬iac-imx8mp-kit开发板
1920x1080@60双通道lvds屏幕
1
分析屏幕手册
首先,我们需要查看lvds屏幕的datasheet,然后从中找出屏幕引脚图说明,如图所示:
从上图我们可以看出该屏幕是一个双通道的lvds屏幕,一般来说这种屏幕的颜色模式是3x8bit。
从数据手册中我们能看到lvds接口类型和信号格式。一般来说lvds显示屏有vesa和jeida两种接口标准,两种接口标准的区别在于每对低压差分信号上传输的r、g、b三色的位数和hs、vs、de位置不同。8bit液晶屏需要4对差分对传输r、g、b三色和hs、vs、de控制信号,如下图所示
根据下面数据手册中内容与上图接口标准的对照,我们可以看出本次调试使用的lvds屏幕的接口标准属于vesa标准。
除了上述信息外,我们还需要timing参数,这个参数能够详细地表述屏幕的显示区域,在数据手册中显示如下图所示
一般来说,我们需要vactive+vbp+vfp+vsync以及hactive+hbp+hfp+hsync还有时钟等信息,这些参数有的屏幕手册会详细写出,而有的则给出如上图类似的信息。
这里笔者给大家简要说明一下参数的关系,具体参数的意义因篇幅原因大家可以搜专业的解说帖子。
图中v_active以及h_active就是我们屏幕实际的分辨率参数,也就是1920*1080。上图中h_active之所以显示为960,这是因为该屏幕是一个分割屏幕,由两块儿屏幕组装而成,所以horizontal显示的参数都要乘以2。
图中tvb=bp+fp+sync,所以vbp+vfp+vsync=36、hbp+hfp+hsync=92x2=184,时钟这里直接给出是70.5mhz,因此不需要进行计算。
以上就是数据手册中上我们需要在意的参数部分。
此外我们需要重点关注的还有电压电流以及上电时序等信息,只是这部分信息一般情况下都由硬件工程师通过硬件手段帮忙适配。如果需要参与软件控制也不属于lvds适配层面,那么这里就不再过多的讲述,那么就期待我们下章关于代码部分的适配工作吧。
2
软件代码适配
本次启扬i.mx8m plus开发板需要适配一款1920*1080@60 的双通道lvds屏幕,适配流程与以往i.mx系列的适配仅需要在相关设备节点写timing不同,本次屏幕适配采用drm驱动框架适配,因此我们需要先从设备树开始入手。
不着重分析drm驱动以及详细的适配过程,仅从修改适配方向入手,为如何快速的适配一组lvds屏幕提供参考。
打开设备树文件(arch/arm64/boot/dts/freescale/imx8mp-qiyang-nv156fhm.dts)。
这里为适配多屏而单独新建了一个设备树文件,这样就可以加载不同的设备树点不同的屏幕,避免了在同一个设备树上持续更改的繁琐。
首先,#include一行直接带入主设备树,将开发板周边设备一同囊括进来。
其次,lvds0_panel_pwr节点是通过适配开发板上的电源管理芯片,将电源管理芯片的输出电压拉到lvds上使用,所以lvds供电由一个电源管理芯片来控制。
lvds0_panel节点主要是描述lvds的相关属性。例如compatible属性是为了匹配drm相关驱动,因为此次适配的是一个双通道的屏幕,所以写“regulator-fixed”属性;backlight节点是背光节点;power节点引用上面lvds0_panel_pwr节点,描述电源的部分;重要的是port节点,该节点指明lvds屏幕是接在哪个显示通道上,需要结合下面ldb节点的内容来看。
(这里只是简单描述一下这些节点的意思,具体包含的详细信息需要查看内核资料
(documentation/devicetree/bindings/media/video-interfaces.txt)
lvds-channel@0节点表示显示适配器开通了一个lvds的通道,然后该通道有mapping以及width两个属性,mapping表示颜色的模式,width表示数据宽度,这里我们根据屏幕数据手册的内容可以直接写spwg以及24。
port@1表示使用的是通道1。现在图形处理器日益强大,很多图形处理器可以开多通道,这里我们就开一个通道,然后将端点设置为我们上面描述的lvds,这样的话我们就把ldb部分给配通了。
(更加详细的解释可以到提供的开发板系列资料documentation/devicetree/bindings/display/imx/ldb.txt查看。)
总结一下就是我们需要在显示适配器开通一个通道,然后这个通道是用来点lvds的,具体点哪个lvds需要endpoint节点的指引,然后再描述lvds,一般里面要写具体是哪个屏幕,电源,背光等一系列信息,还要跟ldb的内容互通,这样保证两者能够相互找到,启动之后驱动就会根据compatible节点去匹配屏幕。
空调市场竞争态势激烈 爆发式增长中暗藏隐忧
测量新手的LDO电源抑制比
国产华为崛起_苹果市场逐渐下降
芯宣布其神经网络处理器IP取得里程碑式的市场成绩
1,SIM卡座坏了该如何更换
技术分享 | 启扬i.MX8M Plus开发板适配LVDS屏幕
科创板沃尔德职工代表监事韩彦茹介绍、履历信息
5g网络商用时间
KT已将5G网络技术应用于无人咖啡馆
5G和AI将带动整个晶圆代工行业发展
电子测试设备已经成为了汽车工程师必不可少的工具
柔性电子与人工智能技术在智能制造领域的应用及发展
中国联通VR业务规划的两个方向
借助AI识别网关实现高空坠物监测预警
数据格式转换函数
完全可扩展的软件开发套件提供TI TI处理器产品组合的简化开发
VR/AR技术的挑战和三大应用方向
华为下一代数据中心助力打造绿色低碳“数字能源之都”
供应/回收AgilentE3645A可编程直流电源Agile
化工人员定位解决方案功能