打印
[屏驱相关]

【SWDM-QFP100-34SVEA3测评】+LVGL驱屏检测

[复制链接]
1173|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
       这段时间参考华芯微特官方提供的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刷图的流畅性。呈现的效果如下所示:

SWDM-QFP100-34SVEA3的lvgl驱屏测试

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

        分享总结:①、参考华芯微特的SDK资料包,工程示例是非常丰富,但必须注意使用的开发板型号与屏的对应关系。
                        ②、同一款MCU的参考例程,发现使用的串口波特率不统一,一下是57600,一下是115200,不知道为啥要做这样的差异化。
                        ③、使用TF卡加载音视频、图片等必备资源时,没有相关文件提示需要将内存卡格式化FAT32格式,其它格式初始化会失败。
                        ④、读取TF内存卡文件时只能找到第1个视频文件,从第2个文件开始,会提示找不到指定的文件名,而该文件都已在内存卡的根目录。

使用特权

评论回复

相关帖子

沙发
weifeng90| | 2023-4-18 07:44 | 只看该作者
LVGL的显示效果越来越不错了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

1023

帖子

7

粉丝