新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于STM32 SDIO接口驱动SD卡的设计(下)

基于STM32 SDIO接口驱动SD卡的设计(下)

作者:​陈启武 王飞 袁彬时间:2017-03-07来源:电子产品世界收藏

接上篇
2.1  卡初始化
     实现IO驱动卡,最重要的步骤是 SD卡的初始化。 STM32F1的SDIO控制器可支持SD2.0 高容量卡(SDHC,最 大32G)、SD2.0 标准容量卡(SDSC,最大 2G)以及SD1.x 卡和 MMC卡,本文采用SDHC作为数据采集模块的存储单 元。卡的类型不同,所支持的协议也不同。因此在初始化过 程中,主控制器必须先判断卡的类型,获得卡的基本信息, 最后完成卡的初始化,即对相关的寄存器进行配置。SD卡 的初始化流程如图5所示。
首 先 , 要 初 始 化 与 S D 卡 连 接 的 硬 件 资 源 , 如 对

本文引用地址:http://www.eepw.com.cn/article/201703/344894.htm

图5  SD卡的初始化流程
STM32F1的SDIO、GPIO和NVIC等相关的寄存器进行配置。
然后执行卡上电操作,发送CMD0指令,对卡进行软复位。 上电重置之后,主控制器通过CMD8指令区分SD卡类型, 只有SD2.0的卡才会响应该指令,MMC卡和SD1.x的卡不会 响应;在发送CMD8的时候,参数需要设置VSH位以获得主 控制器的供电情况。接着发送应用命令ACMD41(发送该命 令之前要先发送 CMD55),设置参数的HCS 位以告诉 SD 卡,主控制器是否支持高容量卡(SDHC)。SD 卡接收到 ACMD41 后,返回SD 卡的OCR 寄存器内容,主控制器通过 OCR 寄存器CCS位完成对SD 2.0卡的识别。
识别卡的类型后,便可发送CMD2 和 CMD3 命令,分 别用于获得卡 CID 寄存器数据和卡相对地址(RCA)。获得 卡 RCA 之后,便可以发送 CMD9(带 RCA 参数),获得 SD 卡的 CSD 寄存器内容,其包括SD卡的容量和扇区大小等十 分重要的信息。至此,SD卡的初始化基本结束,最后通过 CMD7 命令,选中要操作的SD卡,即可开始对  SD 卡进行读 写操作。
SD卡初始化函数关键代码如下:
SD_Error SD_Init(void)

{
SD_Error errorstatus = SD_OK; //重置SD_Error状态 GPIO_Configuration();  //SDIO 外设底层引脚初始化 SDIO_DeInit(); //对SDIO的所有寄存器进行复位 errorstatus=SD_PowerON();    //SD卡上电
if(errorstatus==SD_OK)
errorstatus=SD_InitializeCards(); //初始化 SD 卡,识别卡类型

if(errorstatus==SD_OK)errorstatus=SD_GetCardInfo(&SDCardInfo);    //获取卡信


if(errorstatus==SD_OK)

e r r o r s t a t u s = S D _ S e l e c t D e s e l e c t ( (u 3 2 ) ( S D C a r d In f o. RCA<<16));       //选中 SD 卡
return errorstatus; //初始化未成功,返回错误信息
}
2.2  SDIO驱动卡读/写数据
S D 卡 初 始 化 完 成 后 , 就 可 以 使 用 S D I O 向 S D 卡 读 、 写数据了。 SDIO控制器与SD卡一般是以数据块的形式进 行通信。SD数据的读写主要用到SDIO的数据FIFO寄存器
(SDIO_FIFO)。SDIO_FIFO包括接收和发送FIFO,他们 由一组连续的32 个地址上的 32 个寄存器组成,主控制器可 以使用 FIFO 读写多个操作数。要从SD卡读数据,必须读 SDIO_FIFO 寄存器,要写数据到 SD 卡,则要写 SDIO_FIFO寄存器。有关SDIO数据FIFO的读、写用到的固件库函数分
别是:uint32_t SDIO_ReadData (void) 和 void SDIO_WriteData (uint32_t Data)。通过调用这些接口函数,可以很方便地实 现SDIO驱动层的设计。

3 结论
通过SD卡主控制器的设计,将SD卡的存储方式创新性 地应用到快捷铁路货车监测系统的数据采集模块,简化了监 测系统的设计,减小了系统的尺寸,提高了系统的可靠性, 并且方便了与上位机的数据通信。本设计采用ARM Cortex™- M3内核的32位微控制器STM32F103作为主控制器,详细介 绍了SD卡和SDIO接口原理,所设计的硬件电路和软件满足 SD卡驱动的功能要求,可加快整个监测系统的设计进程。



关键词: STM32 SDIO SD

评论


相关推荐

技术专区

关闭