我使用的就是官方STM32746G-Discovery开发板,对SD直接进行块读写操作,发现其对SD读写速率太慢了!读取速度:1.3M/s左右,写入速率:130k/s左右,单位byte字节。
使用DMA的方式效果不见好转!
测试环境:
1、使用的测试工程是在官方固件包STM32Cube_FW_F7_V1.7.0ProjectsSTM32746G-DiscoveryApplicationsFatFsFatFs_uSD工程中修改而来,驱动都是工程中的,只是去除了文件系统直接调用读写接口函数进行测试,其时钟配置都是没改。给SD供的时钟为24M。
2、使用的SD卡为现市面上常见的2.0 金士顿8G卡 class 4
3、使用的SDMMC接口为4线数据方式(官方板子是这样接的)
测试方式:
我是基于库函数的方式来写的,具体测量方式如下:
tick_start = HAL_GetTick();//获取开始测量前的时钟计数
for(i=0;i<5000;i++)
{
ret = BSP_SDMMC_Write(buf,i;1);//BSP_SDMMC_Write为使用库函数HAL_SD_WriteBlocks()封装的块写入函数而已
if(ret != MSD_OK)
{
//do something
while(1);
}
}
tick_end = HAL_GetTick();
write_speed = buf_len*5000*1000/(tick_end - tick_start);//buf_len为数组buf数据长度,小于512字节,系统滴答时钟配置的为1ms一次
通过如上的方式计算得出的写入速度测试,读出速度也是同样的方式计算得出。
也曾使用原子哥的程序,做同样的测试,速度基本一样。
想问这样的速度可肯定不正常吧?哪位有做过,可以给我一个高速SDMMC配置么?期望写入速度能有1M以上!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>