本篇为大家带来的是LVGL的应用,匠芯创D133CBS开发板的MCU性能非常强悍,从图1就可以看出,一颗MCU其实可以说是MPU也不过分,其存储配置就非常适合做屏幕应用,并且显示方面支持720P/60FPS的刷新速率,支持2D加速等等非常优秀的功能。因此,把玩一下屏幕是必要的。
图1 匠芯创D133CBS芯片参数说明
LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,专为资源受限的嵌入式系统设计。它提供了丰富的图形用户界面(GUI)组件,如按钮、标签、图表、滑块等,支持触摸屏和鼠标输入,并且具有高度的可定制性。现在新版本的lvgl制作的UI更加炫酷,因此,现在使用LVGL的用户越来越多。
匠芯创支持的屏幕三方应用有很多,比如QT,LVGL,在LVGL方面还支持使用LVGL官方的SquareLine Studio可视化辅助软件,NXP的GUI Guider等等,所以在使用LVGL方面具有一定的便利性。
本次使用LVGL的V8.3.5移植到匠芯创D133CBS开发板之中。同时使用NXP的GUI Guider来辅助配置GUI界面。
图2 NXP GUI Guider的使用
在创建完成之后,就可以设计自己所需要的界面了,本次我设计的是智慧食堂方面的支付界面。
图3 设计的GUI界面
图4 GUI Guider的仿真界面
有人可能就会问了,你这么大的屏幕为什么设计这么小的界面,其实我心里也不想,哈哈,因为我之前按照1024*600的尺寸设计界面,虽然设计的很漂亮,但是发现编译提示我SRAM_S0溢出的错误,虽然看到坛友说可以通过将存储方面配置成SPRAM上即可,但是我没会配置,哈哈,所以就索性为了避免SRAM_S0溢出的风险,就将画布尺寸缩小到了320*240的大小。图4就是使用GUI Guider仿真的效果图,仿真的时候也会生成C工程文件,这里我们只需要三个文件夹就好。
图5 移植所需的文件
图6 me配置的界面,使能所需的UI
在配置好之后,就可以正常编译了,如果UI的部分会占用很大空间的话,大部分会报错SRAM_S0溢出问题。我是采用缩小UI画布的方式解决的,当然,我这种不算是解决,算是临时测试,真正想要解决的还是要将存储部分配置好
图7 SRAM_S0溢出问题
至此,如果没有遇到SRAM_S0溢出问题,那么大概率是能编译通过的,编译通过之后就可以将生成的固件烧录到开发板之中了。
图8 LVGL效果图