WorkMan 发表于 2022-10-18 12:33:25

MCU内RAM100~200K,无外置RAM,能否用SD卡装载全字库?

如题,也没有外置FLASH,请教有啥办法可实现全字库用在LVGL?

阿里兄 发表于 2022-10-18 12:42:27

SD卡也可以,实时读取字库文件了

WorkMan 发表于 2022-10-18 12:55:47

本帖最后由 WorkMan 于 2022-10-18 13:04 编辑

阿里兄 发表于 2022-10-18 12:42
SD卡也可以,实时读取字库文件了
版主,有没有例程哈,或请告知一个方案
其实不太清楚LVGL的字体显示时的流程!比如标签是在创建时就将要显示的文字的点阵数据装到RAM里,需要显示更新时直接到RAM里读取,还是每次显示更新时都要再去字体文件中读取数据?

阿里兄 发表于 2022-10-18 13:38:13

WorkMan 发表于 2022-10-18 12:55
版主,有没有例程哈,或请告知一个方案
其实不太清楚LVGL的字体显示时的流程!比如标签是在创建时就将要显 ...

用我的工具生成BIN格式字体,实现里面的读函数就行

WorkMan 发表于 2022-10-18 13:56:54

阿里兄 发表于 2022-10-18 13:38
用我的工具生成BIN格式字体,实现里面的读函数就行

我先试试,谢谢版主!

WorkMan 发表于 2022-11-26 17:45:42

阿里兄 发表于 2022-10-18 13:38
用我的工具生成BIN格式字体,实现里面的读函数就行

版主,用SD卡装载常用汉字字库,字体大小16,label标签更新4个汉字,用时约1.5秒,这个速度是否正常?
GD32F450,主频200MHz,好像不应该那么慢的!用debug跟踪了一下,多次进入读取字库文件,还都是很小size的读取数据,4~6字节,估计是在获取字体的一些信息。

flyfire 发表于 2022-11-27 11:39:04

我用的模拟器,通过文件系统加载点阵字体,几个中文字符,打开文件几百次,是否正常?另外中文标点符号也无法找到,会是什么原因?

static uint8_t __g_font_buf;//如bin文件存在SPI FLASH可使用此buff

static uint8_t* __user_font_getdata(int offset, int size) {
    //如字模保存在SPI FLASH, SPIFLASH_Read(__g_font_buf,offset,size);
    //如字模已加载到SDRAM,直接返回偏移地址即可如:return (uint8_t*)(sdram_fontddr+offset);

    ///todo you code
    lv_fs_file_t file;
    lv_fs_res_t result;
    static uint32_t icount = 0;

    result = lv_fs_open(&file, "/Font/Bin/my_hei16.bin", LV_FS_MODE_RD);
    printf("lv_fs_open res:%d,count:%d\r\n", result,++icount);
    if (result != LV_FS_RES_OK)
      return NULL;

    lv_fs_seek(&file, offset, LV_FS_SEEK_CUR);
    uint32_t len;
    lv_fs_read(&file, __g_font_buf, size, &len);
    lv_fs_close(&file);

    return __g_font_buf;
}

WorkMan 发表于 2022-11-29 10:17:36

本帖最后由 WorkMan 于 2022-11-29 10:19 编辑

flyfire 发表于 2022-11-27 11:39
我用的模拟器,通过文件系统加载点阵字体,几个中文字符,打开文件几百次,是否正常?另外中文标点符号也无 ...
同样问题啊,读取文件多次,估计是LVGL的读取点阵信息导致吧。
中文标点的问题可能是使用阿里字体工具生成字库数据时需要把中文标点符号加入到左边那输入文字的位置,那样才能生成标点的数据到字库文件中。

flyfire 发表于 2022-12-8 16:30:58

模拟器里还不觉得,用stm32f103+sd卡,从文件读取字库,速度感人。最起码用spi flash存储字库吧。据说想要更快的速度,需要加字库或图片等资源,加载到扩展内存。
页: [1]
查看完整版本: MCU内RAM100~200K,无外置RAM,能否用SD卡装载全字库?