willlijie 发表于 2014-10-29 16:51:02

飞思卡尔kinetis 低功耗系列KL16Z 移植emwin到12864

本帖最后由 willlijie 于 2014-10-29 17:05 编辑

    因为功耗问题选择12864(UC1701驱动,SPI接口),成功移植emwin.可以任意位置显示英文。自己摸索比较费劲,在这里共享下。控件显示部分有问题,不过这个屏也用不到,呵呵。
LCDConf.c中关键配置如下:

//
// Physical display size
//
#define XSIZE_PHYS 128
#define YSIZE_PHYS 64

//
// Color conversion
//
#define COLOR_CONVERSION GUICC_1// 黑白色

//
// Display driver
//
#define DISPLAY_DRIVERGUIDRV_SPAGE_1C1
//GUIDRV_SPAGE_1C0 //1bpp not with cache // GUIDRV_LIN_32GUIDRV_SPage
//GUIDRV_SPAGE_1C1 //1bpp with cache

//
// Buffers / VScreens
//
#define NUM_BUFFERS1 //1 Number of multiple buffers to be used
#define NUM_VSCREENS 1 //1 Number of virtual screens to be used


void LCD_X_Config(void) {
       
                CONFIG_SPAGE Config = {0};
                GUI_DEVICE * pDevice;
                GUI_PORT_API PortAPI = {0};
//
// At first initialize use of multiple buffers on demand
//
#if (NUM_BUFFERS > 1)
    GUI_MULTIBUF_Config(NUM_BUFFERS);
#endif
//
// Set display driver and color conversion for 1st layer
//
pDevice = GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);
//
// Display driver configuration, required for Lin-driver
//
if (LCD_GetSwapXY()) {
    LCD_SetSizeEx (0, YSIZE_PHYS, XSIZE_PHYS);
    LCD_SetVSizeEx(0, YSIZE_PHYS * NUM_VSCREENS, XSIZE_PHYS);
} else {
    LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
    LCD_SetVSizeEx(0, XSIZE_PHYS, YSIZE_PHYS * NUM_VSCREENS);
}
LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR);
////////////////////////////////////////////////////////////////////////////////////
                //
                // Configure hardware routines
                //
        #ifndef WIN32
                PortAPI.pfWrite8_A0    = HalLcd_HW_Control;//_Write8_A0;//Write a byte to LCD controller with A-line low
                PortAPI.pfWrite8_A1 = HalLcd_HW_Write;//_Write8_A1;//Write a byte to LCD controller with A-line high
                PortAPI.pfWriteM8_A1 = HalLcd_HW_Write_Multi;//_WriteM8_A1;//Write multi byte to LCD controller with A-line high
//                PortAPI.pfReadM8_A1 = HalLcd_read;//LCD_X_8080_8_ReadM01 Read multi byte to LCD controller with A-line high
                GUIDRV_SPage_SetBus8(pDevice, &PortAPI);//bug??
    #endif
                //
                // Controller configuration
                //
//                GUIDRV_SPage_SetS1D15(pDevice, Controller);//   Controller= 5.20µ±Ç°°æ¿âÒѾ­ÒÆÖ²uc1611,µ«ÊÇδÒÆÖ²UC1701
      GUIDRV_SPage_Set1510(pDevice);//uc1701 controllers
//
// Create and configure (double) cache driver, ...
//
//pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_DCACHE, GUICC_1, 0, 0);
////
//// ... set size, ...
////
//LCD_SetSizeEx (0, XSIZE_PHYS, YSIZE_PHYS);
//LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
//
// ...set color depth, ...
//
//GUIDRV_DCache_SetMode1bpp(pDevice);
//Then the real driver should be added for doing the drawing operations:
//
// ... and add real driver.
//
//GUIDRV_DCache_AddDriver(pDevice, pDriver);

/////////////////////////////////////////////////////////////               
        #if defined(PALETTE)
    LCD_SetLUTEx(0, PALETTE);
#endif
}

willlijie 发表于 2014-10-29 17:05:44

四线spi不支持读操作

fengyunyu 发表于 2014-10-30 09:16:09

emwin移植到12864屏上,SPI接口,学习。

hjf2002_hk 发表于 2014-10-30 13:54:13

学习emwin。

fengyunyu 发表于 2014-12-13 14:38:53

“控件显示部分有问题”,是指的什么问题?

qs6361036 发表于 2014-12-13 15:26:00

把emwin移植到12864屏上 ,这个厉害 !

hmsfeng 发表于 2015-1-22 11:40:39

emwin看来比较用的地方挺多的。
页: [1]
查看完整版本: 飞思卡尔kinetis 低功耗系列KL16Z 移植emwin到12864