微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 浅谈dsPIC33F系列DSC的SD存储卡接口设计

浅谈dsPIC33F系列DSC的SD存储卡接口设计

时间:01-04 来源:互联网 点击:

引 言

SD卡是Secure Digital Card卡的简称,直译成汉语就是“安全数字卡”,是由日本松下公司、东芝公司和美国SANDISK公司共同开发研制的全新的存储卡产品。SD存储卡是一个完全开放的标准(系统),多用于MP3、数码摄像机、数码相机、电子图书、AV器材等等,尤其是被广泛应用在超薄数码相机上。SD卡在外形上同MultiMedia Card卡保持一致,大小尺寸比MMC卡略厚,容量也大很多。并且兼容MMC卡接口规范。不由让人们怀疑SD卡是MMC升级版。另外,SD卡为9引脚,目的是通过把传输方式由串行变成并行,以提高传输速度。它的读写速度比MMC卡要快一些,同时,安全性也更高。SD卡最大的特点就是通过加密功能,可以保证数据资料的安全保密。它还具备版权保护技术,所采用的版权保护技术是DVD中使用的CPRM技术(可刻录介质内容保护)。

SD卡身材小巧,一般消费者在购买之前不会有太多了解,因此从外观上辨别有些困难,下面为大家介绍一下市场上常见的SanDisk牌SD卡真假的辨别方法: 首先是看存储卡本身, sandisk正品储存卡都在正面贴有激光变彩标签,不同角度都会产生激光色彩变化。其次是国内代理的行货正品卡,均采用了与上面相类似的塑料封装的包装形式,但是右下的“5年保证”的字样和日文均改为了图形表明的5年质保。另外,还可以从SD卡底部是否有缺口来进行最简单识别,由于正品 SanDisk 牌 SD 卡背面产地上方的编号是惟一的,并可通过 800 电话查询真伪,但据说这一查询系统目前尚未做好。

Microchip公司的DSPIC33F系列通用DSC(数字信号控制器),是在16位MCU架构基础之上添加了DSP引擎,从而具有数字信号处理功能的微控制器产品。该系列DSC集成了DCI(数据转换器)接口,尤其适用于语音和音频的应用。

本文首先简要介绍SD卡的相关规范,之后利用dsPIC33FJ64GP706通用DSC设计了SD卡接口电路,最后通过SPI模式实现了对SD卡的基本操作。

1 SD卡相关规范简介

SD联盟在2000年联合发布了SD卡规范1.O版本,包括3个部分:物理层规范,文件系统规范以及安全规范。SD卡规范V1.0采用FAT的文件系统,因此最大存储容量可以达到2 GB。2006年,SD卡规范V2.0发布。新规范根据容量定义了两种卡,即标准容量SD卡和大容量SD卡。前者和1.O版本保持兼容,后者由于采用了FAT32文件系统,存储容量突破了2 GB的限制。新规范定义的最大容量为32 GB。但是由于成本的原因,标准容量SD卡仍然是市场的主流产品。在以微控制器为核心的嵌入式系统中,主要使用SD卡的SPI。微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。

1.1 概 述

SD存储卡在2.7~3.6 V电压下正常工作,工作频率为0~25MHz。图1是普通SD卡的外形和引脚排列。在SPI模式时,第8和第9脚不使用。表1列出了各引脚在SPI模式时的定义和功能描述。

图中的WP是一个机械滑片,通过滑动到不同的位置来对SD卡进行写保护。

SD卡内部有6个和接口相关的寄存器:OCR、CID、CSD、RCA、DSR和SCR。它们只能通过各自对应的指令来访问。

1.2 SPI协议

系统上电之后,如果主机在将CS线声明为低电平的同时发送复位指令(CMDO),则SPI模式启用。SD卡在SPI模式下按字节进行通信,每一个指令和数据块都由数个字节组成并与CS信号对齐(也就是长度为8个时钟周期的整数倍)。

主机和SD卡之间是通过指令与响应来实现交互的。

图2给出了SPI模式下基本的指令与响应的时序。

图中一个方格代表一个字节,H为逻辑全“1”,L为逻辑全“O”,X代表未知,Z为高阻态。NCS、NEC和NCR都是包含N个8时钟周期,具体N的取值范围在SD卡规范中给出了详细的说明。

SD卡所有的指令,长度都是6字节。表2列出了指令格式。

在有效接收到主机发来的指令之后,SD卡将会把对应的响应数据段放在总线上,主机根据响应的内容判断SD卡的状态。所有的响应都是MSB优先传输。SD卡有4种类型的响应格式,分别为R1、R1b、R2、R3。

除了SEND_STATUS和READ_OCR指令外,其他指令的响应都是格式R1。格式R1的长度为1字节,并且最高位总是0。其余每位均是错误指示,在指令接收过程中发生了什么样的错误,对应的错误位就会是“1”。R1b和R1具有相同的格式,它将伴随一个附加的busy信号

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top