各位牛人,小弟最近做一个项目,会用到STM32F103VC的SDIO读SD卡,单块读成功速度可以达到1M,多块读却不行?

请求各位能给予指点,或者相关代码参考。谢谢

我用的是stm32_eval_sdio_sd.c 的4.5版,

* @file    stm32_eval_sdio_sd.c

* @author  MCD Application Team

* @version V4.5.0

* @date    07-March-2011

* @brief   This file provides a set of functions needed to manage the SDIO SD

*          Card memory mounted on STM32xx-EVAL board (refer to stm32_eval.h

*          to know about the boards supporting this memory).

-------------------------------------------------------------------------------------------------------------------------------------

SD_Error SD_ReadMultiBlocks(uint8_t *readbuff, uint32_t ReadAddr, uint16_t BlockSize, uint32_t NumberOfBlocks)

{

SD_Error errorstatus = SD_OK;

TransferError = SD_OK;

TransferEnd = 0;

StopCondition = 1;

SDIO->DCTRL = 0x0;

if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)

{

BlockSize = 512;

ReadAddr /= 512;

}

/*!< Set Block Size for Card */

SDIO_CmdInitStructure.SDIO_Argument = (uint32_t) BlockSize;

SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;

SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;

SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;

SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;

SDIO_SendCommand(&SDIO_CmdInitStructure);

errorstatus = CmdResp1Error(SD_CMD_SET_BLOCKLEN);

if (SD_OK != errorstatus)

{

return(errorstatus);

}

SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;

SDIO_DataInitStructure.SDIO_DataLength = NumberOfBlocks * BlockSize;

SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;

SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;

SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;

SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;

SDIO_DataConfig(&SDIO_DataInitStructure);

/*!< Send CMD18 READ_MULT_BLOCK with argument data address */

SDIO_CmdInitStructure.SDIO_Argument = (uint32_t)ReadAddr;

SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_READ_MULT_BLOCK;

SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;

SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;

SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;

SDIO_SendCommand(&SDIO_CmdInitStructure);

errorstatus = CmdResp1Error(SD_CMD_READ_MULT_BLOCK);

if (errorstatus != SD_OK)

{

return(errorstatus);

}

SDIO_ITConfig(SDIO_IT_RXOVERR|SDIO_IT_DTIMEOUT|SDIO_IT_DCRCFAIL|SDIO_IT_DATAEND, ENABLE);

SDIO_DMACmd(ENABLE);

SD_LowLevel_DMA_RxConfig((uint32_t *)readbuff, (NumberOfBlocks * BlockSize));

errorstatus = SD_WaitReadOperation();                                     //121112    等待读操作完成

if (errorstatus != SD_OK)

{

return(errorstatus);

}

while(SD_GetStatus()!=SD_TRANSFER_OK);                            //121112

return(errorstatus);

}

mysql 单块读 多块读_求指点:STM32F103VC的SDIO读SD卡单块读成功,多块读却不行?...相关推荐

  1. 卡写入速度_看清商家买相机送SD卡的套路,一文教你掌握存储卡选购秘诀

    学摄影,可能并不比学一门艺术或学科更简单,它可能更难. 我的工作是摄影教学,想在短时间内让学摄影的人顺利毕业,注定需要不厌其烦的整理.疏导琐碎的摄影知识,搭建知识网络,然后研发成课程.最终复盘再优化再 ...

  2. sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SDMMC外设读取SD卡数据. 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4 ...

  3. 单链表的插入和删除_从0开始的编程之梦——数据结构之单链表的基本运算

    一.求带有头结点的单链表长度 算法思路:沿带头节点单链表L的首元结点计数统计单链表长度 算法描述: 顺链头开始,计数器j初值为0:当前指针p指向链表L的首元结点 p=L->next p依次往后( ...

  4. mysql文档顶层出现无效内容_文档的顶层无效。处理资源问题,人家网站可以,我的不行!...

    我将人家网站的xml复制到我的网站出现: 文档的顶层无效.处理资源 http://www.xp001.com/1.xml 我的不行(但是http://www.xp001.com/2.xml是差不多类型 ...

  5. 计算机无法读取内存,图文教你如何修复电脑无法识别读取的U盘(SD卡)!-内存卡在电脑上读不出来怎么办...

    今天来说说如何自己动手修复电脑无法识别,读取的U盘,SD卡也同样可以修复,新手朋友可以借鉴学习学习,还望高手们勿喷! 想要修复肯定要用到修复工具,本文讲到的工具就是:"DiskGenius磁 ...

  6. SD卡电脑读取失败但是相机可读的问题描述和解决方案

    本文由 @lonelyrains 出品,转载请注明出处.  文章链接: http://blog.csdn.net/lonelyrains/article/details/9074791 硬件环境:相机 ...

  7. deepin安装卡死在蓝色背景_求大神帮助~安装DEEPIN系统卡在蓝色背景图什么原因...

    可能是联想拯救者 R7000笔记本的原因,用以下方法解决了 先点开联想的电脑管家  你能在左边栏找到一个选项 那个选项是显卡模式点击进去→然后选择独显模式(如果找不到就在当前界面里面选择调回游戏模式) ...

  8. java 外部类似_[求指点] 如何用java 实现类似linux中管道调用外部程序的功能

    想写个小程序实现类似linux中管道的功能,创建一个外部子进程,然后主进程不断地写输入给子进程,而后把子进程的返回值取出. 如下的小代码就是从stdin读入一个字符串,调用子进程(cat)返回这个串, ...

  9. android phone驱动_[基础知识] 将 OneDrive 同步到 SD 卡等外部驱动器

    更新时间:2020年3月10日 随着 Windows 10 的普及,OneDrive 被越来越多的用户所了解.虽然个人版 OneDrive 在中国的使用有一定受限,但中国版 Office 365 的商 ...

最新文章

  1. 深入浅出统计学(十三)假设检验
  2. 【SSM框架系列】Mybatis映射配置文件与核心配置文件深入
  3. 最优化理论与方法(part8)--凸集的分离和支撑
  4. 华三交换机mode是什么意思_POE交换机150米、长距离250米传输是什么意思?
  5. a标签里面设置onclick_HTML学习笔记:各种常用标签
  6. 1321. Robot
  7. Linux常用命令—权限管理命令—权限管理命令chmod
  8. C语言求一个数的倒数的平方根近似值
  9. 零基础带你学习MySQL—日期函数(十五)
  10. Qt 内嵌浏览器几种办法
  11. linux打开dwg格式文件怎么打开软件,DWG 文件扩展名: 它是什么以及如何打开它?...
  12. leetcode-第13题 罗马数字转整数
  13. 【第一组】第二次例会会议记录
  14. ObjectPostProcessor使用与多种用户定义方式(9)
  15. 关于photoshop软件的177个小技巧
  16. hive与Oracle数据库的相互同步
  17. apdl与传统计算机语言,ANSYS经典APDL语言详解及ANSYS二次开发
  18. JavaScript递归函数的几种写法
  19. Confluence创建自动填充序列表格
  20. 【Oracle】6.JDBC

热门文章

  1. vue 计算属性和data_Vue.js教程(五)--Vue的计算属性
  2. strcmp可以比较数组么_数组:总结篇
  3. mysql 多对多_mysql多对一、多对多查询实践
  4. mac系统升级 brew 是用不了_Mac 终端(terminal) oh-my-zsh+solarized配置
  5. hbuilder制作简单网页_企业信息化网站+营销服务之电子商务网站制作流程
  6. 企业号开发php,微信企业号-开发笔记-1
  7. 5-10多分支网络结构
  8. 微信小程序 服务器触发事件,微信小程序组件间通讯与事件
  9. java自动下载更新程序_android实现软件自动更新的步骤
  10. 通常所说的pc机是指微型计算机,2017年自考计算机应用基础精选习题及答案(1)