1.显示器上数据组织格式 显示数据组成: 一幅图像即一帧,一帧包含有多行,每行包含多个像素,而每个像素的颜色使用若干位的数据表示。 显示方式: 显示器从屏幕的左上方开始,一行一行的取出每个像素的数据并显示出来,当显示到一行的最右端时,跳到下一行的最左端开始显示像素数据。当显示完所有行后,跳到屏幕左上方开始下一帧的显示。 显示控制信号: HSYNC:表示已经显示到一行的最右端,开始跳到下一行图像数据显示,HSYNC信号频率称为水平频率; VSYNC:表示一帧图像数据显示完毕,开始下一帧图像数据显示,VSYNC信号频率表示一秒钟内显示了多少帧图像,称为垂直频率或场频率; VLCK:表示正在传输的一个像素数据,VLCK信号频率越高,像素点显示速率越高。 2.驱动添加,如型号为ili9488_hvga_dsi的IC驱动: A.添加屏驱动文件ili9488_hvga_dsi mediatek/custom/common/kernel/lcm/ili9488_hvga_dsi B.修改mt65xx_lcm_list.c mediatek/custom/common/kernel/lcm/mt65xx_lcm_list.c 添加代码: extern LCM_DRIVER ili9488_hvga_dsi_drv; 在lcm_driver_list[]中添加 #if defined(ILI9488_HVGA_DSI) &ili9488_hvga_dsi_drv, #endif C.修改ProjectConfig.mk mediatek/config/prj/ProjectConfig.mk 在文件中添加: BUILD_LK=yes CUSTOM_LK_LCM= ili9488_hvga_dsi CUSTOM_KERNEL_LCM= ili9488_hvga_dsi LCM_HEIGHT=480 LCM_WIDTH=320 屏分辨率要和驱动文件ili9488_hvga_dsi中ili9488_hvga_dsi.c的设置一致 #define FRAME_WIDTH (320) #define FRAME_HEIGHT (480) D.LCM参数配置lcm_get_params(LCM_PARAMS *params) mediatek/custom/common/kernel/lcm/ili9488_hvga_dsi/ili9488_hvga_dsi.c LCM分辨率: params->width = FRAME_WIDTH; params->height = FRAME_HEIGHT; LCM数据格式: params->dsi.data_format.color_order = LCM_COLOR_ORDER_RGB; params->dsi.data_format.trans_seq = LCM_DSI_TRANS_SEQ_MSB_FIRST; params->dsi.data_format.padding = LCM_DSI_PADDING_ON_LSB; params->dsi.data_format.format = LCM_DSI_FORMAT_RGB888; HSYNC、VSYNC信号参数: params->dsi.vertical_sync_active = 50; params->dsi.vertical_backporch = 2; params->dsi.vertical_frontporch = 20; params->dsi.vertical_active_line = FRAME_HEIGHT; params->dsi.horizontal_sync_active = 50; params->dsi.horizontal_backporch = 80; params->dsi.horizontal_frontporch = 350; params->dsi.horizontal_active_pixel = FRAME_WIDTH; LCM数据传输速率: // Bit rate calculation params->dsi.pll_div1=0; // fref=26MHz, fvco=fref*(div1+1) (div1=0~63, fvco=500MHZ~1GHz) params->dsi.pll_div2=1; // div2=0~15: fout=fvo/(2*div2) params->dsi.fbk_div =19; // fref=26MHz, fvco=fref*(fbk_div+1)*2/(div1_real*div2_real)
lcm的参数配置还要选择好通信接口类型:
LCM 类型:
params->type = LCM_TYPE_DPI;
MIPI DBIDPIDSI简介
MIPI的液晶数据传输中涉及到是DWG(Display Working Group)工作组,该工作组提出了4种液晶规范分别为DCS(Display Command Set)、DBI(Display Bus Interface)、DPI(Display Pixel Interface)、DSI(Display Serial Interface)。
1. DCS(Display Command Set)规范中规定了显示命令设置的一些规范,它并没有说明它具体的硬件连接方式,规定了液晶传输中各个命令的值和意义以及命令说明,主要是为了配合DBI规范、DSI规范来使用的。
2. DBI(Display Bus Interface)规范中规定了它的硬件接口方式,它是液晶数据总线接口,可细分为MIPI DBI Type A、MIPI DBI TypeB、MIPI DBI Type C这三种不同的模式,不同模式下的硬件接口以及数据的采样都有所不同,如在MIPI DBI Type A规范中规定是下降沿采样数据值(摩托罗拉6800接口 ),MIPI DBI Type B规范中规定是上升沿采样数据(英特尔8080接口 )。MIPI DBI Type A和MIPI DBI Type B同时又可细分为5种不同数据接口模式,分别为8位数据接口、9位数据接口、16位数据接口、18位数据接口、24位数据接口。不过市面上支持9位数据接口的液晶驱动IC并不多见,当然数据接口越大那么相同一个周期内数据接口越大,所传输的数据越多。而MIPI DBI Type C 只适用于传输于DCS规范中规定的命令和该命令所需要的参数值,不能传输液晶像素的颜色值(虽然DBI规范中规定能传输颜色值,不过市面上的液晶驱动IC是用来传输命令和命令所需的参数值)。
同样在DBI(Display Bus Interface)规范中规定不同数据接口所支持颜色位数。具体还是要参考所使用的液晶驱动IC资料来确定。谈到颜色位数,需要说一下何谓颜色位数,颜色位数也称色彩位数,位图或者视频帧缓冲区中储存1像素的颜色所用的位数,它也称为位/像素(bpp)。色彩深度越高,可用的颜色就越多。市面常用液晶驱动IC支持的颜色位数有16、18、24这三种。
关于DBI data format的说明
(I)对于16位的datawidth,典型的数据格式举例如下
1cycle/1pixel,RGB565,格式是:rrrrrggggggbbbbb
3cycle/2pixel,RGB666,格式是:xxxxrrrrrrgggggg
xxxxbbbbbbrrrrrr
xxxxggggggbbbbbb
3cycle/2pixel,RGB888,格式是:rrrrrrrrgggggggg
bbbbbbbbrrrrrrrr
ggggggggbbbbbbbb
(II)对于18位的datawidth,典型的数据格式举例如下
1cycle/1pixel,RGB666,格式是:rrrrrrggggggbbbbbb
3cycle/2pixel,RGB888,格式是:rrrrrrrrgggggggg
bbbbbbbbrrrrrrrr
ggggggggbbbbbbbb
3. DPI(Display Pixel Interface)规范中所规定的硬件接口跟DBI规范中并不相同,它不是像DBI规范用Command/Data配置液晶驱动IC的寄存器再进行操作。某种程度上,DPI与DBI的最大差别是DPI的数据线和控制线分离,而DBI是复用的。同样使用DBI接口的液晶很少有大屏幕的,因为需要更多的GRAM从而提高了生产成本,而DPI接口即不需要,因为它是直接写屏,速度快,常用于显示视频或动画用。
DPI接口也可称为RGB接口。DBI接口可称为MCU(MPU)接口。
DPI从它的名称中就可以看出它是直接对液晶的各像素点进行操作的,它是利用(H,V)这两个行场信号进行对各像素点进行颜色填充操作。填充速度快,可用于动画显示,目前手机液晶屏所用的接口就是这一类。H(H-SYNC)称为行同步信号;V(V-SYNC)称为场同步信号。它像模拟电视机那样用电子枪那样进行扫频显示,不过它对时序控制要求很高。因此一般的MCU芯片很难支持。
4.DSI(Display Serial Interface):
(1)符合MIPI协定的串列显示器界面协议,主机与显示器之间用差分信号线连接。
(2)一对clock信号和1~4对data信号
(3)一般情况下data0可以配置成双向传输
(4)一个主机端可以允许同时与多个从属端进行通信
|