新手上路
- 积分
- 27
- 金钱
- 27
- 注册时间
- 2016-8-29
- 在线时间
- 12 小时
|
20金钱
新人没钱啊啊啊啊
最近在尝试,用SSD1963移植STemWIN,买回来才发现网上对SSD1963一致差评。。。。也只能硬着头皮上了。
因为STemWIn自带SSD1963驱动,所以直接使用了自带驱动,而没有用自定义驱动(尝试了一下,自定义驱动速度很慢。两者差距不是一般的大。。)
[mw_shl_code=c,true]
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
//
// Set display driver and color conversion
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_M565, 0, 0);
LCD_SetSizeEx (0, t_lcddev.width , t_lcddev.height );
LCD_SetVSizeEx(0, t_lcddev.width , t_lcddev.height );
if(t_lcddev.id == 0x1963)
{
if (t_lcddev.dir == 0) //竖屏
{
GUI_TOUCH_SetOrientation(GUI_SWAP_XY | GUI_MIRROR_Y);
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 800 , 0, 799);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 480 , 0, 479);
} else //横屏
{
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 800 , 0, 799);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 480 , 0, 479);
}
}
else if (t_lcddev.id == 0x9341)
{
if (t_lcddev.dir == 0) //竖屏
{
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 240, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 320, TOUCH_AD_TOP, TOUCH_AD_BOTTOM);
} else //横屏
{
GUI_TOUCH_SetOrientation(/*GUI_SWAP_XY |*/ GUI_MIRROR_Y);
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 800 , TOUCH_AD_LEFT, TOUCH_AD_RIGHT);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 480 , TOUCH_AD_TOP, TOUCH_AD_BOTTOM);
}
}
// Orientation
//
Config.Orientation = 0 ;//GUI_SWAP_XY | GUI_MIRROR_Y;
GUIDRV_FlexColor_Config(pDevice, &Config);
//
// Set controller and operation mode
//
PortAPI.pfWrite16_A0 = LcdWriteReg;
PortAPI.pfWrite16_A1 = LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66720, GUIDRV_FLEXCOLOR_M16C0B16);
[/mw_shl_code]
上面的LcdWriteReg LcdWriteData LcdWriteDataMultiple LcdReadDataMultiple 几个函数直接调用原来的几个现成的寄存器操作的函数。
[mw_shl_code=applescript,true]void LcdWriteReg(u16 Data)
{
WriteCmd_LCD(Data);
}
void LcdWriteData(u16 Data)
{
WriteData_LCD(Data);
}
void LcdWriteDataMultiple(u16 * pData, int NumItems)
{
while (NumItems--)
{
LcdWriteData(*pData++);
}
}
void LcdReadDataMultiple(u16 * pData, int NumItems)
{
while (NumItems--)
{
*pData++ = ReadData_LCD();
}
}[/mw_shl_code]
结果发现光标拖影,实在是不爽,而且在第二个Demo处常常死掉(即使通过显示仍不正常)。不知道怎么解决。
(尝试了一下 ,用自定义的驱动就不会有这么严重的拖影,但还是会用一点。而且在第二个Demo处不会卡死。但问题是刷屏速度极慢。。)
这样就让人很不爽。
还有一个问题是,在按下时,光标会不断的像最左边或上最上边跳。或者跳到左上角。。。作为新人这些问题都不知道怎么办。。
求助大神!!@正点原子 @zuozhongkai @八度空间
|
|