59cc82930b0f594c2d645e5a8b879d5e
前言 前面我们进行tft刷频测试时,可以看到直接更新数据显示,由于更新数据需要一定时间所以导致了边更新边显示,有拉窗帘的感觉。这一边我们就来解决这个问题。 1. 软件使用双缓存ping-pang操作软件对需要更新的数据先进行缓存,需要更行时一次性更新,这也是一般GUI设计中使用的方法。在显示一块区域的数据时先对另外一块数据进行操作。 这种方式也无法避免同步软件缓存到硬件中这段时间总线传输数据的时间,如果这一段时间很长那么时无法解决问题的。 2. 硬件使用双缓存ping-pang操作这种方式是最完美的解决方式,硬件中使用2倍于屏幕大小的DRAM,在显示一个DRAM时更新另外一个DRAM,更新完再切换DRAM,这种方式完美的解决了拉窗的问题,但是需要硬件支持,我们这个板子的tft控制器是st7735看手册应该是不支持这个模式的。 我们看到DRAM大小就是TFT大小
3. 更新数据时关闭display这种方式可以软件解决拉窗问题,但是如果数据传输时间过大会导致闪烁问题。 更新数据时间和显示保留时间要保证一定比例,更新数据时间要小于人的视觉残留时间,专门使用一个线程或者定时负责刷屏处理。 也就是显示保留时间的占空比要大于一定值,否则会闪烁,类似LED灯PWM占空比低PWM频率低时的闪烁,这也决定了刷屏的帧率。 我们的硬件不支持方式2,方式1需要双倍缓存,并且也没法避免数据传输时间长导致的问题。所以只能使用方式3, 尽量传输速度,更新数据时关闭显示(关闭的时间尽可能短)。 关闭打开显示对应0x28和0x29指令
我们实测刷屏视频,代码见附件。 总结以上提供了一些优化方案并进行测试,需要根据实际情况进行选择优化。
|