背景
最近有将大量日志存到SD卡中的需求,市面上的存数板基本只支持最大1M或者1.5Mbps的输入
我的需求起码是5-10M,甚至40Mbps,市面上的明显不满足需求,所以准备自己开发
设备
- STM32F407开发板 CPU@168MHz
- STM32H750开发板 CPU@480MHz
- 64G 朗科SD卡(标称支持写入30MB,读取100MB)
标准时钟下的速率
STM32F407的SDIO时钟最大24MHz ,STM32H750的SDIO时钟最大60MHz
采用DMA读写,测试方法为连续读写32MB,单次32KB
| 型号 | 写速率 | 读速率 |
|---|---|---|
| STM32H750 | 19.28 MB/s | 22.91 MB/s |
| STM32F407 | 7.87 MB/s | 8.99 MB/s |
超频时钟下的速率
经实测,STM32F407的SDIO时钟可以超频到42MHz ,STM32H750的SDIO时钟可以超频到80MHz
采用DMA读写,测试方法为连续读写32MB,单次32KB
| 型号 | 写速率 | 读速率 |
|---|---|---|
| STM32H750 | 23.91 MB/s | 28.82 MB/s |
| STM32F407 | 12.69 MB/s | 14.84 MB/s |
带FatFs文件系统的速率
文件系统为exFat
采用超频后的时钟,并使用DMA读写,测试方法为连续读写32MB,单次32KB
| 型号 | 写速率 | 读速率 |
|---|---|---|
| STM32H750 | 18.65 MB/s | 29.39 MB/s |
| STM32F407 | 10.74 MB/s | 14.87 MB/s |
单次写入大小对速率的影响
使用STM32H750+80MHz SDIO + DMA,测试方法为连续读写32MB
| 单次写入大小 | 写入速率 | 读取速率 |
|---|---|---|
| 1KB | 1.47 MB/s | 6.17 MB/s |
| 2KB | 2.79 MB/s | 10.55 MB/s |
| 4KB | 4.97 MB/s | 15.85 MB/s |
| 8kB | 8.37 MB/s | 20.46 MB/s |
| 16KB | 12.78 MB/s | 24.84 MB/s |
| 32KB | 18.51 MB/s | 29.41 MB/s |
| 64KB | 18.72 MB/s | 29.49 MB/s |