[屏驱相关]【SWDM-QFP100-34SVEA3测评】+LVGL驱屏检测

   这段时间参考华芯微特官方提供的SDK资源包,链接:SWM341资源(百度云盘分享),密码:byv2,验证了部分基础外设的工程示例。此次参考官方提供的LVGL工程示例,先将“基于LVGL纯净版”目录下的“SWM341_lvgl8.3.3_221221.zip”拷贝到一个没有中文路径的纯英文文件夹下,否则编译完成后,不能顺利“Go To Definition of 'xxx'”哦,由于前期环境已经搭建好,使用JLink V9直接下载到SWDM-QFP100-34SVEA3开发板中,结果跟网友遇到同样的问题,静态不能显示中英文字符。修改工程中“lv_conf.h”源文件中的指定存储宏定义,然而并不能解决字符显示的问题,显然这也不是分配的存储空间不够。

/*Required alignment size for buffers*/

#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 4



/*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default).

* E.g. __attribute__((aligned(4)))*/

#define LV_ATTRIBUTE_MEM_ALIGN __attribute__((aligned(LV_ATTRIBUTE_MEM_ALIGN_SIZE)))



/*Attribute to mark large constant arrays for example font's bitmaps*/

#define LV_ATTRIBUTE_LARGE_CONST __attribute__((section(".SDRAM2")))



/*Compiler prefix for a big array declaration in RAM*/

#define LV_ATTRIBUTE_LARGE_RAM_ARRAY __attribute__((section(".SDRAM1")))

         由于LVGL显示需要用到SDRAM,使用分散加载文件,划分SDRAM1与SDRAM2的执行域,用户可根据需求自行更改存储空间大小,当然空间不能超过SDRAM的实际大小。使用sct分散加载,Keil中设置如下:


          分散加载配置文件内容如下:

; *************************************************************

; *** Scatter-Loading Description File generated by uVision ***

; *************************************************************



LR_IROM1 0x00000000 0x00080000  {    ; load region size_region

  ER_IROM1 0x00000000 0x00080000  {  ; load address = execution address

   *.o (RESET, +First)

   *(InRoot$Sections)

   .ANY (+RO)

   .ANY (+XO)

  }

  RW_IRAM1 0x20000000 0x00010000  {  ; RW data

   .ANY (+RW +ZI)

  }

  ER_SDRAM1 0x80000000 0x00200000  {             ; execution address

    *(.SDRAM1)

  }

}



LR_SPIFLASH 0x70000000 0x01000000  {      ; load region size_region

  ER_SDRAM2 0x80200000 0x00600000  {             ; execution address

    *(.SDRAM2)

  }

}

         根据上述配置可知,SDRAM1空间分配了2MB,SDRAM2空间分配了6MB,这是非常合理的。刷出来的静态图样举例如下:

 


      阅读main.c源代码可知,本例程提供了三个参考demo,可在“lv_conf.h”中对相应的宏定义进行关闭、使能,即可检测动态刷图的呈现效果。

/* main.c中的分支接口 */

#if LV_USE_DEMO_WIDGETS

    lv_demo_widgets();

#elif LV_USE_DEMO_BENCHMARK

    lv_demo_benchmark();

#elif LV_USE_DEMO_MUSIC

    lv_demo_music();

#endif

/* lv_conf.h中的宏定义设定demo工程接口 */

/*===================

 * DEMO USAGE

 ====================*/



/*Show some widget. It might be required to increase `LV_MEM_SIZE` */

#define LV_USE_DEMO_WIDGETS 0

#if LV_USE_DEMO_WIDGETS

#define LV_DEMO_WIDGETS_SLIDESHOW 0

#endif



/*Demonstrate the usage of encoder and keyboard*/

#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0



/*Benchmark your system*/

#define LV_USE_DEMO_BENCHMARK 1

#if LV_USE_DEMO_BENCHMARK

/*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/

#define LV_DEMO_BENCHMARK_RGB565A8 0

#endif



/*Stress test for LVGL*/

#define LV_USE_DEMO_STRESS 0



/*Music player demo*/

#define LV_USE_DEMO_MUSIC 0

#if LV_USE_DEMO_MUSIC

    #define LV_DEMO_MUSIC_SQUARE    0

    #define LV_DEMO_MUSIC_LANDSCAPE 0

    #define LV_DEMO_MUSIC_ROUND     0

    #define LV_DEMO_MUSIC_LARGE     0

    #define LV_DEMO_MUSIC_AUTO_PLAY 0

#endif

        再修改成单个图样显示,这样更能清楚得看到SWM34SVET6刷图的流畅性。呈现的效果如下所示:

         当宏定义为“LV_USE_DEMO_MUSIC”工程时,编译竟然提示有4处error,都是关于“LV_FONT_MONTSERRAT_12”,“LV_FONT_MONTSERRAT_16”没有定义,更改相应的宏又提示内存空间不够了


        分享总结:①、参考华芯微特的SDK资料包,工程示例是非常丰富,但必须注意使用的开发板型号与屏的对应关系。
                        ②、同一款MCU的参考例程,发现使用的串口波特率不统一,一下是57600,一下是115200,不知道为啥要做这样的差异化。
                        ③、使用TF卡加载音视频、图片等必备资源时,没有相关文件提示需要将内存卡格式化FAT32格式,其它格式初始化会失败。
                        ④、读取TF内存卡文件时只能找到第1个视频文件,从第2个文件开始,会提示找不到指定的文件名,而该文件都已在内存卡的根目录。
---------------------
作者:yinwuqing110
链接:https://bbs.21ic.com/icview-3296814-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值