硬汉嵌入式论坛

 找回密码
 立即注册
查看: 426|回复: 9
收起左侧

[LVGL] 有谁用LVGL搞过摄像头图像实时动态显示?

[复制链接]

4

主题

7

回帖

19

积分

新手上路

积分
19
发表于 2024-3-24 20:54:39 | 显示全部楼层 |阅读模式
用MLX90640热成像传感器做了一个热成像仪,用了GUI GUIDER做了个界面,一个主界面,另一个界面专门用来实时显示MLX90640传感器传来的图像。

现在就是这个实时显示怎么都不行,图像是出来了,但是非常卡,CPU占用一直100%,裸机跑很流畅,一上LVGL就非常卡顿!折腾了好久解决不了。

我用的是AT32F435 MCU,M4核,主频288M, 配置也不差。我用的是图片控件来做图像显示,就是用一个定时器定时刷新图片源,但是CPU一直100%,,,无法解决

我这个显示分两步,一个是先计算MLX90640过来的数据,把数据处理成RGB565数据,然后把RGB565丢给LVGL的图片控件显示,缓存开到和图片一样大,图片大小是320*240,16位。

从MLX90640到RGB565这一步涉及大量的父浮点运算,不知道是不是这一步影响了速度(但用的是MCU自带的硬件浮点运算单元)。。。。。

有谁有这方面经验能分享一下?谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-3-25 07:55:58 | 显示全部楼层
这个在我弄的emWin和GUIX教程里面都做了案例,

emWin是采用存储设备方式绘制的,GUIX是采用画布方式绘制的,大同小异,这样可以速度最大化,LVGL还没测试过

https://www.armbbs.cn/forum.php?mod=viewthread&tid=98429
回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-3-26 11:13:05 | 显示全部楼层
eric2013 发表于 2024-3-25 07:55
这个在我弄的emWin和GUIX教程里面都做了案例,

emWin是采用存储设备方式绘制的,GUIX是采用画布方式绘制 ...

感谢硬汉哥回复!

我看了下你发的衔接,使用的是STM32H7这种高端MCU做的,我想问下用资源差一些的MCU是否可以做?

我的MCU是AT32F435,国产M4核,288M主频,FLASH 1M,SRAM 512K,我自己通过QSPI XIP方式外扩了一个PSARM,速度84M。

我的MCU接口是MCU8080 16bit,RGB565显示,4寸LCD, 分辨率480x320, LCD控制器是内置的ILI9488, 摄像头图像显示大小为352x264, 摄像头显示缓冲区开在这个外扩的84M PSRAM里。

我的摄像头不是ov2640这种,是红外摄像头,这个摄像头采集的是温度数据,通过I2C接口把温度数据传给MCU,MCU接收到数据后要把温度数据转为352x264大小的RGB565数据显示,温度数据转为RGB565需要经过大量的浮点运算。

我的MCU没有LTDC,也没有DMA2D加速,请硬汉哥帮我看下,我的这种配置是否可以跑的起来摄像头图像?

感谢!




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-3-26 11:17:13 | 显示全部楼层
coolaimcu 发表于 2024-3-26 11:13
感谢硬汉哥回复!

我看了下你发的衔接,使用的是STM32H7这种高端MCU做的,我想问下用资源差一些的MCU ...

完全没问题。我们早期F407是168M还能刷新

回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-3-26 11:45:04 | 显示全部楼层
eric2013 发表于 2024-3-26 11:17
完全没问题。我们早期F407是168M还能刷新

明白了,感谢!
回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2024-3-26 13:40:59 | 显示全部楼层
实时显示,每秒刷新多少帧?
回复

使用道具 举报

19

主题

234

回帖

291

积分

高级会员

积分
291
发表于 2024-3-26 13:55:29 | 显示全部楼层
AT32F435 RAM 配置到512K,零等待Flash大小貌似只有128K了。把LVGL塞进去之后是不是大量代码都在非零等待区运行导致的。
回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-3-26 14:22:19 | 显示全部楼层
tovinz 发表于 2024-3-26 13:55
AT32F435 RAM 配置到512K,零等待Flash大小貌似只有128K了。把LVGL塞进去之后是不是大量代码都在非零等待区 ...

是有可能的,LVGL的内核文件我放在内部flash,应该也超过128K 了,我在外部QSPI XIP外挂了一颗Nor FLASH, UI 素材放在这个flash里面。这种基本是没办法解决的,只能这么用了。我现在先调调看,可能LVGL的刷图机制我也没搞清楚,我的代码写的肯定是有问题的
回复

使用道具 举报

4

主题

7

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-3-26 15:09:42 | 显示全部楼层
ghslfgkkl88 发表于 2024-3-26 13:40
实时显示,每秒刷新多少帧?

裸机驱动,妥妥的50帧以上,上LVGL,我还没调出来
回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2024-3-26 15:42:15 | 显示全部楼层
不少人反应LVGL慢,然道真的比emwin慢很多?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 05:19 , Processed in 0.331558 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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