本帖最后由 JM哆啦a梦 于 2016-4-9 10:09 编辑
使用DMA方式传送数据可以提高传送速度,提高CPU的使用效率。程序的核心部分就是将之前需要CPU搬运大量数据的地方换成DMA的方式实现。战舰开发板上配套的程序修上改修如下:
1.void SD_SPI_Init(void);函数
2.u8 SD_RecvData(u8*buf,u16 len);////从sd卡读取一个数据包的内容。
3.u8 SD_SendBlock(u8*buf,u8 cmd);//向sd卡写入一个数据包的内容 512字节。
4.上面涉及到的3个与DMA有关的函数都放在了dma.c文件中,直接添加到工程中即可。
换成DMA方式后究竟速度能提高多少?复制同一个文件:
无DMA模式:
无DMA方式
DMA模式:
DMA方式
复制不同的文件速度会有不同,反正就是使用DMA方式速度能够提高好多好多。大家可以尝试显示一张JPG、BMP图片,效果会很明显(本人已验证过)。附上代码:
你好,你讲的这个不太明白。
while(!DMA_GetFlagStatus(DMA1_FLAG_TC5)); cpu一直在这里等待。
我没用上操作系统,我想用中断的方式判断接受数据完成,然后去取数据慢慢处理。请问是用SPI1的中断服务函数?还是用DMA1_CH2的中断服务函数呢?谢谢指教
一周热门 更多>