ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:1.10MB ,
资源ID:5124462      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5124462.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SD卡资料编写.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SD卡资料编写.docx

1、SD卡资料编写SD卡资料整理1、 概述SD卡高度集成闪存,具备串行和随机存取能力。可以通过专用优化速度的串行接口访问,数据传输可靠。接口允许几个卡垛叠,通过他们的外部连接。接口完全符合最新的消费者标准,叫做SD卡系统标准,由SD卡系统规范定义。 SD卡系统是一个新的大容量存储系统,基于半导体技术的变革。它的出现,提供了一个便宜的、结实的卡片式的存储媒介,为了消费多媒体应用。SD卡可以设计出便宜的播放器和驱动器而没有可移动的部分。一个低耗电和广供电电压的可以满足移动电话、电池应用比如音乐播放器、个人管理器、掌上电脑、电子书、电子百科全书、电子词典等等。使用非常有效的数据压缩比如MPEG,SD卡可

2、以提供足够的容量来应付多媒体数据。安全数字存储卡(Secure Digital Memory Card, SDC)作为事实上的标准存储卡广泛应用于移动设备上。SDC 曾作为高层兼容多媒体卡(Multi Media Card,MMC)进行开发。SDC设备一般也兼容 MMC。还存在一些功能相同但尺寸更小的版本,如 RS-MMC、miniSD 和microSD。 MMC/SDC 内置一个微控制器,在卡内部执行 flash 存储操作(擦写、读取、写入、错误控制和功耗平衡(Wearleveling)。数据以 512 字节为单位在存储卡与主机控制器之间传输,从高层看来,卡可以被看作是通用硬盘设备。当前定义

3、的用于存储卡的文件系统为 FAT12/16 并使用 FDISK 分区规则。FAT32 仅用于大容量卡(=4G)。SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍SPI模式。2、 引脚SD卡引脚如下图所示:SD卡外部引脚图micro-SD卡-本卡的物理尺寸见【1】。SPI模式下SD各管脚名称为.JPG注意:SPI模式时,这些信号需要在主机端用10100K欧的电阻上拉【2a】p4,如下表的相应引脚说明【2a】p5。输入端是MOS管的G极,输出端很可能是OC输出或者输出电阻较大,需要增加上拉电阻以消除SD卡输入输出信号线上的不确定性与干扰。也可以采用缓冲门方

4、式,如【3】(我们现在购买并使用的)的电路为:缓冲整形元件采用74VHC125,但该电路中的电阻绘制错误,应该是上拉电阻而不是串联电阻,如需要限流应该在每一个与外界连接的线上串联而不是只串联R4。另外的在网上下载的几种连接图如下。SD卡的几种连线图。上面的连接可能没有必要。5529实验板的连接如下。该电路图仅在片选端CS上增加上拉电阻,而此处并不存在电平不确定的问题,因而是没有必要的。很可能是MSP430的SPI口一旦设置,则在空闲时段SPI各口线仍保持确定的电平,故,不需要上拉电阻,另外,由于5529试验板的SD卡距离单片机很近,干扰很小,不需要采用74VHC125进行整形与缓冲。 可以在现

5、有板上逐步拆解进行试验,拆解至不能正常运行的程度为止。不过为了增加可靠性,还是增加一些上拉电阻好一些。SD卡卡座:3、 寄存器内部结构如下图。SD卡内部图.JPGSD卡中的微控制器SDControler在与主机通讯的过程中,根据命令与寄存器中的参数决定如何操作。SD卡中的寄存器有【4】p7:在SPI模式下,只有OCR、CID、CSD3个寄存器可以访问【2b】p18。各寄存器的进一步解释如下【4】p10:1)、OCR寄存器32 位的操作条件寄存器OCR(Operating Conditions Register)存储了 VDD 电压范围。下图的例子中,OCR的414位为0,1523位全为1,表示

6、SD卡的电压范围是2.73.6V。2)、CID寄存器CID (Card Identification) 寄存器长度为 16 个字节,是SD卡唯一的标识号,包括生产厂家、生产日期、产品序列号等, 该号在卡生产厂家编程后无法修改。3)、CSD寄存器CSD(Card Specific Data) 寄存器包含访问卡数据所需的配置信息。其部分字节的意义如下表【2】p39。 见“搜索XX关键词sd卡 csd寄存器。见网页:SD/MMC相关寄存器的介绍,lwj103862095的专栏-博客频道-CSDN”,对CSD内容定义的结构变量如下。相应的读取CSD程序见附录1。typedef struct uint8

7、 CSDStruct; / CSD结构 uint8 SysSpecVersion; / 系统规范版本 uint8 Reserved1; / 保留 uint8 TAAC; / 读取时间1 uint8 NSAC; / 数据在CLK周期内读取时间2 uint8 MaxBusClkFrec; / 最大总线速度 uint16 CardComdClasses; / 卡命令集合 uint8 RdBlockLen; / 最大读取数据块长 uint8 PartBlockRead; / 允许读的部分块 uint8 WrBlockMisalign; / 非线写块 uint8 RdBlockMisalign; / 非

8、线读块 uint8 DSRImpl; / DSR条件 uint8 Reserved2; / 保留 uint32 DeviceSize; / 设备容量 uint8 MaxRdCurrentVDDMin; / 最小读取电流 VDD min uint8 MaxRdCurrentVDDMax; / 最大读取电流 VDD max uint8 MaxWrCurrentVDDMin; / 最小写入电流 VDD min uint8 MaxWrCurrentVDDMax; / 最大写入电流 VDD max uint8 DeviceSizeMul; / 设备容量乘积因子 uint8 EraseGrSize; /

9、擦出块大小 uint8 EraseGrMul; / 擦出扇区大小 uint8 WrProtectGrSize; / 写保护群大小 uint8 WrProtectGrEnable; / 写保护群使能 uint8 ManDeflECC; / Manufacturer default ECC uint8 WrSpeedFact; / 写速度因子R2W_FACTOR uint8 MaxWrBlockLen; / 最大写数据块长度 uint8 WriteBlockPaPartial; / 允许写的部分 uint8 Reserved3; / 保留 uint8 ContentProtectAppli; /

10、Content protection application uint8 FileFormatGrouop; / 文件系统群 uint8 CopyFlag; / 拷贝标志 uint8 PermWrProtect; / 永久写保护 uint8 TempWrProtect; / 暂时写保护 uint8 FileFormat; / 文件系统 uint8 ECC; / ECC code uint8 CSD_CRC; / CSD CRC uint8 Reserved4; / 始终为 1 SD_CSD; CSD记录了SD卡的一些技术参数,这些参数在产品说明书中应该可以看到,大部分内容是相同的,应该是只能读

11、取,不能改变,一般情况下无需关心。SD卡的寄存器与AD的寄存器不同,寄存器的作用较小,主要依靠命令进行不同的操作。4、 SPI模式协议 SD卡启动时处于SD模式。它将在CS信号有效(低电平)时接收到一个复位命令(CMD0),回应R1,表示进入SPI总线模式,否则,表示SD卡仍停留在SD模式。SPI总线模式下,默认的命令结构/协议CRC检查失效,由于电源开启时总是处于SD总线模式,CMD0后需要跟一个合法的CRC(即时CMD0使用SPI结构来发送)。一旦进入SPI总线模式,CRC失效。CMD0的完整值是:40 00 00 00 00 95H。 SD卡有设定好的复位顺序。在上电复位或软复位(DMD

12、0)后,进入静止状态,只能接收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、 主

13、要命令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。对于多块的写入,在每块前的数据标记为1111 1100B= 0xFCH。当出现

14、错误时,将用错误标记替代数据标记:6、 复位与初始化及读写操作 SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功【5】p6。这74个时钟,在SD卡上电后发送,用于使电状态稳定。CS 为低电平时发送命令 0,对卡进行复位。再发送若干个8位时钟,直到卡回应0x01H,即表示,卡在接收命令 0 成功时对 CS 信号进行了采样,若 CS 信号为低电平,使卡进入 SPI 模式并且回应 R1 进入空闲状态(R1=0

15、x01)。随后CS拉高,再发送8个时钟,时序如下图。由于命令 0 必须作为原生命令发送, CRC 字段必须包含有效值。卡一旦进入 SPI 模式, CRC 功能就被关闭,不再进行 CRC 校验【6】p6及【7】p2(或p147)及【2】5.1.7。在空闲状态,卡只接收命令 0、命令 1、命令 41、命令 58(读OCR) 和命令 59。其它的命令被拒绝执行。此时,可以读 OCR 寄存器并查看卡的工作电压。若系统供电不在卡的正常供电范围,则卡不工作。注意,所有的卡工作电压范围为 2.73.6V。当接收到命令 1 时,卡执行初始化过程。若要检测初始化过程是否结束,主机需持续发送命令 1 并查看回应直

16、到初始化结束。当卡成功完成初始化,应答 R1 的空闲状态位将清零(R1 由 0x01 变为 0x00)。再拉高CS、发送8个空时钟。初始化过程将持续几百毫秒(卡容量越大,时间越长),故而需要考虑超时时间的设定。在空闲状态位被清零后,卡可以接收正常的读写命令【6】p7及【7】p3(或148)。CMD1命令的构成为0x01H|0x40H= 0x41H,同理可求出其它命令【7】p3。从图中可知,CMD1为41 00 00 00 00 FF。单块的读操作时序图如下【7】p4。单块的写操作时序图如下【7】p5。上述图中的NCR、NAC、NWR表示SD卡的控制器完成操作的等待时间,其具体数据见【2b】5.

17、1.9.2及【2】p106 Table-1 A-1,如下表。其中的TAAC、NSAC位于CSD寄存器参数表Table 3-10【2】3.5.3或p39的第3、4条目,属于SD卡的交流参数,其部分值见【2】41 Table3-12,通过这些参数可以计算等待时间范围如The total read access time NAC等。考虑CSD寄存器参数表Table 3-10【2】3.5.3或p39的第24条目R2W_FACTOR可以计算读写时间范围,见【2】p106 Table-1 A-1实际计算需要读取CSD的值,比较麻烦,主要以编程运行调试为主。相应的编程详见【7】p7-end。7、 读写命令C

18、编程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-寄存器。寄存器

19、长度为128,16字节* EntryParameter : csd 寄存器* ReturnValue : 返回操作状态:成功-0*/uint8 SD_GetCSDRegister(SD_CSD *csd) uint8 i;uint8 csdTable16;uint8 count = 0xFF;uint8 rvalue = SD_RESPONSE_FAILURE; / 返回值SD_Enable(0); / SD卡使能if (SD_SendCmd(CMD9,0x00,0xFF) = SD_RESPONSE_NO_ERROR) while (SD_ReadByte() != SD_START_SIN

20、GLE_BLOCK_READ) & count) / 等待数据接收开始,收到0xFE表示开始 count-; / 等待超时if (count != 0x00)for (i=0; iCSDStruct = (csdTable0 & 0xC0) 6; / Byte 0csd-SysSpecVersion = (csdTable0 & 0x3C) 2;csd-Reserved1 = csdTable0 & 0x03;csd-TAAC = csdTable1; / Byte 1csd-NSAC = csdTable2; / Byte 2csd-MaxBusClkFrec = csdTable3; /

21、Byte 3csd-CardComdClasses = csdTable4 CardComdClasses |= (csdTable5 & 0xF0) 4; / Byte 5csd-RdBlockLen = csdTable5 & 0x0F;csd-PartBlockRead = (csdTable6 & 0x80) 7; / Byte 6csd-WrBlockMisalign = (csdTable6 & 0x40) 6;csd-RdBlockMisalign = (csdTable6 & 0x20) 5;csd-DSRImpl = (csdTable6 & 0x10) 4;csd-Rese

22、rved2 = 0;csd-DeviceSize = (csdTable6 & 0x03) DeviceSize |= (csdTable7) DeviceSize |= (csdTable8 & 0xC0) 6; / Byte 8csd-MaxRdCurrentVDDMin = (csdTable8 & 0x38) 3;csd-MaxRdCurrentVDDMax = (csdTable8 & 0x07);csd-MaxWrCurrentVDDMin = (csdTable9 & 0xE0) 5; / Byte 9csd-MaxWrCurrentVDDMax = (csdTable9 & 0

23、x1C) 2;csd-DeviceSizeMul = (csdTable9 & 0x03) DeviceSizeMul |= (csdTable10 & 0x80) 7; / Byte 10csd-EraseGrSize = (csdTable10 & 0x40) 6;csd-EraseGrMul = (csdTable10 & 0x3F) EraseGrMul |= (csdTable11 & 0x80) 7; / Byte 11csd-WrProtectGrSize = (csdTable11 & 0x7F);csd-WrProtectGrEnable = (csdTable12 & 0x

24、80) 7; / Byte 12csd-ManDeflECC = (csdTable12 & 0x60) 5;csd-WrSpeedFact = (csdTable12 & 0x1C) 2;csd-MaxWrBlockLen = (csdTable12 & 0x03) MaxWrBlockLen |= (csdTable13 & 0xC0) 6; / Byte 13csd-WriteBlockPaPartial = (csdTable13 & 0x20) 5;csd-Reserved3 = 0;csd-ContentProtectAppli = (csdTable13 & 0x01);csd-

25、FileFormatGrouop = (csdTable14 & 0x80) 7; / Byte 14csd-CopyFlag = (csdTable14 & 0x40) 6;csd-PermWrProtect = (csdTable14 & 0x20) 5;csd-TempWrProtect = (csdTable14 & 0x10) 4;csd-FileFormat = (csdTable14 & 0x0C) 2;csd-ECC = (csdTable14 & 0x03);csd-CSD_CRC = (csdTable15 & 0xFE) 1; / Byte 15csd-Reserved4 = 1;return rvalue;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1