从电路到UI系列之一——常见显示控制接口的认识

引入

我之前有两方面的使用屏幕的案例。在做的模块上需要用到屏幕来显示的时候,全是SPI屏幕,并口屏幕和IIC屏幕。在研究了驱动(或者是绘图函数更加合适)之后,我发现其实他们就是直接写显存,这个显存在面板驱动芯片内部。在废旧笔记本显示器再利用的方面,当时经常是另买一个40pin的驱动版和面板接在一起,再把HDMI或者DP接在驱动板上就能废物利用。

这次在我决定做comdex之后,我需要选一块看得过去的屏幕跑LVGL。这个屏幕尺寸不能太大,分辨率不能太低,另外,价格不能太贵,毕竟是要做N个送人的。做咸鱼蹲了一周之后我淘到一款18元的HX8369A控制的480*800的屏幕,并顺带研究下接口驱动。

本篇主要总结的是屏幕协议及其选择。未来可能会有针对微控制器的主机接口用法分析。

显示接口

    本小结以几个协议原文、几个屏幕相关的数据手册原文为叙述基础,细节追溯带有我个人应用倾向性。

    参考文档:

  1. MIPI联盟的DBI协议原文 MIPI Alliance Standard for Display Bus Interface v2.0 链接:https://share.weiyun.com/pgTKrIiV;
  2. MIPI联盟的DPI协议原文 MIPI Alliance Standard for Display Pixel Interface (DPI-2) 链接:https://share.weiyun.com/I7SXtSYQ;

概念

我们在学习的时候需要明确一些概念或者说专有明词是什么意思。首先是MIPI:

MIPI:全写为Mobile Industry Processor Interface,即移动产业处理器接口,MIPI Alliance,MIPI联盟,制定MIPI相关标准的组织,跟USB一样肯定也是一对耳熟能详的巨头企业联合发起搞的。我查了下中国的页里第一个就是全志,也看到小米和VIVO,但没有看到华为。DWG(Display Working Group)是MIPI联盟的一个工作组,下面的三个名词(不包括LCM)是DWG搞的。这里有一个瑞萨的PPT文档有阅读的价值,主要是讲了DCS命令,瑞萨的官网没找到,只在豆丁上有,4块钱我没舍得买,就放个链接:https://www.docin.com/p-1571989966.html

    需要注意的是MIPI不是一个接口的名字,买屏幕时常见的说自己是MIPI接口的,我理解为他说的是DSI接口:

DSI:全写为Display serial interface,显示串行接口,是MIPI联盟定义的一种图象输出接口,是串行的,应该是由时钟和数据线组成,并用差分线的形式输出,频率相对很高,需要有专用的PHY,在高级点的应用中常见,在STM出的应用处理器MP157上就有,数据手册原文是“MIPI® DSI 2 data lanes up to 1 GHz each”。注意类比也是MIPI联盟定义的CSI接口。DSI不是本文的重点。

DBI:全写为Display Bus Interface,显示总线接口,是MIPI联盟定义的一种图象接口,是并行的,也是我引文中提到的用单片机并口控制屏幕,业界也有称为MCU接口,正点原子出的一款4.3寸的屏幕用的这个接口,亲爱的杨神在大二时送我的屏幕也是此接口。DBI接口不是此次制作的重点。STM32F429数据手册里第一页提到的“LCD parallel interface, 8080/6800 modes”就是DBI接口,应该是和FSMC合用同一个外设的。

DPI:全写为Display Pixel Interface,显示像素接口,是MIPI联盟定义的一种图象接口,是并行的,是我们最常用的使用单片机LCDIF外设控制屏幕的接口,也是高端应用常见的接口,是本次制作和总结的重点。业内也有将其称为RGB接口。STM32F429的手册上称实现它的控制器为"LCD-TFT controller up to VGA resolution"。

插入思考:DPI常用来控制更大的屏幕,原因是DPI能直接写像素,而DBI则需要在驱动控制器(Driver controller)中集成显存(Graphic RAM),DBI可以允许主机通过命令修改显存中的部分值改变部分像素值。注意,这些命令(DCS)也是被MIPI定义了的标准命令,也就是说,当我们买到屏幕后商家给的初始化代码里长串的向驱动控制器中写入的命令和值的含义是有案可查的。需要集成显存应该是DBI接口应用在驱动控制器上的一个瓶颈,如果是一个1366*768的屏幕,就需要1366*768*3共3MB多的RAM,这无疑是巨大的面积开销。

LCM:全写为LCD Module,LCD模组,参考的两个协议中没有看到这个词的定义,我理解为包括LCD液晶面板,驱动控制器,接口排线和必要的固定保护件组成的模块,比我18块钱买的这个屏幕。我室友设计的是其中的驱动控制器,比如我买的LCM中的HX8369A,这个小芯片以特殊的工艺焊接在液晶面板上,它除了有主机侧的DBI/DPI/DSI接口的引脚外,还有千个以上的接面板的引脚。难道LCD也是像LED点阵一样逐行点亮的吗?

电路预设计

我拿到的这个屏幕商家说是支持MCU、RGB和SPI三种接口的,那么如何告知屏幕我选择的接口,如何初始化呢。如下图一。

图一 HX8369A的接口选择

DBI总线的认识

由图可见DBI/DPI内部也是略有复杂,且SPI怎么控制屏幕也是DBI总线的一种实现方式。经查DBI协议,DBI的type A和type B主要是读写信号线是合一还是分开的问题,type A还多了多了一个E clock线,并不重要。但是DBI的type C是串行模式,即SPI来实现。见下图二。

图二 DBI type C模式接线图

由上图可以得到这么几个要素:1,type C需要片选,复位,始终,命令\数据切换,数据输入和数据输出这么几个信号线;2,数据输入和数据输出是可以共用同一个线。

继续来认识type C的三个选项,这其实就是如何解决命令\数据切换的问题,因为协议中说命令数据切换线是可选的,不强制。但是我看了半天协议其实没有分出type C的option 1和2的区别,这里放上时序原图截图,请后续看到的人也一并想想。

图三 DBI type C option 1的时序

图四 DBI type C option 2的时序

 

 

option 3的时序就相对很好懂了。因为我用的SPI口的屏幕就是如此驱动的。这里也发出SPI口控制屏幕,也就是DBI type C option 3的时序截图。很明显,option 3通过命令线的高低电平值来确定当前是数据还是命令。

图五 DBI type C option 3的时序

DPI的时序认识

图一最右侧的显示模式中的模式一表示显存在驱动控制器之内,如图六。它可以由DBI模式来驱动。

图六 显示模式1

模式三则驱动控制器没有显存。显存放在主存里。这只能是DPI的模式,数据直接怼到面板上。

图七 显示模式3

DPI就是RGB接口,由行信号(水平同步,HSYNC),帧信号(垂直同步,VSYNC),数据有效信号(数据使能,LCD_DE),像素时钟(LCD_CLK),数据线组(LCD_R[7:0],LCD_G[7:0],LCD_B[7:0]),还有两根线不常用到就不赘述了。跟DVP的信号有点像啊,只是DVP没有数据有效信号,且数据线宽度没有这么高。

posted @ 2021-12-13 20:58  北纬三十度夏至  阅读(1191)  评论(0编辑  收藏  举报