硬汉嵌入式论坛

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

[emWin] SPI DMA用什么GUI?

[复制链接]

19

主题

310

回帖

367

积分

高级会员

积分
367
发表于 2020-5-30 21:01:04 | 显示全部楼层 |阅读模式
公司做产品可能用SPI接口屏幕,320x240分辨率,STM32L476芯片,
内存也不大,不过窗口有十几二十个左右吧,

有个喇叭用到的 DAC DMA
有个温度采集用的 ADC DMA

1、还能用 SPI+DMA刷屏吗?
2、可以上GUI吗?有推荐的GUI吗?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2020-5-31 10:02:43 | 显示全部楼层
1、SPI DMA可以。
2、GUI的话,看我这个消息,SPI DMA,55帧,240*240

H7-TOOL的Mini手持示波器效果展示
http://www.armbbs.cn/forum.php?m ... id=96066&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

16

主题

148

回帖

196

积分

初级会员

积分
196
发表于 2020-5-31 14:17:13 | 显示全部楼层
eric2013 发表于 2020-5-31 10:02
1、SPI DMA可以。
2、GUI的话,看我这个消息,SPI DMA,55帧,240*240

硬汉兄 这是自己写的嘛
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2020-6-1 10:23:22 | 显示全部楼层
dyhfaily 发表于 2020-5-31 14:17
硬汉兄 这是自己写的嘛

GUI是emWin双屏展示,一个虚拟屏1024*600,一个IPS屏240*240
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2020-6-1 11:48:29 | 显示全部楼层
eric2013 发表于 2020-5-31 10:02
1、SPI DMA可以。
2、GUI的话,看我这个消息,SPI DMA,55帧,240*240

我们这边GUI的内存可能只能给20k、30k
屏幕是SPI接口,分辨率320x240,

然后需要中断发送数据,刷GUI不能卡住界面以及其他的逻辑,
界面有图标、按钮、标题等等,下拉框可以考虑换成多个按钮

有方案吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2020-6-1 12:00:55 | 显示全部楼层
hpxzw_foxmai 发表于 2020-6-1 11:48
我们这边GUI的内存可能只能给20k、30k
屏幕是SPI接口,分辨率320x240,

裸机,当前H7-TOOL开源的就是裸机实现,效果也杠杠的。
回复

使用道具 举报

2

主题

39

回帖

45

积分

新手上路

积分
45
发表于 2020-6-1 12:22:02 | 显示全部楼层
hpxzw_foxmai 发表于 2020-6-1 11:48
我们这边GUI的内存可能只能给20k、30k
屏幕是SPI接口,分辨率320x240,

LittlevGL, 有现成。https://github.com/lvgl/lv_port_esp32
https://github.com/lvgl
回复

使用道具 举报

2

主题

39

回帖

45

积分

新手上路

积分
45
发表于 2020-6-1 13:36:29 | 显示全部楼层
KingChen 发表于 2020-6-1 12:22
LittlevGL, 有现成。https://github.com/lvgl/lv_port_esp32
https://github.com/lvgl。

STM32L476 的SPI master最大速度40MHZ,刷ILI9341SPI这样的屏应该也可以了!
回复

使用道具 举报

2

主题

34

回帖

40

积分

新手上路

积分
40
发表于 2020-6-1 15:12:05 | 显示全部楼层
可以看看GUILite
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2020-6-1 16:07:41 | 显示全部楼层
KingChen 发表于 2020-6-1 12:22
LittlevGL, 有现成。https://github.com/lvgl/lv_port_esp32
https://github.com/lvgl。

SPI刷GUI,是用中断的方式吗?
不会卡死
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2020-6-1 16:08:07 | 显示全部楼层
KingChen 发表于 2020-6-1 13:36
STM32L476 的SPI master最大速度40MHZ,刷ILI9341SPI这样的屏应该也可以了!

需要用中断的方式,不会卡住APP
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2020-6-1 16:12:56 | 显示全部楼层
wl_l 发表于 2020-6-1 15:12
可以看看GUILite

有SPI+DMA刷屏的例程吗?
回复

使用道具 举报

2

主题

39

回帖

45

积分

新手上路

积分
45
发表于 2020-6-1 17:38:45 | 显示全部楼层
hpxzw_foxmai 发表于 2020-6-1 16:08
需要用中断的方式,不会卡住APP

应该不会的。。。。
回复

使用道具 举报

13

主题

45

回帖

84

积分

初级会员

积分
84
发表于 2020-6-2 15:41:25 | 显示全部楼层
我不知道楼主为什么强调中断方式刷GUI这个点。

楼上有提到LVGL的,先跟你说说它运行跟刷图过程。

用户触发事件(按键或触摸或其他)-》GUI检测事件、做界面处理  -》将界面数据从缓冲区刷到显示屏

以上检测事件、界面处理、刷数据到显示屏是一条龙完成,可以放在main函数里面执行的。
这过程中假设你需要用到中断,会打断GUI,是没有问题的。前提是你不在中断里面触发GUI事件。

但是其他的逻辑,除非你上操作系统,否则一律等GUI一条龙完成才能执行。
比方说你想使用软件模拟I2C跟GUI处理同步执行,抱歉,请上系统。

emwin也是差不多的
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2020-6-2 16:57:32 | 显示全部楼层
a3748622 发表于 2020-6-2 15:41
我不知道楼主为什么强调中断方式刷GUI这个点。

楼上有提到LVGL的,先跟你说说它运行跟刷图过程。

这个是因为,之前有个项目,
直接用SPI刷新,刷一个区域,时间多的时候需要30~40ms,甚至更长时间,
这个时候会占用MCU资源,导致其他的逻辑,比如按键等都响应不了

后来就改成中断里面发送数据(没有DMA),然后main函数里面根据逻辑来处理,
计算需要显示的数据,中断里面下发数据到LCD,这样才不会占用MCU很长时间(10ms以上)
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-8-27 15:47:50 | 显示全部楼层
我在用STM32L475,我也想实现SPI+DMA方式刷新屏幕,不过现在一直不通,卡在 HAL_SPI_Transmit_DMA 函数中的HAL_DMA_Start_IT这里,一直返回错误,不知道什么愿意
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2020-8-27 21:45:07 | 显示全部楼层
piaoxuebingf 发表于 2020-8-27 15:47
我在用STM32L475,我也想实现SPI+DMA方式刷新屏幕,不过现在一直不通,卡在 HAL_SPI_Transmit_DMA 函数中的H ...

项目一直还没开始,被其他项目拖住了。
回复

使用道具 举报

6

主题

27

回帖

45

积分

新手上路

积分
45
发表于 2021-1-11 13:07:13 | 显示全部楼层
你可以看看我发的帖子: 有关SPI DMA的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 08:49 , Processed in 0.232557 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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