1 / 18
文档名称:

SD卡引脚及spi模式基本操作过程.doc

格式:doc   大小:293KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SD卡引脚及spi模式基本操作过程.doc

上传人:花花世界 2019/4/11 文件大小:293 KB

下载得到文件列表

SD卡引脚及spi模式基本操作过程.doc

相关文档

文档介绍

文档介绍:膃SD卡引脚及spi模式基本操作过程膁(摘自网络)芀对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。薄SD卡的引脚定义芃薂SD卡引脚功能详述:蚈引脚薇编号莃SD模式虿SPI模式莆名称蒃类型肀描述袇名称膅类型薃描述蒀1蕿CD/DAT3***IO或PP蚃卡检测/袁数据线3肇#CS羆I螃片选节2蝿CMD蚅PP螂命令/葿回应***DI蒄I袂数据输入袀3衿VSS1蒇S羂电源地芁VSS莇S芆电源地肂4蚂VDD聿S肅电源膂VDD肃S薆电源肈5节CLK腿I芈时钟袆SCLK节I薀时钟羀6薅VSS2莂S羁电源地蒈VSS2莄S蒁电源地莂7膀DAT0莇IO或PP薁数据线0葿DO薈O或PP膆数据输出蚁8袀DAT1芀IO或PP羅数据线1羅RSV芁螈羈9肅DAT2蚂IO或PP葿数据线2螇RSV膅肃羇注:S:电源供给I:输入O:采用推拉驱动的输出薅PP:采用推拉驱动的输入输出芅SD卡SPI模式下与单片机的连接图:艿虿SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。芄SPI方式驱动SD卡的方法莅SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。蚀1),以实现各项操作。命令格式如下:蒅肁命令的传输过程采用发送应答机制,过程如下:衿肆每一个命令都有自己命令应答格式。在SPI模式中定义了三种应答格式,如下表所示:薄字节蒂位芇含义袅1薄7蕿开始位,始终为0蚄6蚄参数错误蒇5蚇地址错误莁4膈擦除序列错误袄3螁CRC错误膄2羄非法命令莈1芇擦除复位荿0肀闲置状态羆膄字节螀位蒈含义螅1膃7膁开始位,始终为0薄6芃参数错误蚈5薇地址错误虿4莀擦除序列错误蒃3肀CRC错误膅2薃非法命令蕿1***擦除复位袁0肇闲置状态羆2螃7节溢出,失败羂3芁卡控制器错误芆2肂未知错误聿1肅写保护擦除跳过,锁/解锁失败肃0薆锁卡肈节字节腿位芈含义袆1节7薀开始位,始终为0薅6莂参数错误蒈5莄地址错误莂4膀擦除序列错误薁3葿CRC错误膆2蚁非法命令芀1羅擦除复位芁0螈闲置状态羈2~5肅全部蚂操作条件寄存器,高位在前葿写命令的例程:螇C程序膅//-------------------------------------------------------------------------肃向SD卡中写入命令,并返回回应的第二个字节羇//-------------------------------------------------------------------------mand_SD(unsignedchar*CMD)芅{艿unsignedchartmp;虿unsignedcharretry=0;芄unsignedchari;莅//禁止SD卡片选蚀SPI_CS=1;肇//发送8个时钟信号莇Write_Byte_SD(0xFF);蒅//使能SD卡片选肁SPI_CS=0;衿//向SD卡发送6字节命令肆for(i=0;i<0x06;i++)薄{蒂Write_Byte_SD(*CMD++);芇}袅//获得16位的回应薄Read_Byte_SD();//readthefirstbyte,{//读取后8位蚄tmp=Read_Byte_SD();蚄retry++;羀}蒇while((tmp==0xff)&&(retry<100));蚇return(tmp);螄}莁初始化膈SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成功后,应尽量提高SPI的速率。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成