|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 fanichicl 于 2019-1-31 14:10 编辑 ( `2 H5 Z' ^3 [! O. a- _
) U& b, h2 N; p6 R, rSPI+DMA方式驱动SD卡
, u1 z$ G6 X6 M
5 s8 q2 I6 m! d# ?使用DMA方式传送数据可以提高传送速度,提高CPU的使用效率。程序的核心部分就是将之前需要CPU搬运大量数据的地方换成DMA的方式实现。战舰开发板上配套的程序修上改修如下:$ A$ G; E$ B% n7 `: P* K8 u0 ?% N1 g7 z! q
1.void SD_spi_Init(void);函数+ I: l' ?- y8 b5 f! r! H1 S& v( r
# o3 J$ T) P- o: Q2 [0 R
( c8 O w, q8 P) m2.u8 SD_RecvData(u8*buf,u16 len);////从sd卡读取一个数据包的内容。
& p$ b9 u1 t9 F9 \3 d+ m7 A1 L& Q/ D8 Z
0 p' x$ F' k |
3.u8 SD_SendBlock(u8*buf,u8 cmd);//向sd卡写入一个数据包的内容 512字节。. a* z2 _* ^& R6 ~; _
0 X% u4 N6 y& p" r3 g
* m4 L" Q8 z, l) j4.上面涉及到的3个与DMA有关的函数都放在了dma.c文件中,直接添加到工程中即可。2 m8 X6 w6 I! q Y" D6 h0 T
# B" Q3 i8 v' e6 L0 }
换成DMA方式后究竟速度能提高多少?复制同一个文件:
, y, y4 O' U3 ]" Q# {7 Z无DMA模式:( k' J! r7 U9 D. \1 i
* @5 l t* A/ R& y7 U i$ CDMA模式:1 ^4 l' {& n1 Y) W+ e5 x( q1 U' u
; L7 U6 B/ V0 m
复制不同的文件速度会有不同,反正就是使用DMA方式速度能够提高好多好多。大家可以尝试显示一张JPG、BMP图片,效果会很明显(本人已验证过)。附上代码:4 C Z+ n; }9 J3 \
. O5 ?; u3 Q! }* U1 [% ?
) p* W" p' b( a) L7 Y$ T' k下载:! d9 F5 V! c) J: @7 g
s, s. f, C1 c' M+ x |
|