全志A40I开发板10.1寸MIPI屏调试

全志A40I开发板10.1寸MIPI屏调试_第1张图片

天嵌A40i核心板,天嵌科技出品的又一款工业级核心板,采用4核ARM Cortex-A7处理器设计,每核主频高达1.2GHz。

注:本文所调试屏的参数是适配天嵌10.1寸电容触摸屏的,其他的mipi屏需要参考MIPI原厂给的参数参考本文的调试方法修改。

1.相关说明和介绍

MIPI屏不管尺寸和分辨率只要是单通道MIPI的,理论上都可以在天嵌A40I核心板上调试点亮,天嵌A40I核心板硬件上只有一个通道MIPI接口,最大支持4lane;

2.天嵌A40I核心板MIPI接口硬件如下图所示:

全志A40I开发板10.1寸MIPI屏调试_第2张图片

MIPI_DSI_CKP:MIPI接口时钟信号正极

MIPI_DSI_CKN:MIPI接口时钟信号负极

MIPI_DSI_D0P:MIPI接口数据0 lane正极

MIPI_DSI_D0N:MIPI接口数据0 lane负极

MIPI_DSI_D1P:MIPI接口数据1 lane正极

MIPI_DSI_D1N:MIPI接口数据1 lane负极

MIPI_DSI_D2P:MIPI接口数据2 lane正极

MIPI_DSI_D2N:MIPI接口数据2 lane负极

MIPI_DSI_D3P:MIPI接口数据3 lane正极

MIPI_DSI_D3N:MIPI接口数据3 lane负极

全志A40I开发板10.1寸MIPI屏调试_第3张图片

市面上大部分MIPI屏的pin脚数量和定义都会不同,而天嵌A40I核心板带MIPI屏的开发底板MIPI屏FPC座子是统一30pin标准的,需要通过驱动板或转接板来硬件适配,如下图:

全志A40I开发板10.1寸MIPI屏调试_第4张图片

其中SYS_CRL_5V电源和VCC_3V3电源由硬件直接上电,无须驱动去控制,I2C接口,TP_INT,TP_RST用于触摸屏的,可以不用管,主要看DSI_RST复位脚,BL_EN背光使能脚,BL_PWM背光亮度调节脚以及MIPI接口相关脚(这些是标准的MIPI接口),每款屏支持的lane数不一样,有2lane或者3lane和4lane的,具体看屏规格书上面有写,根据实际情况填写A40I MIPI屏相关配置参数:

lichee/tools/pack/chips/sun8iw11p1/configs/a40-p1/sys_config.fex 

全志A40I开发板10.1寸MIPI屏调试_第5张图片

主要修改的地方如上图红框内的部分,具体说明如下:

lcd_driver_name:调用驱动的文件名称,比如当前配置的是tft720x1280,调用的uboot驱动路径是:

brandy/u-boot-2014.07/drivers/video/sunxi/disp2/disp/lcd/tft720x1280.c

调用的kernel驱动路径是:

linux-3.10/drivers/video/sunxi/disp2/disp/lcd/tft720x1280.c

lcd_if:需要配置成4 (dsi即mipi接口),具体lcd_if说明:  0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi

lcd_x,lcd_y:mipi屏分辨率宽高,参考屏规格书填写

lcd_dclk_freq:mipi屏时钟频率,单位MHZ,参考屏规格填写

lcd_hbp,lcd_ht,lcd_hspw:mipi屏水平方向参数,参考屏规格书填写,lcd_ht = lcd_hbp+lcd_hfp+lcd_hspw+lcd_x,必须通过此公式计算出lcd_ht,否则会导致系统卡在uboot阶段起不来,之前调试遇到这种莫名其妙的起不来问题,就是因为lcd_ht不是按照公式计算出来的

lcd_vbp,lcd_vt,lcd_vspw:mipi屏垂直方向参数,参考屏规格书填写,lcd_vt = lcd_vbp+lcd_vfp+lcd_vspw+lcd_y,必须通过此公式计算出lcd_vt,否则会导致系统卡在uboot阶段起不来,之前调试遇到这种莫名其妙的起不来问题,就是因为lcd_vt不是按照公式计算出来的

lcd_dsi_if:默认设0即可

lcd_dsi_lane:mipi屏支持的lane数,根据屏规格书实际填写

lcd_dsi_format:mipi屏支持的显示数据格式,一般为RGB 24位传输,具体lcd_dsi_format说明:

0:LCD_DSI_FORMAT_RGB888,

1:LCD_DSI_FORMAT_RGB666, 

2:LCD_DSI_FORMAT_RGB666P, 

3:LCD_DSI_FORMAT_RGB565

具体需要询问mipi供应商提供,一般规格书上面不会说明,屏厂会给一个屏参和屏初始化寄存器参数txt文件

lcd_dsi_te:看mipi屏是否支持TE功能,如支持设1,不支持设0或者不配置该项

lcd_dsi_eotp:看mipi屏是否支持EOTP功能,如支持设1,不支持设0或者不配置该项

lcd_bl_en:mipi屏背光使能脚,根据原理图BL_EN所连GPIO口配置即可,默认开机需要置高,才能使能背光

lcd_gpio_0:mipi屏背光亮度调节脚,当前接到PB3_PWM1脚,因为直连到mipi屏上,默认设置

port:PB3<1><1><1>为高,屏在uboot阶段才会亮,kernel阶段需要设置为pwm1可调背光功能,修改lichee/linux-3.10/arch/arm/boot/dts/sun8iw11p1-soc.dts配置文件如下:

backlight_mipi {

compatible = "pwm-backlight";

brightness-levels = <25 50 75 100 125 150 175 200 225 250>;

polarity = <1>; //0-not invert, 1-invert

dft_brightness = <0x9>;//0~9范围值,9为最亮,0为最暗

pwm-id= <1>; //pwm组别

period_ns=<10000>;

status = "ok";

};

lichee/tools/pack/chips/sun8iw11p1/configs/a40-p1/sys_config.fex里面有设置pwm1功能需要关闭,如下

;----------------------------------------------------------------------------------

;pwm config

;----------------------------------------------------------------------------------

[pwm1]

pwm_used            = 0

pwm_positive        = port:PB3<3><0>

[pwm1_suspend]

pwm_positive        = port:PB3<7><0>

lcd_reset:mipi屏复位脚,根据原理图上DSI_RST所接gpio口配置,默认置高,复位信号是先拉高延时100ms,再拉低延时100ms,最后再拉高延时100ms就可以初始化mipi屏寄存器参数,一般mipi都需要复位才能正常初始化屏;

驱动通过mipi接口下发mipi屏寄存器初始化参数,由于全志平台没有将这些初始化参数通过dtsi设备树文件解析传给驱动,所以无法在dtsi设备树文件里面配置mipi屏寄存器初始化参数,只能在对应mipi屏驱动里面改,当前配置的是tft720x1280,所以我们需要修改

brandy/u-boot-2014.07/drivers/video/sunxi/disp2/disp/lcd/tft720x1280.c驱动,而kernel下的驱动

linux-3.10/drivers/video/sunxi/disp2/disp/lcd/tft720x1280.c

跟uboot下驱动完全一样,只是打印信息函数不一样,uboot阶段驱动需要用printf来打印,而kernel阶段驱动用printk来打印,要注意下,否则会出现编译出错的情况,屏厂给的mipi屏寄存器初始化参数文件大致一样,具体我们以视维达5寸mipi屏

TSCE_Project__ILI9881C_HSD5.0_720x1280_3Lanes_2018-01-24.txt初始化寄存器参数文件为例说明:

全志A40I开发板10.1寸MIPI屏调试_第6张图片

里面一般是测试架嵌入式驱动点亮mipi屏的代码,有上电时序,mipi屏初始化寄存器参数列表,进入休眠模式命令,下电时序;

主要说明屏初始化寄存器参数列表怎么看:

LCM_Write(Gen,0,4,0xFF,0x98,0x81,0x03); //接口是通过mipi接口写4个参数到mipi屏,其中0xFF是mipi屏寄存器地址,0x98,0x81,0x03为数据;

LCM_Write(Gen,0,2,0x01,0x00); //接口是通过mipi接口写2个参数到mipi屏,其中0x01是mipi屏寄存器地址,0x00为数据,以此类推,将所有寄存器初始化参数全部一一对应写到mipi屏;

天嵌A40I核心板mipi屏驱动里面也要添加复位脚控制和下发mipi屏初始化寄存器参数,以tft720x1280.c mipi屏驱动为例说明:

全志A40I开发板10.1寸MIPI屏调试_第7张图片

第1个红框内是mipi下发接口,根据实际写数据参数不同选用;

第2个红框内是获取解析到sys_config.fex的lcd0配置下的lcd_reset脚,然后做相应复位操作,具体看屏厂给的文件如何复位mipi屏;

第3个红框内就是下发所有mipi屏寄存器初始化参数,比如dsi_dcs_wr_3para(sel,0xFF,0x98,0x81,0x03); 就是根据屏厂给的mipi屏初始化寄存器参数文件里的

LCM_Write(Gen,0,4,0xFF,0x98,0x81,0x03);来设的;后面所有参数都需要一一对应到tft720x1280.c驱动的tft7201280_init函数里面,否则漏掉一个都会导致mipi屏点不亮。

全志A40I开发板10.1寸MIPI屏调试_第8张图片

(成功点亮)

你可能感兴趣的:(嵌入式硬件,arm开发,ubuntu,linux,驱动开发)