SPI与SDIO两种操作方式读写SD卡速度测试
SPI与SDIO两种操作方式读写SD卡速度测试
目前嵌入式应用中,若要用到SD卡,一般有两种操作方式可选:
一种是SPI操作SD卡的方式;
一种是SDIO操作SD卡的方式。
一般是SPI操作SD卡方式使用较多,因为一般正常的MCU都带有SPI接口,但SDIO接口一般存在于大容量MCU中,中小容量的MCU一般不带有SDIO接口。
测试平台:
CH32V307VCT6+SD卡(16G)
测试程序配置:
SPI+DMA+FatFs
SDIO+DMA+FatFs
SPI读写SD卡速度测试:
(1)时钟配置:
程序当中,系统主频设置为120MHz,APB2总线时钟为系统主频1分频,为120MHz,SPI时钟经APB2总线时钟4分频,为30MHz。
(2)测试方法:
采用定时器中断计数方式进行测速,定时器1ms进入一次中断,计数值(全局变量)cnt+1,每进一次中断加一次,在读写之前获取一次计数值,读写之后获取一次计数值,根据前后差值计算读写的时间。关于读写,以for循环的方式读出或写入一组数据(1024字节),循环10000次,这样就写入或读出都是10M字节,根据以上数据就可计算出读写时间:
具体程序参考如下:
定时器中断配置:
写入程序:
读出程序:
根据上述方法,打印值如下:
由上述信息可以得出:
SPI写入10M字节用时12927ms,即12.927s,写入速度为:773.6字节/s;
SPI读出10M字节用时6038ms,即6.038s,读出速度为:1656.2字节/s;
SDIO读写SD卡速度测试:
(1)时钟配置:
程序当中,系统主频设置为144MHz,AHB总线时钟为系统主频,SDIO时钟为48MHz。
(2)测试方法:
与SPI测试方法一致,程序基本也是一样的。
打印结果如下:
由上述信息可以得出:
SDIO写入10M字节用时10889ms,即10.889s,写入速度为:918.4字节/s;
SDIO读出10M字节用时3725ms,即3.725s,读出速度为:2684.6字节/s;
结果汇总如下:
操作方式 |
写入 |
读出 |
SPI+DMA+FatFs |
773.6字节/s |
1656.2字节/s |
SDIO+DMA+FatFs |
918.4字节/s |
2684.6字节/s |
以上数据只是一个简单的测试数据,可以看出SDIO的操作方式相较于SPI读写速度还是快上不少的,若要将代码继续优化一下,各自的速度应该还能提升不少。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)