SD卡资料编写Word文档下载推荐.docx
- 文档编号:18091426
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:21
- 大小:1.10MB
SD卡资料编写Word文档下载推荐.docx
《SD卡资料编写Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SD卡资料编写Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。
SD卡的几种连线图。
上面的连接可能没有必要。
5529实验板的连接如下。
该电路图仅在片选端CS上增加上拉电阻,而此处并不存在电平不确定的问题,因而是没有必要的。
很可能是MSP430的SPI口一旦设置,则在空闲时段SPI各口线仍保持确定的电平,故,不需要上拉电阻,另外,由于5529试验板的SD卡距离单片机很近,干扰很小,不需要采用74VHC125进行整形与缓冲。
可以在现有板上逐步拆解进行试验,拆解至不能正常运行的程度为止。
不过为了增加可靠性,还是增加一些上拉电阻好一些。
SD卡卡座:
3、寄存器
内部结构如下图。
SD卡内部图.JPG
SD卡中的微控制器SDControler在与主机通讯的过程中,根据命令与寄存器中的参数决定如何操作。
SD卡中的寄存器有【4】p7:
在SPI模式下,只有OCR、CID、CSD3个寄存器可以访问【2b】p18。
各寄存器的进一步解释如下【4】p10:
1)、OCR寄存器
32位的操作条件寄存器OCR(OperatingConditionsRegister)存储了VDD电压范围。
下图的例子中,OCR的4~14位为0,15~23位全为1,表示SD卡的电压范围是2.7~3.6V。
2)、CID寄存器
CID(CardIdentification)寄存器长度为16个字节,是SD卡唯一的标识号,包括生产厂家、生产日期、产品序列号等,该号在卡生产厂家编程后无法修改。
3)、CSD寄存器
CSD(CardSpecificData)寄存器包含访问卡数据所需的配置信息。
其部分字节的意义如下表【2】p39。
见“搜索XX关键词sd卡csd寄存器。
见网页:
SD/MMC相关寄存器的介绍,lwj103862095的专栏-博客频道-CSDN”,对CSD内容定义的结构变量如下。
相应的读取CSD程序见附录1。
typedefstruct
{
uint8
CSDStruct;
//CSD结构
SysSpecVersion;
//系统规范版本
Reserved1;
//保留
TAAC;
//读取时间1
NSAC;
//数据在CLK周期内读取时间2
MaxBusClkFrec;
//最大总线速度
uint16CardComdClasses;
//卡命令集合
RdBlockLen;
//最大读取数据块长
PartBlockRead;
//允许读的部分块
WrBlockMisalign;
//非线写块
RdBlockMisalign;
//非线读块
DSRImpl;
//DSR条件
Reserved2;
uint32DeviceSize;
//设备容量
MaxRdCurrentVDDMin;
//最小读取电流@VDDmin
MaxRdCurrentVDDMax;
//最大读取电流@VDDmax
MaxWrCurrentVDDMin;
//最小写入电流@VDDmin
MaxWrCurrentVDDMax;
//最大写入电流@VDDmax
DeviceSizeMul;
//设备容量乘积因子
EraseGrSize;
//擦出块大小
EraseGrMul;
//擦出扇区大小
WrProtectGrSize;
//写保护群大小
WrProtectGrEnable;
//写保护群使能
ManDeflECC;
//ManufacturerdefaultECC
WrSpeedFact;
//写速度因子R2W_FACTOR
MaxWrBlockLen;
//最大写数据块长度
WriteBlockPaPartial;
//允许写的部分
Reserved3;
ContentProtectAppli;
//Contentprotectionapplication
FileFormatGrouop;
//文件系统群
CopyFlag;
//拷贝标志
PermWrProtect;
//永久写保护
TempWrProtect;
//暂时写保护
FileFormat;
//文件系统
ECC;
//ECCcode
CSD_CRC;
//CSDCRC
Reserved4;
//始终为1
}SD_CSD;
CSD记录了SD卡的一些技术参数,这些参数在产品说明书中应该可以看到,大部分内容是相同的,应该是只能读取,不能改变,一般情况下无需关心。
SD卡的寄存器与AD的寄存器不同,寄存器的作用较小,主要依靠命令进行不同的操作。
4、SPI模式协议
SD卡启动时处于SD模式。
它将在CS信号有效(低电平)时接收到一个复位命令(CMD0),回应R1,表示进入SPI总线模式,否则,表示SD卡仍停留在SD模式。
SPI总线模式下,默认的命令结构/协议CRC检查失效,由于电源开启时总是处于SD总线模式,CMD0后需要跟一个合法的CRC(即时CMD0使用SPI结构来发送)。
一旦进入SPI总线模式,CRC失效。
CMD0的完整值是:
400000000095H。
SD卡有设定好的复位顺序。
在上电复位或软复位(DMD0)后,进入静止状态,只能接收4条合法的命令:
CMD1、CMD41、CMD59、CMD58。
Host必须连续发送CMD1,直到in-idle-state位置0,表示初始化完成,可以接收下一命令。
SD卡依靠时钟进行工作。
Host必须额外的8个时钟信号给卡完成操作,在此期间,忽略CS。
Host可以在卡忙状态时关闭时钟信号。
SD卡将去完成这个烧录操作,然而,Host必须提供一个时钟信号给SD卡来关闭“忙”信号。
写入/檫除超时是因为超过了:
1)设定时间的100倍,2)250mS。
所有命令的长度均为6字节,首先发MSB,其格式为:
当SPI模式遇到问题时,将用一个错误来回答(替代原来的数据块)。
5、主要命令
SPI下支持的命令类型如下标“+”所示【2】5.2.2。
各命令的意义如下【2】5.2.2.1。
如果一个命令不需要参数,则相应的为清0。
详见【2b】p12、p13。
在每个命令(除SEND_STATUS)之后,回应R1,其MSB为0,其余位置1则表示发生了相应的错误,如下图。
写入单块数据操作时序图:
写入多块数据操作时序图:
详见【2b】p5、p6。
上图所指的“数据应答”格式如下。
数据令牌(标记)
【2b】p17及【2】5.2.4是读写操作时,用于识别数据块的标记。
对于单、多块的读取及单块的写入,数据标记为0xFEH。
对于多块的写入,在每块前的数据标记为11111100B=0xFCH。
当出现错误时,将用错误标记替代数据标记:
6、复位与初始化及读写操作
SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。
在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。
在刚开始要先发送至少74个时钟信号,这是必须的。
在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功【5】p6。
这74个时钟,在SD卡上电后发送,用于使电状态稳定。
CS为低电平时发送命令0,对卡进行复位。
再发送若干个8位时钟,直到卡回应0x01H,即表示,卡在接收命令0成功时对CS信号进行了采样,若CS信号为低电平,使卡进入SPI模式并且回应R1进入空闲状态(R1=0x01)。
随后CS拉高,再发送8个时钟,时序如下图。
由于命令0必须作为原生命令发送,CRC字段必须包含有效值。
卡一旦进入SPI模式,CRC功能就被关闭,不再进行CRC校验【6】p6及【7】p2(或p147)及【2】5.1.7。
在空闲状态,卡只接收命令0、命令1、命令41、命令58(读OCR)和命令59。
其它的命令被拒绝执行。
此时,可以读OCR寄存器并查看卡的工作电压。
若系统供电不在卡的正常供电范围,则卡不工作。
注意,所有的卡工作电压范围为2.7~3.6V。
当接收到命令1时,卡执行初始化过程。
若要检测初始化过程是否结束,主机需持续发送命令1并查看回应直到初始化结束。
当卡成功完成初始化,应答R1的空闲状态位将清零(R1由0x01变为0x00)。
再拉高CS、发送8个空时钟。
初始化过程将持续几百毫秒(卡容量越大,时间越长),故而需要考虑超时时间的设定。
在空闲状态位被清零后,卡可以接收正常的读写命令【6】p7及【7】p3(或148)。
CMD1命令的构成为0x01H|0x40H=0x41H,同理可求出其它命令【7】p3。
从图中可知,CMD1为4100000000FF。
单块的读操作时序图如下【7】p4。
单块的写操作时序图如下【7】p5。
上述图中的NCR、NAC、NWR表示SD卡的控制器完成操作的等待时间,其具体数据见【2b】5.1.9.2及【2】p106Table-1A-1,如下表。
其中的TAAC、NSAC位于CSD寄存器参数表Table3-10【2】3.5.3或p39的第3、4条目,属于SD卡的交流参数,其部分值见【2】41Table3-12,通过这些参数可以计算等待时间范围如ThetotalreadaccesstimeNAC等。
考虑CSD寄存器参数表Table3-10【2】3.5.3或p39的第24条目R2W_FACTOR可以计算读写时间范围,见【2】p106Table-1A-1
实际计算需要读取CSD的值,比较麻烦,主要以编程运行调试为主。
相应的编程详见【7】p7-end。
7、读写命令C编程
8、其它
9、补充
参考资料
【1】micro-SD卡-本卡物理尺寸.DOC
【2】(英文原文)SD卡的官方资料.pdf
【2a】
(中文翻译部分)SD卡中文翻译.doc
【2b】
(中文翻译部分)SD卡-SPI总线协议.pdf
【3】【3】MicroSD卡适配器(文件夹)
【4】SD卡详细资料.pdf
【5】SD卡在单片机上的应用以及SD卡引脚-电路图及工作原理介绍.doc
【6】SD卡编程指南.pdf
【7】51单片机读写SD卡.pdf
附录1
网站资料——CSD读取程序。
/**************************************************************************************
*FunctionName
:
SD_GetCSDRegister()
*Description
CSD-寄存器。
寄存器长度为128,16字节
*EntryParameter:
csd寄存器
*ReturnValue
返回操作状态:
成功-0
**************************************************************************************/
uint8SD_GetCSDRegister(SD_CSD*csd)
uint8i;
uint8csdTable[16];
uint8count=0xFF;
uint8rvalue=SD_RESPONSE_FAILURE;
//返回值
SD_Enable(0);
//SD卡使能
if(SD_SendCmd(CMD9,0x00,0xFF)==SD_RESPONSE_NO_ERROR)
while((SD_ReadByte()!
=SD_START_SINGLE_BLOCK_READ)&
&
count)
//等待数据接收开始,收到0xFE表示开始
count--;
//等待超时
}
if(count!
=0x00)
for(i=0;
i<
16;
i++)
csdTable[i]=SD_ReadByte();
SD_ReadByte();
//读CRC
rvalue=SD_RESPONSE_NO_ERROR;
//设置成功标志
SD_Enable
(1);
//清除SD卡片选
SD_WriteByte(0xFF);
//8个时钟脉冲的延迟
//把获取值放入CSD结构体中
csd->
CSDStruct
=(csdTable[0]&
0xC0)>
>
6;
//Byte0
SysSpecVersion
0x3C)>
2;
Reserved1
=csdTable[0]&
0x03;
TAAC
=csdTable[1];
//Byte1
NSAC
=csdTable[2];
//Byte2
MaxBusClkFrec
=csdTable[3];
//Byte3
CardComdClasses
=csdTable[4]<
<
4;
//Byte4
|=(csdTable[5]&
0xF0)>
//Byte5
RdBlockLen
=csdTable[5]&
0x0F;
PartBlockRead
=(csdTable[6]&
0x80)>
7;
//Byte6
WrBlockMisalign
0x40)>
RdBlockMisalign
0x20)>
5;
DSRImpl
0x10)>
Reserved2
=0;
DeviceSize
0x03)<
10;
|=(csdTable[7])<
//Byte7
|=(csdTable[8]&
//Byte8
MaxRdCurrentVDDMin
=(csdTable[8]&
0x38)>
3;
MaxRdCurrentVDDMax
0x07);
MaxWrCurrentVDDMin
=(csdTable[9]&
0xE0)>
//Byte9
MaxWrCurrentVDDMax
0x1C)>
DeviceSizeMul
1;
|=(csdTable[10]&
//Byte10
EraseGrSize
=(csdTable[10]&
EraseGrMul
0x3F)<
|=(csdTable[11]&
//Byte11
WrProtectGrSize
=(csdTable[11]&
0x7F);
WrProtectGrEnable
=(csdTable[12]&
//Byte12
ManDeflECC
0x60)>
WrSpeedFact
MaxWrBlockLen
|=(csdTable[13]&
//Byte13
WriteBlockPaPartial=(csdTable[13]&
Reserved3
ContentProtectAppli=(csdTable[13]&
0x01);
FileFormatGrouop
=(csdTable[14]&
//Byte14
CopyFlag
PermWrProtect
TempWrProtect
FileFormat
0x0C)>
ECC
0x03);
CSD_CRC
=(csdTable[15]&
0xFE)>
//Byte15
Reserved4
=1;
returnrvalue;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SD 资料 编写