各位牛人,小弟最近做一个项目,会用到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. 【转】完美解决Asp.Net的MasterPage中添加JavaScript路径问题
  2. java中JFrame去掉边框设置背景
  3. 具体knn算法概念参考knn代码python实现
  4. iOS-应用生命周期
  5. 在JShell中尝试Java9 HTTP客户端和Process API
  6. 网络安全web渗透技术
  7. teamtalk原理
  8. 关于企业电子工单系统的解决方案
  9. HTML5七夕情人节表白网页(花瓣相册表白) HTML+CSS+JavaScript 求婚示爱代码 520情人节告白代码 程序员表白源码 3D旋转相册 js烟花代码 css爱心表白
  10. java茌首字母_获取输入字符的首字母(中文为拼音首字母)
  11. [TCP]基于TCP的心跳和加密设计
  12. getResource()的几种路径方式
  13. ORACLE 12C EM 端口5500关闭及如何修改默认端口
  14. 数据挖掘——数据挖掘的起源
  15. 神兵利器 nth_element
  16. 76Echarts - 散点图(Life Expectancy and GDP)
  17. 0基础用vagrant 快速构建larval开发环境 (我杨某人尽力描述了,都有从0介绍)
  18. Google财经香港版上线,香港路演
  19. 小红帽 oracle,linux 小红帽 一键安装ffmpeg
  20. Python 计算两个日期之间天数

热门文章

  1. deepin安装bochs2.6.2_深度Deepin系统中wine4.0.1源编辑安装
  2. python pip download_Python Pip 参考手册 - pip download 命令
  3. JUC阻塞队列BlockingQueue讲解
  4. 为dhcp服务器授权的作用,有关在 AD DS 中为 DHCP 服务器授权的详细信息
  5. linux 1060显卡,Steam最受欢迎显卡型号出炉:GTX 1060显卡的占有率依然排名第一
  6. c++ linux 获取毫秒_Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  7. 根据ip获取所在城市 php,PHP:根据IP地址获取所在城市
  8. python 数据变化——n次多项式
  9. joblib多线程、多进程学习案例(一)——一步步写多进程任务
  10. Python快速读取文件中指定的一行或多行