第34卷第7期
2012年07月
武汉工程大学学报 Vo1.34 No.7
J. Wuhan Inst.Tech. Ju1. 2012
文章编号:1674—2869(2012)07—0071—04
单片机控制高容量安全数字卡的应用设计
李文华 ,龚宸2
(1.湖北仙桃职业学院机械电子工程学院,湖北仙桃433000;
2.华中师范大学计算机与科学系,湖北武汉430000)
摘要:为了解决高容量安全数字卡在嵌入式系统中不能访问的问题,通过分析高容量安全数字卡与标准容
量安全数字卡的差异,提出了用串行外设接口访问控制高容量安全数字卡的方法,用飞思卡尔MC9S12XS128
单片机作为嵌入式微处理器,用宇瞻4千兆字节的高容量安全数字卡作为控制对象,设计了高容量安全数字
卡的控制电路和访问程序.先用单片机向高容量安全数字卡的指定扇区中写入数据,然后用单片机读取安全
数字卡中所写入的数据,最后对所读出的数据与所写入的数据进行比较.实验表明,单片机所读出的数据与
写入高容量安全数字卡的数据一致,采用串行外设接口访问控制高容量安全数字卡可以实现嵌入式系统的
存储器升级.
关键词:嵌入式系统;安全数字卡;存储器升级
中图分类号:TP37 文献标识码:A doi:10.3969/j.issn.1674—2869.2012.07.015
O 引 言
高容量安全数字卡广泛应用在含有视频功能
的嵌入式系统 1 J、笔记本电脑中,对高容量安全数
字卡的访问控制成为研究的热点.在含有视频拍
量上的差异外,在使用控制上还存在着以下几方
面的差别:
(1)SDI ̄C卡只支持块访问,不支持字节访
问,块的大小固定为一个扇区512字节;SDSC卡
既支持块访问,又支持字节访问,块的大小由用户
指定.
(2)SDHC卡所使用的文件系统是FAT32,不
摄功能的嵌入式系统中,常用SD卡(Secure
Digital card——安全数字卡)保存系统拍摄的视
频,以便用计算机进一步处理嵌入式系统中所拍
摄到的数据.随着拍摄时间的增加和拍摄功能的
增强,选用最高容量不超过2 GB的SDSC卡
(Standard Capacity Secure Digital Card——标准容
能在FAT12/16文件系统中使用;SDSC卡使用的
文件系统是FAT12/16,在FAT32文件系统中也可
以访问SDSC卡.
(3)SD卡除了拥有SDSC卡的全部命令集外,
还增加了许多命令.其中,SPI模式中新增加了
CMD8命令,用来识别SD卡的接口类型.CMD8命
令的格式与其他SPI命令的格式相同,命令代码
为0x48.
量安全数字卡)很难满足系统对存储卡的容量要
求,客观上需要嵌入式系统选用容量为4GB一
32GB的SDHC卡(High Capacity Secure Digital
Card——高容量安全数字卡).SDHC卡是近来按
Ver2.0规范生产的SD卡,与按Ver1.1规范生产
的SDSC卡存在较大的差异,为了解决嵌入式系统
(4)块访问命令参数的含义不同.在SDSC卡
中,6个块访问命令CMD17、CMD18、CMD24、
CMD25、CMD32、CMD33的参数含义是SD卡的字
中高容量SD卡的访问控制问题,本文从应用的角
度出发,以MC9S12XS12单片机控制Apaccr(宇 节地址.在SDHC卡中块访问命令虽然也是这6
个命令,但其参数的含义为SD卡的块地址(扇区
地址).
瞻)4GB的SD卡为例,详细地讨论SDHC卡的控
制设计.
1 SDHC卡与SDSC卡在使用上的主
2硬件电路设计
要差异
SDHC卡的内部结构与SDSC卡不同,除了容
收稿日期:2012—04—24
(5)初始化过程不同.
SDHC卡是在SDSC卡的基础上发展起来的,
作者简介:李文华(1966一),男,湖北仙桃人,副教授.研究方向:嵌入式系统开发与应用
72 武汉工程大学学报 第34卷
它们的引脚数都是9脚,引脚分布相同,都具有sD
和SPI两种工作模式,用单片机控制SDHC卡可以
采用SPI模式 控制.
MC9S12XS128单片机是带有SPI口的CMOS
单片机 J,其工作电压为3.135~5.5 V,SD卡的
工作电压为2.7~3.6 V,它们都采用3.3 V电源
供电时,可用MC9S12XS128的SPI口直接控制SD
卡.MC9S12XS128控制宇瞻4 GB的SDHC卡的硬
件电路 如图1所示
3.3 V
RESET U
SCK0 S(:LK
MOS10 2
DI
SS0 1
EXTAlJ CS
MIS00 7 DO
XTAI 6 1
l Uss2
图1 单片机控制SD卡的硬件电路
Fig.1 Circuit of controlling SD card based on MCU
图1中, l为4.7 klq的电阻,R2为100 n
的电阻,尺3为1 Mr/的电阻,C1为0.O1 F的电
容,S1为复位按钮,C2、c3为22PF的电容,Y为
16 MHz的晶振. l、 、C1、S1构成了单片机的复
位电路,c2、c3、Y、R3为单片机的振荡电路.
3软件程序设计
3.1 SPI初始化程序
SDHC卡工作在SPI模式时,一次数据传输
期内cS引脚必须保护为低电平,数据传输结束后
需将CS置为高电平.一个字节的数据传输方向
是,高字节在先,低字节在后.SDHC卡输出数发生
在时钟的下降沿之后,SDHC卡接收数据时时钟的
上升沿锁存数据.在SDHC卡的初化过程中,SPI
的时钟频率为100~400 kHz,初始化结束后,SPI
的时钟频率为0~6 MHz.为了实现单片机与
SDHC卡通信,单片机的SPI口应按SDHC卡的时
序要求工作 j.用MC9S12XS128单片机控制宇瞻
4 GB的SDHC卡时,单片机的SPI口初始化程序
如下:
void SPI
—Init(void)
{MODRR=0;
MODRR
—MODRR4=1;//使用PM口
DDRMI=0x38;//SCKO=1,MOSI=1,
SSO=1
DDRM&=(~0X04);//MISO=0输入
SP10CR1=0x5E://CPOL=1.CPHA=1
SP10CR2=0x00:
SPIOBR=0x07;//SPI速率:3l2.5 kHz}
3.2 SD卡的初始化程序
上电后,SD卡处于SD模式,采用SPI模式访
问SD卡时必须先将SD卡的工作模式转换成SPI
模式,然后用SPI模式命令访问SD卡中的存储
器.初始化SD卡的的主要任务是,判断卡槽中的
SD卡是何种SD卡,并将SD卡的工作模式设置成