哥们能否把你的F7的关于SDMMC的配置及驱动给我参考参考
A、优先级
SDMMC2_IRQn " bsp_drver_sd.c " 0xe
DMA2_Stream0_IRQn " bsp_drver_sd.c " 0xf
DMA2_Stream5_IRQn " bsp_drver_sd.c " 0xf
SDMMC2_IRQn 这个的优先级必须比 DMA2_Stream0_IRQn, DMA2_Stream5_IRQn 高一个数量级,如上所设置的
hpdell 发表于 2017-9-14 20:15
A、优先级
SDMMC2_IRQn " bsp_drver_sd.c " 0xe
DMA2_Stream0_IRQn ...
非常感谢,按照你的配置方式,SDMMC的DMA方式调通了,但是发现,使用DMA和不使用DMA读写速度没多少变化,我是直接块读写操作,每次多块写入16K字节(512*n),速度也就2.7m/s
你有测试过么 xiang90721 发表于 2017-9-15 09:55
非常感谢,按照你的配置方式,SDMMC的DMA方式调通了,但是发现,使用DMA和不使用DMA读写速度没多少变化, ...
你是如何测试的啊 ??? 本帖最后由 xiang90721 于 2017-9-19 21:33 编辑
hpdell 发表于 2017-9-19 20:03
你是如何测试的啊 ???
具体测试方法:
tick_start = HAL_GetTick();//获取开始测量前的时钟计数
for(i=0;i<5000;i++)
{
ret = BSP_SDMMC_Write(buf,i*n,n);//BSP_SDMMC_Write为使用库函数HAL_SD_WriteBlocks_DMA()封装的块写入函数而已
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*n字节,系统滴答时钟配置的为1ms一次
通过如上的方式计算得出的写入速度测试,读出速度也是同样的方式计算得出。
SD卡为class 4,且供给SD的时钟为24M
非常感谢,下载学习! 我用的cube生成的代码,dma rx没有问题,但是dma tx时候进不了中段,请问是是要对齐哪里? 加系统的话是用队列进行完成保护的,dma配置收发都是对齐word。 读可以,写不行。
页:
1
[2]