当前位置:   article > 正文

【正点原子Linux连载】 第二十四章 MIPI DSI屏幕驱动实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南_linux mipi 屏驱动

linux mipi 屏驱动

1)实验平台:正点原子ATK-DLRK3568开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=731866264428
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban

第二十四章 MIPI DSI屏幕驱动实验

MIPI DSI屏幕目前广泛应用于手机、平板等产品中,尤其是高清屏幕基本都是采用MIPI DSI接口,比如1080P、2K级的屏幕。MIPI DSI接口使用更少的线数,驱动更高分辨率的屏幕。一般低端ARM芯片,会提供RGB接口来驱动LCD,中高端ARM芯片会提供MIPI DSI接口,比如手机、平板的SOC。ATK-DLRK3568也提供了一路MIPI DSI接口,本章我们就来学习如何调试MIPI DSI接口屏幕。

本章节用到的所有MIPI协议文档已经放到了开发板光盘中,路径为:开发板光盘 06、参考资料MIPI协议文档。
24.1 MIPI联盟简介
MIPI即移动产业处理器接口,是Mobile Industry Processor Interface缩写,2003年由ARM、Nokia、ST和TI等公式成立的一个联盟,所以大家在看MIPI相关文档的时候长看到MIPI Aliance。MIPI官方网址为https://www.mipi.org/。当前MIPI联盟已经有很多成员, 比如大家熟知的ARM、ST、高通、TI、苹果、海思等,基本上囊括了主流的移动处理器生产厂家,如图24.1.1所示:
在这里插入图片描述

图24.1.1 MIPI联盟成员(部分)
MIPI联盟主要是为移动处理器定制标准接口和规范,开发的接口广泛应用于处理器、相机、显示屏、基带调制解调器等设备。比如:
·MIPI DSI(显示屏接口)
·MIPI CSI(摄像头接口)
·MIPI I3C
·MIPI RFFE(射频前端控制接口)
·MIPI SPMI(系统电源管理接口)
·等等。
MIPI通过定义一套协议和标准,满足各个子系统之间互联,确保不同公司开发的产品可以兼容连接,减少协议标准。图24.1.2就是MIPI相关协议在移动处理器中的使用:
在这里插入图片描述

图24.1.2 移动处理器中MIPI的使用场合
从图24.1.2可以看出,MIPI下的各种协议、接口在移动处理器中使用非常广泛,典型的就是MIPI DSI和MIPI CSI。MIPI主要包括四个方面,如图24.1.3所示:
在这里插入图片描述

图24.1.3 MIPI框架
从图24.1.3可以看出,MIPI主要有四个方向的协议:
①、Multimedia,多媒体。
②、Control&Data,控制和数据。
③、Chip-to-Chip Inter Process Communications,
④、Debug&Trace,调试和追踪
我们依次来简单看一下这四部分都有哪些内容。
1、Multimedia
Multimedia部分框图如图24.1.4所示:
在这里插入图片描述

图24.1.4 Multimedia部分框图
Multimedia就是多媒体部分,分为如下几部分:
·摄像头,应用层有CCS,协议层主要有CSI-2、CSI-3,物理层有A-PHY、C-PHY、D-PHY和M-PHY。
·屏幕,应用层有DCS,协议层主要有DSI,物理层有A-PHY、C-PHY、D-PHY。
·触摸,应用层有TCS,协议层是I3C。
·存储,UFS协议,这个是目前手机以及平板上最常用的存储协议,物理层为M-PHY。
·音频,协议层有SLIMIbus和SoundWire。
多媒体部分我们用的最多就是DSI和CSI,DSI应用于屏幕,CSI用于摄像头。对应的物理层协议有A-PHY、C-PHY、D-PHY和M-PHY。
D-PHY:目前用的最多的接口,不管是摄像头还是屏幕,D-PHY接口为1/2/4lane(lane可以理解为通道,也就是1/2/3/4通道,每个通道2条差分线),外加一对时钟线,数据线和时钟线都是差分线,为电流驱动型,不同版本的D-PHY速度不同,比如RK3568用的V1.2版本的D-PHY 单lane最高可到2.5Gbps(使用deskew校准)。D-PHY最多10根线,有专门的时钟线来进行同步。
C-PHY:随着屏幕和摄像头的分辨率以及帧率越来越高,D-PHY的带宽越来越不够用。C-PHY应运而生,C-PHY接口是1/2/3 Trio,每个Trio有3根线,最高9根线,没有专用的时钟线了。C-PHY目前在高端旗舰手机芯片中可能会用到,本教程不讲解C-PHY。
A-PHY:主要为汽车自动驾驶而生,目前汽车自动驾驶发展非常迅猛, ADAS(高级驾驶员辅助系统)摄像头于车载娱乐屏幕越来越多,分辨率也越来越高,而且车载摄像头和娱乐屏幕分布比较分散,到主控的距离一般比较长。但是C-PHY和D-PHY的距离太短,最多不超过15CM,显然不适合用在当今高度智能化的车载领域。A-PHY于2020年9月发布,用于长距离、超高速的汽车应用中,比如ADAS、自动驾驶系统 (ADS)、车载信息娱乐系统 (IVI) 和其他环绕传感器。
M-PHY:目前主要用在USF存储中。
2、Control&Data
Control&Data部分框图如图24.1.5所示:
在这里插入图片描述

图24.1.5 Control&Data
图24.1.5中主要是RF、电源管理以及I3C通信接口相关的协议。
3、Chip-to-Chip Inter Process Communications
Chip-to-Chip Inter Process Communications框图如图24.1.6所示:
在这里插入图片描述

图24.1.6 Chip-to-Chip Inter Process Communications框图
4、Debug&Trace
Debug&Trace框图如图24.1.7所示:
在这里插入图片描述

图24.1.7 Debug&Trace框图
关于MIPI联盟就介绍到这里,感兴趣的可以去MIPI联盟官网上去看一下。
24.2 MIPI DSI概述
24.2.1 MIPI DSI协议综述
本章我们是来学习如何驱动MIPI接口屏幕,所以需要学习的就是MIPI DSI。DSI全称是Display Serial Interface,是主控和显示模组之间的串行连接接口,图24.2.1.1展示了主控和屏幕之间的连接方式:
在这里插入图片描述

图24.2.1.1 DSI主控与屏幕之间接口示意图
MIPI DSI接口分为数据线和时钟线,均为差分信号。数据线可选择1/2/3/4 lanes,时钟线有一对,最多10根线。MIPI DSI以串行的方式发送指令和数据给屏幕,也可以读取屏幕中的信息。很明显,如果屏幕的分辨率和帧率越高,需要的带宽就越大,就需要更多的数据线来传输图像数据,RK3568默认使用4 lanes来驱动MIPI屏幕,当然了,对于小尺寸的屏幕,也可以使用2 lanes来驱动。对于MIPI DSI接口而言,最常用的就是2 lanes和4 lanes。
24.2.2 MIPI DSI分层
和网络协议栈一样,MIPI DSI也是分层的,如图24.2.2.1所示:
在这里插入图片描述

图24.2.2.1 MIPI DSI协议分层
从图24.2.2.1可以看出,MIPI DSI一共有四层,从上往下依次为:
·应用层
·协议层
·通道管理层
·物理层
1、应用层
应用层处理更高层次的编码,将要显示的数据打包进数据流中,下层会处理并发送应用层的数据流。发送端将命令以及数据编码正MIPI DSI规格的格式,接收端则将接收到的数据还原为原始的数据。
2、协议层
协议层主要是打包数据,在原始的数据上添加ECC和校验和等东西。应用层传递下来的数据会打包成两种格式的数据:长数据包和短数据包,关于长短数据包后面会有详细讲解。发送端将原始数据打包好,添加包头和包尾,然后将打包好的数据发送给下层。接收端介绍到下层传来的数据包以后执行相反的操作,去除包头和包围,然后使用ECC进行校验接收到的数据,如果没问题就将解包后的原始数据交给应用层。
3、链路层
链路层负责如何将数据分配到具体的通道上,MIPI DSI可以支持1/2/3/4 Lane,采用几通道取决于你的实际应用,如果带宽需求低,那么2 Lane就够了,带宽高的话就要4 Lane。协议层下来的数据包都是串行的,如果只有1 Lane的话,那就直接使用这1 Lane将数据串行的发送出去,如果是2/4 Lane的话数据该如何发送呢?如图24.2.2.2所示:
在这里插入图片描述

图24.2.2.2 发送端通道管理层处理示意图
图24.2.2.2左侧是1 Lane的时候数据如何在数据线上传输,由于只有1 Lane,所以上层传递下来的数据就只能按照Byte0~ByteN这样的顺序传输。
图24.2.2.2右侧是4 lane的时候数据传输方式,由于采用了4通道,那么上层传递下来的数据就要平均分配给4个通道。分配方法也很简单,每个通道一个字节,比如Byte0是Lane0,Byte1是Lane1,Byte2是Lane2,Byte3是Lane3,如此反复循环。
如果要发送的数据和通道数不是整数倍数,那么先发送完的数据通道就进入EOT(End of Transmission)模式。我们来看一个2 Lane整数倍传输和非整数倍传输的图,如图24.2.2.3所示:
在这里插入图片描述

图24.2.2.3 整数倍和非整数倍数据传输方式
图24.2.2.3中上部分就是整数倍传输,2条通道一起结束,进入EoT模式。下图是非整数倍传输,其中Lane 1先传输完,所以Lane 1先进入EoT模式。同理,3/4 Lane也一样。
在接收端执行相反的操作,将Lane上的数据整理打包成串行数据上报给上层,如图24.2.2.4所示:
在这里插入图片描述

图24.2.2.4 接收端通道管理层处理示意图
4、物理层
物理层就是最底层了,完成MIPI DSI数据在具体电路上的发送与接收,与物理层紧密相关的就是D-PHY。物理层规定了MIPI DSI的整个电气属性,信号传输的时候电压等,关于物理层后面会详细讲解。
24.3 MIPI DSI物理层和D-PHY
MIPI DSI的物理层也叫PHY层,前面说了MIPI有C-PHY、D-PHY等,只是在MIPI DSI领域D-PHY用的最多,所以这里可以简单的认为MIPI DSI物理层说的就是D-PHY,本文后面统一用D-PHY来表示MIPI DSI的物理层。
D-PHY是一个源同步、高速、低功耗、低开销的PHY,特别适合移动领域。D-PHY主要用于主处理器的摄像头和显示器外设,比如MIPI摄像头和屏幕。D-PHY提供了一个同步通信接口来连接主机和外设,在实际使用中提供一对时钟线以及一对或多对信号线。时钟线是单向的,由主控产生,发送给设备。数据线根据实际配置,可以有1~4 Lane,只有Data0这一组数据线可以是单向也可以是双向的,其他组的数据线都是单向的。
数据链路分为High-Speed模式和Low-Power模式,也就是常说的HS和LP。HS模式用来传输高速数据,比如屏幕像素数据。LP模式用来传输低速的异步信号,一般是配置指令,屏幕的配置参数就是用LP模式传输的。HS模式下每个数据通道速率为80~1500Mbps,如果使用deskew校准,可以到2500Mbps,最新版本的D-PHY支持的速率更高!LP模式下最高10Mbps。
24.3.1 什么是Lane
我们前面已经提了很多次“Lane”这个词,英文直译过来就是:航道、跑道。在这里就是在主控与外设直接传输数据的通道,MIPI DSI包括一个时钟Lane和多个数据Lane,每条Lane使用2根差分线来连接主控和外设。收发端都有对应的Lane模块来处理相关的数据,一个完整的Lane模块如图24.3.1.1所示:
在这里插入图片描述

图24.3.1.1 通用的Lane模块
从图24.3.1.1可以看出,一个通用的Lane模块,包括一个高速收发器和一个低速收发器,其中高速收发器有HS-TX、HS-RX,低速收发器有LP-RX和LP-TX,以及一个低速竞争检测器LP-CD。实际的Lane模块是在图24.3.1.1中简化而来的,比如对于高速单向数据通道,可能只有HS-TX或者HS-RX。
24.3.2 D-PHY信号电平
Lane分为HS和LP两种模式,其中HS采用低压差分信号,传输速度高,但是功耗大,信号电压幅度100mv300mV,中心电平200mV。LP模式下采用采用单端驱动,功耗小,速率低(<10Mbps),信号电压幅度01.2V。在LP模式下只使用Lane0(也就是数据通道0),不需要时钟信号,通信过程的时钟信号通过Lane0两个差分线异或得到,而且是双向通信。HS和LP模式下的信号电平如图24.3.2.1所示:
在这里插入图片描述

图24.3.2.1 HS和LP模式信号电平
图24.3.2.1中蓝色实线是LP模式下的信号波形示例,电压为0~1.2V。绿色虚线是LP模式下信号的高低电平门限。红色实线是HS模式下的信号波形示例,中心电平200mV。
24.3.3 通道状态
上面说了HS模式下是单向差分信号,主控发送(HS_TX),外设接收(HS_RX)。而LP是双向单端信号,接收和发送端都有LP_TX和LP_RX,注意只有Lane0能做LP。
由于HS采用差分信号,所以只有两种状态:
HS-0:高速模式下Dp信号低电平,Dn信号高电平的时候。
HS-1:高速模式下Dp信号高电平,Dn信号低电平的时候。
LP模式下有两根独立的信号线驱动,所以有4个状态:
LP-00:后面的“00”对应两根信号线的电平状态,第1个0表示Dp为低电平,第2个0表示Dn为低电平。如果是高电平,那么就为1。因此LP模式剩下的三个状态就是LP-01、LP-10和LP-11。
这6种状态对应的功能如图24.3.3.1所示:
在这里插入图片描述

图24.3.3.1 6种状态
通过图24.3.3.1种这6个状态的转换,D-PHY就能工作在不同的工作模式。
24.3.4 数据Lane三种工作模式
D-PHY协议规定了,通过Lane的不同状态转换有三种工作模式:控制模式、高速模式和Escape模式。控制模式和Escape模式都属于LP,高速模式属于HS。正常情况下,数据Lane工作在控制模式或者高速模式下,
1、高速模式
高速模式用于传输实际的屏幕像素数据,采用突发(Bursts)传输方式。为了帮助接收端同步,需要在数据头尾添加一些序列,接收端在接收到数据以后要把头尾去掉。高速数据传输起始于STOP状态(LP-11),并且也中终于STOP状态(LP-11)。在高速模式下传输数据的时候始终Lane也工作与HS模式,提供DDR时钟,也就是双边沿时钟,在时钟频率不变的情况下,传输速率提高一倍,这样可以有效利用带宽。
当数据传输请求发出以后,数据Lane退出STOP模式进入到高速模式,顺序是:LP-11→LP-01→LP-00。然后发出一个SOT序列(Start-of-Transmission),SOT后面跟着的就是实际的负载数据。当负载数据传输结束以后会紧跟一个EOT序列(End-of-Transmission)序列,数据线直接进入到STOP模式。图24.3.4.1是一个基础的高速传输结构示意图:
在这里插入图片描述

图24.3.4.1 基础的高速数据传说结构体
图24.3.4.1只是展示了一条Lane,负载数据前面是一个SoT,传输完成以后紧跟一个EoT,中间就是实际的负载数据。
一个完整的高速模式数据传输时序如图24.3.4.2所示:
在这里插入图片描述

图24.3.4.2 高速数据传输时序
图24.3.4.2中左侧蓝色部分是进入HS模式,要从LP-11→LP01→LP-00,然后数据线进入到HS模式,也就是中间红色部分,传输实际的数据。传输完成以后重新进入到LP-11(STOP)模式,也就是右边的蓝色部分。
2、Escape模式
Escape是运行在LP状态下的一个特殊模式,在此模式下可以实现一些特殊的功能,我们给屏幕发送配置信息就需要运行在Escape模式下。数据线进入Escape模式的方式为:LP-11→LP-10→LP-00→LP-01→LP-00。退出Escape模式的方式为:LP-00→LP-10→LP-11,也就是最后会进入到STOP模式,进入和退出Escape模式的时序如图24.3.4.3所示:
在这里插入图片描述

图24.3.4.3 Escape模式进入和退出
对于数据Lanes,进入Escape模式以后,应该紧接着发送一个8bit的命令来表示接下来要做的操作,命令如图24.3.4.3所示:
在这里插入图片描述

图24.3.4.3 Escape模式命令
从图24.3.4.3可以看出,有三个可选的命令:LPDT(Low-Power Data Transmission)、ULPS(Ultra-Low Power State)和Remote-Trigger(这里没有写错,因为这个命令大部分做复位操作,所以有些资料将这个命令也叫做Remote-Trigger)。
1)、LPDT命令
图24.3.4.3中第一个就是LPDT命令,命令序列为11100001,注意低bit先发送,所以对应的十六进制就是0X87(0X10000111)!LPDT直译过来就是低功耗数据传输,我们在初始化MIPI屏幕的时候发送的初始化序列就需要用LPDT命令,后面会给大家看逻辑分析仪采集到的实际数据。LPDT命令序列后面紧跟着就是要发送的数据,分为长包和短包两种,长短包结构后面会详细讲解。
2)、ULPS命令
ULPS命令是让Lane进入超低功耗模式。
3)、Remote-Trigger命令
注意,这里大家可能会疑惑,有的资料叫做Remote-Trigger,有的叫做Reset-Trigger,其实都是一个东西。因为本质是Remote Application,但是做的是Reset的工作,所以就产生了两种叫法,目前此命令就是用于远程复位。
Escape模式下发送这三个命令的时序图如图24.3.4.4所示:
在这里插入图片描述

图24.3.4.4 Escape模式下各命令时序图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/478958
推荐阅读
相关标签
  

闽ICP备14008679号