数码之家

 找回密码
 立即注册
搜索
查看: 932|回复: 12

[Arduino] RP2040驱动320*240屏幕,优化到了刷屏111fps,但是还不够

[复制链接]
发表于 2025-1-15 10:18:43 | 显示全部楼层 |阅读模式
本帖最后由 飞向狙沙 于 2025-1-16 11:00 编辑

之前搞了个RP2040核心板+底板驱动320*240液晶屏,很自信的砍掉了SPI接口,只保留了8bit并口,使用arduino环境,软件模拟并口,从最初的digitalWrite单个IO置位,单色刷屏300多ms
,经过一系列的操作优化,包括优化IO操作、精简函数嵌套、精简循环嵌套、高低位取数优化等等操作,做到了单色刷屏10ms,然后又把WR拉低合并到了写数据里,做到了9ms,实现了单色刷屏111fps,然后一心欢喜再搞lvgl,跑benchmark,立马打脸,跑完综合帧率只有40fps,而且cpu使用率到了80%+,最差时跑动画效果帧率掉到了个位数,沮丧啊。。。

再研究PIO吧,看看PIO+DMA能不能再涨一次脸,这玩意有点费脑子,一时半会不大够用,还不知道能不能研究明白




  1. DispColorBlock(unsigned int Xstart, unsigned int Xend, unsigned int Ystart, unsigned int Yend, unsigned int color) {
  2.     BlockWrite(Xstart, Xend, Ystart, Yend);
  3.     LCD_CS_CLR;
  4.     LCD_RS_SET;
  5.     // LCD_RD_SET;
  6.     uint32_t pos=(Xend-Xstart+1)*(Yend-Ystart+1);
  7.     for(pos;pos>0;pos--)
  8.     {
  9.         uint8_t shifted_color = color >> 8;
  10.         sio_hw->gpio_set = shifted_color;
  11.         shifted_color = ~shifted_color;
  12.         sio_hw->gpio_clr = ((uint32_t)shifted_color)|(1 << LCD_WR_PIN);
  13. //        LCD_WR_CLR;
  14.         LCD_WR_SET;
  15.         shifted_color = color;
  16.         sio_hw->gpio_set = shifted_color;
  17.         shifted_color = ~shifted_color;
  18.         sio_hw->gpio_clr = ((uint32_t)shifted_color)|(1 << LCD_WR_PIN);
  19. //        LCD_WR_CLR;
  20.         LCD_WR_SET;
  21.     }
  22.     LCD_CS_SET;
  23. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 2家元 +60 收起 理由
kkdkj + 30 歡迎探討
家睦 + 30

查看全部打赏

发表于 2025-1-15 10:39:39 | 显示全部楼层
上PIO吧。用cpu做io输出就是有点费劲。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-15 11:12:46 | 显示全部楼层
digitking 发表于 2025-1-15 10:39
上PIO吧。用cpu做io输出就是有点费劲。

在研究,之前看了点没太看明白,软件输出确实不行,CPU占用太高了,什么都干不了,实际上效果还不如硬件SPI+DMA呢
回复 支持 反对

使用道具 举报

发表于 2025-1-15 11:16:42 | 显示全部楼层
飞向狙沙 发表于 2025-1-15 11:12
在研究,之前看了点没太看明白,软件输出确实不行,CPU占用太高了,什么都干不了,实际上效果还不如硬件S ...

立创商城撸券啦,10块钱券没东西撸可以撸10片PY32单片机:
https://www.mydigit.cn/thread-492347-1-1.html
回复 支持 反对

使用道具 举报

发表于 2025-1-15 11:24:56 | 显示全部楼层
进来学习,我很少用全刷
回复 支持 反对

使用道具 举报

发表于 2025-1-15 22:34:19 | 显示全部楼层
单片机还不会玩。灯板打好了,非常感谢!以后再发帖展示。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-16 11:02:07 | 显示全部楼层
猪小呆 发表于 2025-1-15 11:16
立创商城撸券啦,10块钱券没东西撸可以撸10片PY32单片机:
https://www.mydigit.cn/thread-492347-1-1.htm ...

现在懒了,不兼容arduino的单片机不想玩
回复 支持 反对

使用道具 举报

发表于 2025-1-30 01:36:03 | 显示全部楼层
rp2040默认125mhz,使用pico sdk,并行8位屏幕,480x320,dma+pio,单色刷屏大概135帧左右,你可以参考一下。

打赏

参与人数 1家元 +21 收起 理由
飞向狙沙 + 21 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-30 16:04:19 | 显示全部楼层
william9527 发表于 2025-1-30 01:36
rp2040默认125mhz,使用pico sdk,并行8位屏幕,480x320,dma+pio,单色刷屏大概135帧左右,你可以参考一下 ...

有程序参考下吗,纯软件IO我最高优化到单色4ms,但是cpu占用太高导致跑lvgl上不去,上了PIO不用DMA的话发现没多大用处,正在研究DMA
回复 支持 反对

使用道具 举报

发表于 2025-2-1 21:26:14 | 显示全部楼层
飞向狙沙 发表于 2025-1-30 16:04
有程序参考下吗,纯软件IO我最高优化到单色4ms,但是cpu占用太高导致跑lvgl上不去,上了PIO不用DMA的话发 ...

代码:https://gitee.com/jiushiximan/pico-from-scratch
我在B站做了一系列pico的视频教程,方便的话过去点个赞https://www.bilibili.com/video/BV1Ft421576t

打赏

参与人数 1家元 +30 收起 理由
飞向狙沙 + 30 謝謝分享

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-2 22:32:12 | 显示全部楼层
william9527 发表于 2025-2-1 21:26
代码:https://gitee.com/jiushiximan/pico-from-scratch
我在B站做了一系列pico的视频教程,方便的话过 ...

这个就是你的号啊,这视频都看过,一开始看PIO手册云里雾里的,就是看了你的视频和b上的另一篇图文才把PIO搞明白,牛逼
回复 支持 反对

使用道具 举报

发表于 2025-2-3 17:45:08 | 显示全部楼层
飞向狙沙 发表于 2025-2-2 22:32
这个就是你的号啊,这视频都看过,一开始看PIO手册云里雾里的,就是看了你的视频和b上的另一篇图文才把PI ...

pico其实挺好的,但是用的人不多,我的视频也是帮助大家多一种选择,能帮到大家就好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-2-4 22:29:58 | 显示全部楼层
william9527 发表于 2025-2-3 17:45
pico其实挺好的,但是用的人不多,我的视频也是帮助大家多一种选择,能帮到大家就好。 ...

确实,2040这玩意综合来看很强,双核可用还有PIO,估计一方面没有stm32这玩意资料多,玩家基数大,另一方面不想esp32自带wifi,再就是只有一些最小系统,没有像esp那样多样性的模块,qfn焊接还是稍微有点难度
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 06:53 , Processed in 0.265201 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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