LVGL–用外部FLASH存储字库并显示
应用场景
由于使用的芯片内部FLASH空间有限,如果仅使用英文字库并用不了多少空间,但是项目需要支持中英文字库,中文字库添加2w字左右,10px大小就要1M多了,内部空间根本不够用,所以考虑用外部FLASH存储字库数据,使用的GUi是LVGL。
实现过程
1、字体取模
使用的是一款开源免费的软件–>LvglFontTool,如下图所示:
界面右下角 版本选择 用于6.版本以上
类型:XBF,外部bin文件 (XBF是软件作者自定义的文字格式,适用于LVGL字体)
抗锯齿:4 按需所选 抗锯齿越大 显示效果越好 占用的空间也越大
输入好字体名字和包含的头文件
记得输入想要使用的文字
点击开始转换 即可选择保存路径 会直接存文件 生成相应的bin文件和.c文件
2、将bin文件烧录到FLASH中
我这里用的是硕飞的烧录器,用软件和专用的烧录器,把bin文件的数据烧录进去,(如果是多字库的话,要记好地址偏移)
3、将生成的C文件放到工程项目中
1、打开相应字体的C文件
a.打开数组
b.切换相应的SPI读取函数
c. 如有多字库使用,需要加上地址偏移 如下图所示:
片段代码:
LV_FONT_DECLARE(Font_10px); //正常声明字体lv_obj_t *Down_label_2 = lv_label_create(Net); //创建第二个标签lv_obj_set_style_text_color(Down_label_2, lv_color_hex(0x111112), 0); //设置标签字体颜色lv_obj_set_style_text_font(Down_label_2, &Font_10px, 0); //设置标签字体...........
3、结语
看着不难,其实一点都不简单,踩了很多坑,有问题就欢迎评论留言。