前几天,做了图片显示的实验,将一张24BIT的BMP从SD卡显示到TFT LCD上。
LCD用FSMC控制。
速度真他慢,真像PPT的渐变效果。
测试了一下,300ms一屏,实在无法忍受。
决定看看时间都浪费在哪里。
测试1:
如果刷一种颜色到LCD,只要10ms。
程序就是用FOR循环将320*240个U16发到LCD。
测试2:
屏蔽从SD卡读数据,只执行将原来图片显示中显示的代码。
运行时间27ms。应该算正常,毕竟有不少的数据处理。
也就是说,读数据画了270ms。要优化,就只能从大头入手,毕竟你就算把图片数据处理全优化掉,也才17ms。
根据本人多人经验:只要涉及到数据读取速度的优化,有一个屡试不爽的方法,就是一次读多一点的数据。
由于RAM不够,不可能将图片一次性全部读到RAM,原来的程序是每次读一行,那么我们现在就改为一次读10行吧。
测试3:
改为一次读10行或者20行,测试,时间300ms?
经验失效?
不应该,毕竟多年经验。而且时间确实是浪费在读数据啊?
分析一下读数据,并输出LOG调试,发现问题:
1 每次读一行,FATFS文件系统调用SD卡接口时,只会读一个SECTOR。
2 每次读多行,FATFS文件系统调用SD卡接口时,会读取多个SECTOR。但是&