|
本帖最后由 飞向狙沙 于 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能不能再涨一次脸,这玩意有点费脑子,一时半会不大够用,还不知道能不能研究明白
- DispColorBlock(unsigned int Xstart, unsigned int Xend, unsigned int Ystart, unsigned int Yend, unsigned int color) {
- BlockWrite(Xstart, Xend, Ystart, Yend);
- LCD_CS_CLR;
- LCD_RS_SET;
- // LCD_RD_SET;
- uint32_t pos=(Xend-Xstart+1)*(Yend-Ystart+1);
- for(pos;pos>0;pos--)
- {
- uint8_t shifted_color = color >> 8;
- sio_hw->gpio_set = shifted_color;
- shifted_color = ~shifted_color;
- sio_hw->gpio_clr = ((uint32_t)shifted_color)|(1 << LCD_WR_PIN);
- // LCD_WR_CLR;
- LCD_WR_SET;
- shifted_color = color;
- sio_hw->gpio_set = shifted_color;
- shifted_color = ~shifted_color;
- sio_hw->gpio_clr = ((uint32_t)shifted_color)|(1 << LCD_WR_PIN);
- // LCD_WR_CLR;
- LCD_WR_SET;
- }
- LCD_CS_SET;
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|