基于ARM7的SD卡控制器的设计
1 MCU与SD卡的接口电路
接口电路采用的是Philips公司的LPC2138微处理器。它除了比普通的8051有更快的指令执行周期外,还提供多种在片的硬件接口功能,如UART、SPI、I2C等,因此用LPC2138的SPI接口可以很方便地与SD卡互连。原理图如图1。
1.1 SPI总线
如图1,LPC2138SPI0接口的P0.4,P0.5,P0.6直接连接到卡座的相应接口,为了使电路可以与SD卡接口兼容, SPI的两个数据线P0.6和P0.5需要分别接上拉电阻。片选信号使用P0.18。SPI模式下没有用到的信号线DAT2和DAT1分别接下拉电阻。
1.2 卡供电控制
卡的供电采用可控方式,这是为了防止SD卡进入不确定状态时,可以通过对卡重新上电使卡复位而无需拔出卡。可控电路采用P型MOS管 2SJ355,由LPC2138的P0.17进行控制。当P0.17输出高电平时, 2SJ355关断,不给卡供电;当P0.17输出低电平时, 2SJ355开通,给SD卡供电。
1.3 卡检测电路
卡检测电路包括两个部分:卡是否完全插入到卡座中和卡是否写保护。检测信号由卡座的两个引脚以电平方式输出。当卡插入到卡座并插入到位时,由于 卡座内部触点连接到GND, P0.19为低电平;当卡拔出时,该引脚由电阻R26上拉为高电平。卡是否写保护的检测原理与卡是否完全插入到卡座中的检测原理相同。
2 SPI模式下对SD卡的操作
2.1 SPI模式下对SD卡的操作原理
对SD卡的操作都是由一些命令来实现。所有的命令都是由48个数据位组成,其结构如表1所示。通过向SD卡发送相应的命令并读取相应的响应来实 现对SD卡的控制。在对SD卡读写之前,首先要进行初始化操作,这是确保SD卡能在SPI模式下进行正常数据读写的前提。需要注意的是,在发送使SD卡空 闲命令CMD0之前至少等待74个时钟,确保SD卡进入SPI模式。初始化完成之后,如果使用默认的块读写长度512字节,就可进行SD卡的读写。当然, 也可用CMD16来设置SD卡的块读取长度,可以是1~512字节之间的任意值,但是对SD的写过程则要求块长度必须为512字节。无论是MMC卡的读还 是写,都要求在读写命令发送后有数据起始令牌FEH,数据传输结束之后有2个字节的循环冗余编码CRC(Cyclic Re-dundancyCodes)。
2.2 SPI模式下SD卡的操作流程
如图2所示,上电后, SD卡自动进入SD模式。单片机此时使CS信号为低电平,并向SD卡发送RESET命令(CMD0),如果SD卡有0x01作为响应,则表明SD卡进入 SPI模式下的Idle状态。在等待至少74个时钟周期后,向SD卡发SEND_OP_COND(CMD1)命令,当轮询到SD卡的响应为0x00时,说 明SD卡已经准备好接收读写操作了。
对SD卡的基本读写操作命令有:数据块读命令READ_BLOCK (CMD17)、多数据块读命令READ _MULTIPLE_BLOCK(CMD18)和数据块写命令WRITE_BLOCK(CMD24)、多数据块写命令 WRITE_MULTIPLE_BLOCK(CMD25)。在应用时,可以连续发送6个字节来实现上述的命令格式。
相关文章
- 2023-04-19激光雷达测量大气温度的傅里叶分析方法
- 2024-08-16直角坐标采样时的圆柱度误差数学模型
- 2024-09-20逆向布莱顿循环多元非共沸混合工质组分变化对系统性能的影响
- 2023-12-07基于Simulation设计洞察图解进行转盘支座的优化
- 2024-05-09大坝用双轴垂直摆倾斜仪的设计



请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。