找回密码
 注册
关于网站域名变更的通知
查看: 512|回复: 2
打印 上一主题 下一主题

SPI+DMA方式驱动SD卡

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-31 14:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 fanichicl 于 2019-1-31 14:10 编辑
5 o$ F0 q7 Z6 I5 X- N  P
6 Q1 _% A! o- _* iSPI+DMA方式驱动SD卡
5 [1 [7 `+ o5 q6 G& J' X- n7 r
$ X) w, {. T! l使用DMA方式传送数据可以提高传送速度,提高CPU的使用效率。程序的核心部分就是将之前需要CPU搬运大量数据的地方换成DMA的方式实现。战舰开发板上配套的程序修上改修如下:6 ^& ?5 x0 \& G; j% f, Z
1.void SD_spi_Init(void);函数
9 i/ m( z( ?- x9 Y& v+ E" U
1 p2 E2 e; T" F# r2 i6 C
% ]0 x+ l- k- v9 [# I& w; M* ]2.u8 SD_RecvData(u8*buf,u16 len);////从sd卡读取一个数据包的内容。
* J6 Q3 J7 `# S6 K! q- J
0 e8 v5 p2 p9 P. b# Q3.u8 SD_SendBlock(u8*buf,u8 cmd);//向sd卡写入一个数据包的内容 512字节。
# q8 O9 U/ ^: o; j, i& g4 O & j6 q. J0 d$ E) w0 `

. a, W/ X) ~  u5 a! e0 e4.上面涉及到的3个与DMA有关的函数都放在了dma.c文件中,直接添加到工程中即可。
0 [) {* d* b* B# L) k+ f9 @0 r( N4 t- D* F5 F; W' q6 Q+ _
换成DMA方式后究竟速度能提高多少?复制同一个文件:
3 @" W) u, x8 l+ D/ \! P  b无DMA模式:( p% Y6 ~! |0 ?8 i( c7 k
6 {  @# E; }2 ?  R
DMA模式:
1 a$ o  A( ]; L. [( F $ {/ }$ c) W2 K  E, @+ O3 d
复制不同的文件速度会有不同,反正就是使用DMA方式速度能够提高好多好多。大家可以尝试显示一张JPG、BMP图片,效果会很明显(本人已验证过)。附上代码:
' T& p! `. `3 Q: U. M/ i; w4 E6 U
; w- H5 c* T+ ?( x6 {
下载:
. t/ u5 ]7 _0 Q7 v  l
游客,如果您要查看本帖隐藏内容请回复

4 X3 r, c3 q" g& |

该用户从未签到

2#
发表于 2019-1-31 16:01 | 只看该作者
不错,谢谢分享

该用户从未签到

3#
发表于 2022-10-18 16:26 | 只看该作者

- ~* f, X+ l& p# Y/ Q: k8 J0 m不错,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-4 08:55 , Processed in 0.078125 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表