里飞网

 找回密码
 立即注册
查看: 5021|回复: 4
打印 上一主题 下一主题

LVGL如何将图片bin文件直接烧录到SPIFlash,并直接读出使用

[复制链接]

1

主题

4

帖子

31

积分

新手上路

Rank: 1

积分
31
QQ
跳转到指定楼层
楼主
发表于 2023-12-22 14:52:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问注册一个lv_img_dsc_t的图片变量以后应该如何填充其内容?我有好几个图片文件,有没有办法直接做成数组的形式,难搞
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
沙发
发表于 2023-12-22 23:47:52 | 只看该作者
http://dz.lfly.xyz/forum.php?mod=viewthread&tid=26&extra=page%3D2

参考这里,BIN图片的使用方法。
回复

使用道具 举报

1

主题

4

帖子

31

积分

新手上路

Rank: 1

积分
31
QQ
板凳
 楼主| 发表于 2023-12-24 22:23:54 | 只看该作者
阿里兄 发表于 2023-12-22 23:47
http://dz.lfly.xyz/forum.php?mod=viewthread&tid=26&extra=page%3D2

参考这里,BIN图片的使用方法。

谢谢阿里哥的回复,祝阿里哥生活顺意身体健康。
这个链接还是用工具转换成数组了啊,怎么实现从Flash里读出来直接转换成LVGL图片格式并使用呢?
回复

使用道具 举报

45

主题

311

帖子

2814

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2814
地板
发表于 2023-12-25 08:47:10 | 只看该作者
KarryingLiu 发表于 2023-12-24 22:23
谢谢阿里哥的回复,祝阿里哥生活顺意身体健康。
这个链接还是用工具转换成数组了啊,怎么实现从Flash里读 ...

电脑模拟器只能转数组测试,板子上就要从FLASH读到SDRAM,读到内存后,也就是数组差不多性质了,使用方法一样。
回复

使用道具 举报

1

主题

4

帖子

31

积分

新手上路

Rank: 1

积分
31
QQ
5#
 楼主| 发表于 2023-12-25 10:05:44 | 只看该作者
本帖最后由 KarryingLiu 于 2023-12-25 10:24 编辑
阿里兄 发表于 2023-12-25 08:47
电脑模拟器只能转数组测试,板子上就要从FLASH读到SDRAM,读到内存后,也就是数组差不多性质了,使用方法 ...

还是不明白:
1、SPI里的bin文件读到SDRAM不还是bin文件吗?内存读取的话也是直接读取bin文吧?
2、转化成数组的话是不是需要找一个bin2c.c文件呢?转出来的数组又存到哪里呢?

我这里有一串代码,我用它来读取工具“True color with alpha Binary RGB888” 输出的bin格式文件,但是读取不出来
  1. void loadBitmap(lv_img_dsc_t *image, uint32_t start_addr, uint32_t file_size)
  2. {
  3.     uint8_t *pbuf;        //读取数据缓冲区
  4.     uint8_t *pbmp;
  5.     uint32_t header;
  6.     int secTime = file_size/4096;
  7.     int secOff = file_size%4096;
  8.     int i;
  9.     dbg_printf(" secTime = %d, secOff = %d\r\n", secTime, secOff);

  10.     pbuf = lv_mem_alloc(file_size);

  11.     for (i=0; i<secTime; i++) {
  12.         SPI_Flash_Read(&pbuf[i*4096], start_addr+i*4096, 4096);
  13.     }
  14.     if (secOff>0) {
  15.         SPI_Flash_Read(&pbuf[secTime*4096], start_addr+secTime*4096, secOff);
  16.     }
  17.     /* 获取图片数据流 */
  18.     pbmp = (uint8_t *)pbuf + 4;
  19.     /* 获取头 */
  20.     header = (uint32_t)pbuf[3] << 24;
  21.     header |= (uint32_t)pbuf[2] << 16;
  22.     header |= (uint32_t)pbuf[1] << 8;
  23.     header |= (uint32_t)pbuf[0];

  24.     image->header.cf = pbuf[0];
  25.     image->header.always_zero = 0;
  26.     image->header.w = (uint16_t)(header >> 10);
  27.     image->header.h = (uint16_t)(header >> 21);
  28.     image->data_size = file_size - 4;
  29.     image->data = pbmp;
  30. }
复制代码
出自薛定谔是我的CAT:LVGL加载外部flash上图片

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-11-23 08:02 , Processed in 0.067519 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表