MWIN的移植具体步骤可以参考《emWin5中文手册》配置章节,里面有比较详细的步骤。
移植有两种方法,一种是EMWIN提供了驱动接口,用户只需要提供读写显示RAM寄存器的函数即可,主要的函数是:
void LCD_X_Config(void) {
unsigned short lcd_width,lcd_height;
unsigned char dir_flag;
GUI_DEVICE * pDevice;
CONFIG_FLEXCOLOR Config = {0};
GUI_PORT_API PortAPI = {0};
dir_flag = 1; //横竖屏幕切换标志
if(dir_flag == 0)
{
lcd_width = XSIZE_PHYS;
lcd_height = YSIZE_PHYS;
}
else
{
lcd_width = YSIZE_PHYS;
lcd_height = XSIZE_PHYS;
}
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_M565, 0, 0); //GUIDRV_FLEXCOLOR表示使用标准接口
GUIDRV_FlexColor_SetReadFunc66720_B16(pDevice, GUIDRV_FLEXCOLOR_READ_FUNC_II); //使用EMWIN提供的SS1963驱动
LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS);
if(dir_flag==1)
{
GUI_TOUCH_SetOrientation(GUI_SWAP_XY|GUI_MIRROR_X);
}
GUI_TOUCH_Calibrate(GUI_COORD_X, 0, lcd_width, TOUCH_LEFT, TOUCH_RIGHT);
GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, lcd_height, TOUCH_TOP, TOUCH_BOTTOM);
//Config.FirstCOM = 0; //modify by fire
//Config.FirstSEG = 0; //modify by fire
//Config.NumDummyReads = 2; //²»¼ÓÕâÒ»Ò»¾ä£¬¹â±êÏÔʾ»áÓÐÍÏÓ°ÎÊÌâ
if(dir_flag==1)
{
Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_X;
}
GUIDRV_FlexColor_Config(pDevice, &Config);
//用户需要提供的4个函数
PortAPI.pfWrite16_A0 = LCD_WR_REG;
PortAPI.pfWrite16_A1 = LCD_WR_Data;
PortAPI.pfWriteM16_A1 = LCD_WR_M_Data;
PortAPI.pfReadM16_A1 = LCD_RD_M_Data;
GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66720, GUIDRV_FLEXCOLOR_M16C0B16);
}
可以看到这个函数主要设置,屏幕尺寸,根据用户LCD型号选择对应的驱动,提供4个最基础的读写寄存器以及读写数据的函数。
第二种方法是自己写驱动,主要 区别是:
GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
其中:
#define DISPLAY_DRIVER &GUIDRV_Template_API
const GUI_DEVICE_API GUIDRV_Template_API = {
DEVICE_CLASS_DRIVER,
_DrawBitmap,
_DrawHLine,
_DrawVLine,
_FillRect,
_GetPixelIndex,
_SetPixelIndex,
_XorPixel,
_SetOrg,
_GetDevFunc,
_GetDevProp,
_GetDevData,
_GetRect,
};
由用户自己提供了一些 _DrawBitmap,。。。。_GetPixelIndex,_SetPixelIndex,_XorPixel函数.
据网络资料上说,只提供打点函数也可!!
这种移植以安富莱为代表,有一点要注意,安富莱的移植,把触摸部分也移植了,由用户自己提GUI_PID_StoreState(&State); 函数的State数据,搞得太复杂了,有点不让用户自己消化的意思,好让用户绑定到他的平台中。
|