关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > 基于STM32F103XX微处理器的Micr0 SD卡读写

基于STM32F103XX微处理器的Micr0 SD卡读写

作者: 时间:2010-12-23 来源:网络 收藏


2 软件设计
软件设计一部分是基于STM32固件库,该固件库针对基于ARM的32位微处理STM32F101XX和STM32F103XX。其中,包括程序、结构和覆盖所有外设特性的宏单元,还包括设备驱动的描述以及每个外围模块的实例。因此,使用该固件库可以节省许多时间,将更多的时间花费在编程方面,从而减少了在应用开发中的综合开销。
2.1 Micro SD卡初始化为SPI总线模式
STM32F103XX微处理器包括2个串行外设接口(SPI),可以方便地对Micro SD卡接口进行配置。首先对要用到的SPIl接口采用命令SPI_In-it(SPIl,&SPI_InitStructure)进行初始化,并使能SPIl。
刚上电时,Micro SD卡缺省使用专有的SD总线协议,将Micro SD卡切换到SPI模式,主机需要发出命令CMDO(GO-IDLE-STATE)。Micro SD卡会检测到SPI模式选择信息,因为卡选择(CS)引脚在该命令和其他所有SPI命令传送过程中都保持为低电平,故MicroSD卡以R1作为响应,空闲状态位被置为高电平,此时MicrlO SD卡进入空闲状态,此阶段的SPI时钟频率不能超过400 kHz。Micro SD卡进入SPI模式后,主机应该先发一条初始化指令CMD1(ActiVates the card process),此时可将SPI频率设置为高速模式。然后发送命令CMD59决定是否开启CRC校验,设置读/写块长度,最后延迟8个时钟后返回。Micro SD初始化流程如图2所示。
b.JPG

2.2 Micro SD卡读写单块
从Micro SD卡中读取一个数据块只需要主机发送CMD17(MSD_READ_SINGLE_BLOCK)命令,并将起始地址作为参数(此地址必须和介质上一个块的起始位置对齐),然后Micro SD卡会验证这个字节地址,并以一个R1命令作为响应。在完成Micro SD卡读取操作后,先发送一个起始数据命令,接着发送固定数量的数据,最后是2个字节CRC校验。读取一个数据块由函数u8 MSD_ReadBlock(u8*pBuffer,u32 ReadAddr,u16 NumByteToRead)来完成,pBuffer是一个指针,它指向接受Micro SD卡数据内存缓冲区的地址,ReadAddr是要读取数据在Micro SD卡中的地址,NumByteToRead是要读取的字节数,一般为512 B。


关键词: 存储 数据

评论


相关推荐

技术专区

关闭