|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 fanichicl 于 2019-1-31 14:10 编辑 / x; j$ p2 P/ J6 G' h
# P* l2 S) ?% j/ `- tSPI+DMA方式驱动SD卡
' i6 b8 [0 B* c! o6 D0 l
$ A/ _7 A" [ g! J* L使用DMA方式传送数据可以提高传送速度,提高CPU的使用效率。程序的核心部分就是将之前需要CPU搬运大量数据的地方换成DMA的方式实现。战舰开发板上配套的程序修上改修如下:0 `6 G9 t, f; b8 G" \9 A/ ^4 o
1.void SD_spi_Init(void);函数& E* `4 l3 I* u! D: X; a0 U
0 c ]5 c; Z' r) s9 U7 a
4 R0 j3 n! e# m! R1 [
2.u8 SD_RecvData(u8*buf,u16 len);////从sd卡读取一个数据包的内容。
$ X4 k I2 h" L- A6 V4 V6 o$ b, E4 V5 n
, c! y* R3 Q6 I1 |
3.u8 SD_SendBlock(u8*buf,u8 cmd);//向sd卡写入一个数据包的内容 512字节。
2 I, c e E6 v3 @3 U
2 U. L8 B Q$ _" r1 _. K; X" ]; D: N& K% {8 t
4.上面涉及到的3个与DMA有关的函数都放在了dma.c文件中,直接添加到工程中即可。% t7 u% m, N) E0 d+ X; L5 c9 a
! E& B# J; E% b' E$ v, B5 Z换成DMA方式后究竟速度能提高多少?复制同一个文件:( S% n( }. u! L* a3 Y
无DMA模式:( P, A" }+ E! U* s- t' [9 y X
: x+ k5 O& c3 q: V0 U2 V+ ]/ B
DMA模式:* B) Y5 u7 t1 I4 Z% h8 n+ i, D) ]
' w( a6 J# U0 j) G+ }7 G
复制不同的文件速度会有不同,反正就是使用DMA方式速度能够提高好多好多。大家可以尝试显示一张JPG、BMP图片,效果会很明显(本人已验证过)。附上代码:
- V# L* l2 C* C# f- M
) `9 e2 k+ z4 h: N a/ `. {$ Z; {
) \0 T) ~- s( M1 Q3 Z下载:
# V5 E. f; }* w! g9 U2 G/ E1 p: B3 o( O8 U D7 J7 A
|
|