|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 fanichicl 于 2019-1-31 14:10 编辑 3 ]' A, s/ A( E1 I! }
$ d* j* l& N a6 E- p" n* B2 ZSPI+DMA方式驱动SD卡
0 D0 v1 F6 p+ q6 D; @' i, i# K: l- q( Z1 I9 |$ l X3 J
使用DMA方式传送数据可以提高传送速度,提高CPU的使用效率。程序的核心部分就是将之前需要CPU搬运大量数据的地方换成DMA的方式实现。战舰开发板上配套的程序修上改修如下:
* Y* {) V" L! v# ?, R- `$ Q1.void SD_spi_Init(void);函数8 I+ Z- n1 P' `+ H( N
& ]& o+ c$ P* ~, p# F+ E
2 r6 u$ t$ o7 {7 \) P# c( G& `% e2.u8 SD_RecvData(u8*buf,u16 len);////从sd卡读取一个数据包的内容。
2 G$ ~7 ^) o( B! C
; I, f4 r O1 f' M, E& b3.u8 SD_SendBlock(u8*buf,u8 cmd);//向sd卡写入一个数据包的内容 512字节。% N- w" T& A/ h
! [9 D: p6 o) L) ]5 Y5 t, P
* p2 t2 a) k% ~) M. e
4.上面涉及到的3个与DMA有关的函数都放在了dma.c文件中,直接添加到工程中即可。! I8 f$ i4 y4 {$ `" O* [" f
! b* I3 Z3 s* i0 H
换成DMA方式后究竟速度能提高多少?复制同一个文件:/ ?# u5 E" I- |9 Y/ d* n
无DMA模式:# i2 p* C) ]6 g3 a* v- S, i7 K
k5 A( I( U# G
DMA模式:
5 |2 ^( [/ } u6 P( x/ `
6 M& S5 W! m$ v/ n' o复制不同的文件速度会有不同,反正就是使用DMA方式速度能够提高好多好多。大家可以尝试显示一张JPG、BMP图片,效果会很明显(本人已验证过)。附上代码:
% d- X% R; m* |! O7 a) R' E! V8 Y5 M
+ X( u. \; J6 N) s- V- N
下载:1 g7 c" p; Q- p! O9 B
) T. k% G7 b7 x1 q
|
|