在调试mt6573的时候,用的是DSI接口,发现在gpio配置的codegen里没有相应的配置成TDN0,TDP0等管教的功能,
后来发现是在程序里自动配置的。是在 dsi_init()这个函数里便实现的初始化。那如果我们把它用作GPIO的时候,怎么办呢?看下边的程序:
static BOOL disp_drv_init_context(void)
{
if (disp_drv != NULL && lcm_drv != NULL){
return TRUE;
}
disp_drv_init_ctrl_if();
switch(lcm_params->type)
{
case LCM_TYPE_DBI : disp_drv = DISP_GetDriverDBI(); break;
case LCM_TYPE_DPI : disp_drv = DISP_GetDriverDPI(); break;
case LCM_TYPE_DSI : disp_drv = DISP_GetDriverDSI(); break;
default : ASSERT(0);
}
if (!disp_drv) return FALSE;
return TRUE;
}
原来只有在选中类型的时候才会初始化成DSI接口,当我们用GPIO的时候肯定就不用DSI了,这样就能理解了。
在来看以下DSI的命令传输:
data_array[0]=0x00103902;
data_array[1]=0x032000B2;
data_array[2]=0xFF007003;
data_array[3]=0x00000000;
data_array[4]=0x01000303;
dsi_set_cmdq(&data_array, 5, 1);
data_array[0] 为packet head 定义为:第一个字节为 WC1,第二个字节WC0,第三个字节DT (命令类型)第四个字节为控制类型。
data_array[1],data_array[2],data_array[3],data_array[4],为初始化的相应数据。