查看: 581|回复: 1

[GD32F450方案分享] GD32F450移植emwin

[复制链接]

24

主题

0

好友

660

积分

举人

Rank: 4

  • TA的每日心情
    郁闷
    2017-7-28 13:11
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-6-15 21:07:30 |显示全部楼层
    本帖最后由 sumengqi 于 2017-6-20 00:56 编辑

    老早就收到开发板,无奈最近一直很忙,终于抽出时间发帖,分享一下我移植emwin的过程。
    ①:调屏,要emwin首先要把TFT液晶屏调通,我用的是spi接口的显示器,分辨率320*240.屏幕调试很简单,商家给的驱屏程序移植过来改一下接口就能用。
    1. 底层驱动:
    2. void LCD_WR_DATA8( char da ) /* 发送数据-8位参数 */
    3. {
    4.         while ( RESET == spi_i2s_flag_get( SPI0, SPI_FLAG_TBE ) );
    5.         LCD_DC_H;
    6.         SPI_DATA( SPI0 ) = (uint32_t) da;
    7. }


    8. void LCD_WR_DATA( int da )
    9. {
    10.         while ( RESET == spi_i2s_flag_get( SPI0, SPI_FLAG_TBE ) );
    11.         LCD_DC_H;
    12.         SPI_DATA( SPI0 ) = (uint32_t) (da >> 8);
    13.         while ( RESET == spi_i2s_flag_get( SPI0, SPI_FLAG_TBE ) );
    14.         SPI_DATA( SPI0 ) = (uint32_t) da;
    15. }


    16. void LCD_WR_REG( char da )
    17. {
    18.         while ( RESET == spi_i2s_flag_get( SPI0, SPI_FLAG_TBE ) );
    19.         LCD_DC_L;
    20.         SPI_DATA( SPI0 ) = (uint32_t) da;
    21. }


    22. void LCD_WR_REG_DATA( int reg, int da )
    23. {
    24.         LCD_WR_REG( reg );
    25.         LCD_WR_DATA( da );
    26. }
    复制代码
    屏幕测试:显示"Hello World",附加垂直滚动效果
    视频:

    代码很简单:
    1. while(1)
    2.         {
    3.                 LCD_ShowString(0,i++,"Hello World!");
    4.                 delay_ms(10);
    5.         }
    复制代码
    屏幕正常点亮之后就要进行第二步,添加emwin到工程。添加的文件不多,如下图所示:

    emwin库文件

    emwin库文件

    添加库文件之后,要配置emwin与屏幕驱动的接口。代码如下:
    1. static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) {
    2.     //
    3.     // Convert logical into physical coordinates (Dep. on LCDConf.h)
    4.     //
    5.     #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
    6.       int xPhys, yPhys;

    7.       xPhys = LOG2PHYS_X(x, y);
    8.       yPhys = LOG2PHYS_Y(x, y);
    9.     #else
    10.       #define xPhys x
    11.       #define yPhys y
    12.     #endif
    13.     GUI_USE_PARA(pDevice);
    14.     GUI_USE_PARA(x);
    15.     GUI_USE_PARA(y);
    16.     GUI_USE_PARA(PixelIndex);
    17.     {
    18.                         POINT_COLOR = PixelIndex;
    19.                         LCD_DrawPoint(x,y);
    20.     }
    21.     #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
    22.       #undef xPhys
    23.       #undef yPhys
    24.     #endif
    25. }
    复制代码
    添加读点和写点函数emwin就能正常工作,但是我这个屏幕商家没提供读点函数,自己也不想捣鼓了,添加写点函数就能满足emwin大部分操作,我就只添加了LCD_DrawPoint(x,y);。
    下一步还得进行emwin的相关配置,比如屏幕分辨率,色彩,显存大小等。
    1. #define XSIZE_PHYS  240 // To be adapted to x-screen size
    2. #define YSIZE_PHYS  320 // To be adapted to y-screen size
    3. void LCD_X_Config(void) {
    4.   GUI_DEVICE * pDevice;
    5. //  CONFIG_FLEXCOLOR Config = {0};
    6. //  GUI_PORT_API PortAPI = {0};
    7.   //
    8.   // Set display driver and color conversion
    9.   //
    10.   pDevice = GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0);
    11.   //
    12.   // Display driver configuration, required for Lin-driver
    13.   //
    14.   LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
    15.   LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);
    16.   //
    17.   // Orientation
    18.   //
    19. }
    复制代码
    我给了64KB的内存空间供emwin使用。
    1. #define GUI_NUMBYTES  64*1024
    2. #define GUI_BLOCKSIZE 0X80  //块大小
    复制代码
    现在可以执行emwin初始化以及它自带的Demo了。跑起来看看效果:
    1. int main()
    2. {        
    3.         Lcd_Init();
    4.         delay_ms(10);
    5.         GUI_Init();
    6.         GUI_Clear();
    7.         GUIDEMO_Main();
    8. }
    复制代码

    demo

    demo


    demo

    demo

    这个当时没有拍视频,demo的样子大家都知道。

    好了,到此为止GD32F450移植emwin就完成了,欢迎大家拍砖。

    分享我的预期成果:基于GD32F450以及ESP8266的网络信息发布屏
    回复

    使用道具 举报

    24

    主题

    0

    好友

    660

    积分

    举人

    Rank: 4

  • TA的每日心情
    郁闷
    2017-7-28 13:11
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-6-20 00:56:30 |显示全部楼层
    这论坛好冷清,发帖都没人回。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /5 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-8-21 03:14 , Processed in 0.134770 second(s), 12 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部