SD卡资料编写Word格式.docx

上传人:b****5 文档编号:8343330 上传时间:2023-05-11 格式:DOCX 页数:21 大小:1.10MB
下载 相关 举报
SD卡资料编写Word格式.docx_第1页
第1页 / 共21页
SD卡资料编写Word格式.docx_第2页
第2页 / 共21页
SD卡资料编写Word格式.docx_第3页
第3页 / 共21页
SD卡资料编写Word格式.docx_第4页
第4页 / 共21页
SD卡资料编写Word格式.docx_第5页
第5页 / 共21页
SD卡资料编写Word格式.docx_第6页
第6页 / 共21页
SD卡资料编写Word格式.docx_第7页
第7页 / 共21页
SD卡资料编写Word格式.docx_第8页
第8页 / 共21页
SD卡资料编写Word格式.docx_第9页
第9页 / 共21页
SD卡资料编写Word格式.docx_第10页
第10页 / 共21页
SD卡资料编写Word格式.docx_第11页
第11页 / 共21页
SD卡资料编写Word格式.docx_第12页
第12页 / 共21页
SD卡资料编写Word格式.docx_第13页
第13页 / 共21页
SD卡资料编写Word格式.docx_第14页
第14页 / 共21页
SD卡资料编写Word格式.docx_第15页
第15页 / 共21页
SD卡资料编写Word格式.docx_第16页
第16页 / 共21页
SD卡资料编写Word格式.docx_第17页
第17页 / 共21页
SD卡资料编写Word格式.docx_第18页
第18页 / 共21页
SD卡资料编写Word格式.docx_第19页
第19页 / 共21页
SD卡资料编写Word格式.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SD卡资料编写Word格式.docx

《SD卡资料编写Word格式.docx》由会员分享,可在线阅读,更多相关《SD卡资料编写Word格式.docx(21页珍藏版)》请在冰点文库上搜索。

SD卡资料编写Word格式.docx

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;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2