关于刷TFT阻塞CPU的问题

2019-07-21 04:51发布

1、硬件环境:
f407,主频168M,外扩SRAM做缓存驱动3.5寸480*320屏(驱动芯片:ILI9481) 2、过程:
先将需要显示的内容在SRAM中刷完,然后再一次性全部刷新在TFT上。
在TFT和SRAM的FSMC都配置在最快且显示正常的情况下,试过两种方式刷屏:
A、直接用for循环来刷新液晶,就是将外部缓存直接当作一个大数组,然后一步步扔进TFT就行 B、用DMA,只需要指定SRAM起始地址和TFT地址即可,不需要CPU一步步刷。
但是,由于DMA的M2M方式加上FIFO需要至少两次才能刷完整屏,
为了避免数据显示错位,需要硬等待第一次DMA完成后再完成第二次。 3、问题:
实测以上AB两种方式刷屏的最快频率是25ms。
那么就是说这个25ms是硬消耗CPU的,不能用来做其他事情。这样对整个系统实时性有一定影响,
希望大家给点意见.....
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
ricefat
1楼-- · 2019-07-21 22:50
回复【6楼】KC_CEC:
---------------------------------
不用等吧,DMA中断里面加个标志位,刷完屏了置位即可。DMA传输期间CPU可以干其他事情。
另外可以从算法解决,找出两帧之间的差别,直接修改对应点即可。
KC_CEC
2楼-- · 2019-07-22 04:10
回复【7楼】ricefat:
---------------------------------
如果知道在刷这屏的时候在上屏的基础上改变了哪里,那就好办了。
最开始我想的是将屏幕分成很多块,那一块刷新了就更新那一块的数据。
可是现在做的这个东西,几乎覆盖所有块的内容都会刷新的。

不知道您能不能提供一下思路?

一周热门 更多>