全部的学习汇总:https://github.com/GreyZhang/SdFatFs
想测试一下SdFat的读取功能,根据例程修改一下,读取一个5M的文件,看看速度。读取速度,我按照串口打印的时间戳来算。测试代码如下:
其他的代码,跟例子基本一致。首先,第一次我把全部的数据打印出来做了一次对比,先确认这个读取动作是没有问题的。这一次测试,去掉了串口打印,应该不会减缓文件的读取。但是,目前的读取方式看上去似乎是一个字节一个字节读取而不是一行行读取。为了验证这个,稍后我会做一个测试。另外,SPI的波特率暂时是没有去调整的。
测试结果如下:
看起来,速度一般,折算一下大概是一秒钟23KB。
接下来,每次读取82个字节(正好是一行,加上结束符)测试一下。
测试结果如下:
这次的速度看上去看了很多,每秒的读取速度达到了182KB。看起来,这个读取方式快了很多。或许,按照一个sector的大小来读取会更快。修改如下:
测试结果如下:
确实快了一点,232KB/S。但是,512个字节的RAM对于AVR的软件设计来说还是比较奢侈的。
接下来,修改SPI的波特率。我记得我看了SPI的参考手册,这个波特率不准。但是,会计算一个最贴近的波特率出来。晶振16M,似乎最多能够整一个4M的出来。但是,我在SPI的波特率上直接整一个20M。
测试效果如下:
速度又有提升,读取速度大概300KB/S。看起来,这是SdFat的一个峰值读取速度了。