下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 SD卡详解

SD卡详解.doc

SD卡详解

善良的聪
2014-01-09 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《SD卡详解doc》,可适用于IT/计算机领域

SD卡操作一、概述、简介SD卡操作一、概述、简介SD卡是基于flash的存储卡。SD卡和MMC卡的区别在于初始化过程不同。SD卡的通信协议包括SD和SPI两类。SD卡使用卡内智能控制模块进行FLASH操作控制包括协议、安全算法、数据存取、ECC算法、缺陷处理和分析、电源管理、时钟管理。、功能介绍特点)主机无关的FLASH内存擦除和编程读或写数据主机只要发送一个带地址的命令然后等待命令完成主机无需关心具体操作的完成。当采用新型的FLASH时主机代码无需更新。)缺陷管理)错误恢复)电源管理Flash每个扇区有大约万次的写寿命读没有限制。擦除操作可以加速写操作因为在写之前会进行擦除。SD总线模式NegotiatingOperationConditions当主机定义了SD卡不支持的电压范围时SD卡将处于非活动状态将忽略所有的总线传输。要退出非活动状态唯一的方法就是重新上电。SD卡获取和识别SD卡总线采用的是单主多从结构总线上所有卡共用时钟和电源线。主机依次分别访问每个卡每个卡的CID寄存器中已预编程了一个唯一的卡标识号用来区分不同的卡。主机通过READCID命令读取CID寄存器。CID寄存器在SD卡生产过程中的测试和格式化时被编程主机只能读取该号。DAT线上内置的上拉电阻用来侦测卡。在数据传输时电阻断开(使用ACMD)。卡状态卡状态分别存放在下面两个区域:卡状态(CardStatus)存放在一个位状态寄存器在卡响应主机命令时作为数据传送给主机。SD状态(SDStatus)当主机使用SDSTATUS(ACMD)命令时位以一个数据块的方式发送给主机。SDSTATUS还包括了和BUSWIDTH、安全相关位和扩展位等的扩展状态位。内存组织数据读写的基本单元是一个字节可以按要求组织成不同的块。Block:块大小可以固定也可以改变允许的块大小是实际大小等信息存储在CSD寄存器。Sector:和擦除命令相关由几个块组成。Sector的大小对每个设备是固定的大小信息存储在CSD寄存器。WPGroup:写保护单位。大小包括几个group写保护由一位决定对每个设备大小是固定的存储在CSD寄存器。读写操作SingleBlockMode:主机根据事先定义的长度读写一个数据块。由发送模块产生一个位的CRC校验码接受端根据校验码进行检验。读操作的块长度受设备sector大小(bytes)的限制但是可以最小为一个字节。不对齐的访问是不允许的每个数据块必须位于单个物理sector内。写操作的大小必须为sector大小起始地址必须与sector边界对齐。MultipleBlockMode:主机可以读写多个数据块(相同长度)根据命令中的地址读取或写入连续的内存地址。操作通过一个停止传输命令结束。写操作必须地址对齐。数据传输速率SD卡可以通过单数据线(DAT)或四根数据线(DATDAT)进行数据传输。单根数据线传输最大传输速率为Mbits四根数据线最大传输速率为Mbits。数据保护每个sector的数据通过ErrorCorrectionCode(ECC)进行保护。在写sector时生成ECC在读sector时检验ECC。如果发现错误在传输前进行纠正。数据擦除SD卡数据擦除的最小单位是sector。为了加速擦除操作多个sector可以同时擦除。为了方便选择第一个指令包含起始地址第二个指令包含结束地址在地址范围内的所有sector将被擦除。写保护两种写保护方式可供选择永久保护和临时保护两种方式都可以通过PROGRAMCSD指令进行设置。永久保护位一旦设置将无法清除。拷贝位通过CSD寄存器中的拷贝位(copybit)设置SD卡中的数据是原始数据还是拷贝数据。拷贝位一旦设置将无法清除在测试和格式化时使用。CSD寄存器所有SD卡的配置信息存储在CSD寄存器。通过SENDCSD读取PROGRAMCSD修改。SPI模式二、SD卡接口描述引脚和寄存器主机通过个引脚和SD卡相连SD模式引脚扩展数据线(DATDAT)上电后为输入SETBUSWIDTH命令执行后作为数据线。即使只有DAT使用所有数据线都和外部上拉电阻连接否则DATDAT(如果未被使用)的振荡输入将引起非期望的高电流损耗。上电后数据线输入K(K)欧姆的上拉(用来进行卡侦测和SPI模式选择)。用户可以在常规数据传输时通过SETCLRCARDDETECT(ACMD)命令分离上拉。SPI模式引脚寄存器名称宽度描述CID卡标识号RCA相对卡地址(Relativecardaddress):本地系统中卡的地址动态变化在主机初始化的时候确定*SPI模式中没有CSD卡描述数据:卡操作条件相关的信息数据SCRSD配置寄存器:SD卡特定信息数据OCR操作条件寄存器主机通过重新上电来重置(reset)卡。卡有它自身检测上电的电路当上电后卡状态切换到idle状态。也可以通过GOIDLE(CMD)指令来重置。SD卡总线拓扑SD总线有根通信线和三根电源供应线:²CMD命令线是双向信号线。主机和卡通过pushpull模式工作。²DAT数据线是双向信号线。主机和卡通过pushpull模式工作。²CLK时钟是从主机到卡的信号。CLK通过pushpull模式操作。²VDDVDD是所有卡的电源供应线。²VSS:VSS是根地线。在初始化的时候向每个卡分别发送命令允许应用检测卡并给物理槽(physicalslot)分配逻辑地址。数据通常分别传输给每个卡。然后为了方便处理卡堆栈初始化后所有命令同时发送给所有卡在命令数据包中包含了操作地址。SD总线允许动态配置数据线数目。上电后默认SD卡只用DAT作为数据传输线。初始化后主机可以改变总线宽度。这个特性使得在硬件开销和系统性能间取得平衡。SPI总线拓扑电气接口上电上电后包括热插入卡进入idle状态。在该状态SD卡忽略所有总线操作直到接收到ACMD命令。ACMD命令是一个特殊的同步命令用来协商操作电压范围并轮询所有的卡。除了操作电压信息ACMD的响应还包括一个忙标志表明卡还在powerup过程工作还没有准备好识别操作即告诉主机卡还没有就绪。主机等待(继续轮询)直到忙标志清除。单个卡的最大上电时间不能操作秒。上电后主机开始时钟并在CMD线上发送初始化序列初始化序列由连续的逻辑“”组成。序列长度为最大毫秒个时钟或supplyrampup时间。额外的个时钟(个时钟后卡已准备就绪)用来实现同步。每个总线控制器必须能执行ACMD和CMD。CMD要求MMC卡发送操作条件。在任何情况下ACMD或CMD必须通过各自的CMD线分别发送给每个卡。寄存器OCR(OperatingConditionsRegister)位的操作条件寄存器存储了VDD电压范围。SD卡操作电压范围为~V。然而从内存中访问数据的电压是~V。OCR显示了卡数据访问电压范围结构如下表所示。表OCR寄存器定义OCR位VDD电压范围保留~~~~~~~~~~~~~~~~~~~~保留卡上电状态位(忙)OCR结构如下图所示。如果第位(busybit)置位表明卡上电过程已结束。CID(CardIdentification)CID寄存器长度为个字节的卡唯一标识号该号在卡生产厂家编程后无法修改。SD和MMC卡的CID寄存器结构不一样。名称类型宽度CID位内容CID值厂商IDBinary:SD卡协会管理和分配xOEMApplicationID(OID)ASCII:识别卡的OEM或卡内容由制造商分配x,x产品名(PNM)ASCII:个ASCII字符SD产品版本(PRV)BCD:个二进制编码的十进制数产品版本()序列号(PSN)Binary:位无符号整数产品序列号保留:生成日期(MDT)BCD:yym(从年的偏移量)如:Apr=xCRC校验和(CRC)Binary:CRCCalculation:G(x)=xM(x)=(MIDMSB)*x(CINLSB)*xCRC=Remainder(M(x)*x)G(x)CRC未用:、格式为“nm”如“”表示为CSD(CardSpecificData)CSD寄存器包含访问卡数据所需的配置信息。SD卡和MMC卡的CSD不同。数据交互格式和卡容量通常SD卡分为个区:²用户区用户通过读写命令存储安全和非安全数据。²安全保护区(SecurityProtectedArea)版权保护应用程序用来保存安全相关数据通过SD安全规范中定义的条件验证后由主机使用安全的读写指令完成操作。安全保护区的大小大概是总大小的。三、SD卡协议SD总线协议SD总线通信是基于命令和数据位流方式的由一个起始位开始以一个停止位结束:命令命令是开始开始操作的标记。命令从主机发送一个卡(寻址命令)或所有连接的卡(广播命令)。命令在CMD线上串行传送。响应响应是从寻址卡或所有连接的卡(同步)发送给主机用来响应接受到的命令的标记。命令在CMD线上串行传送。数据数据可以通过数据线在卡和主机间双向传送。卡寻址通过会话地址方式实现地址在初始化的时候分配给卡。SD总线上的基本操作是commandresponse。数据传送采用块方式数据块后接CRC校验位操作包括单数据块和多数据块。多数据块更适合快速写操作多数据块传输当在CMD线出现停止命令时结束。数据传输可以在主机端设置采用单数据线或多数据线方式。块写操作在DAT数据线写操作期间使用忙信号无论用来传输的信号线数目是多少。命令格式如下所示:响应标记(token)根据内容不同具有四种格式标记长度。长度为位或位。数据块的CRC算法采用位的CCITT多项式。在命令行中MSB位首先传送LSB位最后传送。当使用宽总线模式时数据同时在根数据线上传输。开始位、结束位和CRC在每根数据线上传送。CRC对每根数据线单独计算。CRC状态响应和Busy信号只通过DAT由卡发送给主机。协议功能描述所有主机和SD卡间的通信由主机控制。主机发送下述两类命令:l广播命令广播命令发送给所有SD卡有些命令需要响应。l寻址(点对点)命令寻址命令只发送给具有相应地址的卡并需要从卡返回一个响应。对卡而言也有两类操作:l卡识别模式在重置(reset)后当主机查找总线上的新卡时处于卡识别模式。重置后SD卡将始终处于该模式直到收到SENDRCA命令(CMD)。l数据传输模式一旦卡的REC发布后将进入数据传输模式。主机一旦识别了所有总线上的卡后将进入数据传输模式。操作模式与卡状态关系:卡识别模式在卡识别模式主机重置所有处于卡识别模式的SD卡检验操作电压范围识别卡并请求卡发送相对卡地址RCA。操作对每个卡在各自的CMD线上单独进行所有的数据传送只使用CMD线。重置GOIDLESTATE(CMD)是软件重置命令设置每个SD卡进入Idle状态。处于Inactive状态的卡不受此命令影响。主机上电后所有SD卡进入Idle状态包括处于Inactive状态的卡。至少个时钟周期后才能开始总线传输。上电或CMD(重置)后所有SD卡的命令线处于输入模式等待下一个命令的起始位。卡通过一个默认的相对卡地址RCA(RCA=x)和默认驱动寄存器设置(最低速最高驱动电流)初始化。操作电压范围验证SD的物理规范标准要求所有SD卡能通过最小和最大供电电压间的任何电压和主机建立通信。然而数据传输时的最小和最大电压值在操作条件寄存器OCR中定义可能并不能覆盖所有的电压范围。SD卡主机希望通过读取卡的OCR寄存器获取合适的电压值或弹出卡。SD卡卡识别过程在识别时钟速率fOD下主机开始卡识别过程。SD卡的CMD线输出驱动是pushpull驱动。总线激活后主机要求卡发送它们的有效操作条件(ACMDprecedingwithAPPCMDCMDwithRCA=x)。ACMD命令的响应是卡的操作条件寄存器。相同的命令将发送给系统中所有的卡。不兼容的卡将进入Inactive状态。主机然后发送命令ALLSENDCID(CMD)到每个卡以获取每个卡的唯一标识CID号。未识别的卡通过CMD线发送CID号作为响应。当卡发送CID号后进入识别状态(IdentificationState)。此后主机发送CMD(SENDRELATIVEADDR)要求卡发布一个新的相对卡地址RCA地址比CID短在以后的数据传输模式中用来寻址卡。一旦获得RCA后卡状态变成就绪状态(Standbystate)。此时如果主机要求卡换成其他的RCA号可以通过发送另一个SENDRELATIVEADDR命令给卡要求发布一个新的RCA最后发布的RCA是实际使用的RCA。主机对系统中的每个卡重复识别过程。所有的SD卡初始化完以后系统将开始初始化MMC卡(如果有的话)使用MMC卡的CMD和CMD。数据传输模式直到主机知道所有CSD寄存器的内容fpp时钟速率必须保持在fOD,因为一些卡有操作频率限制。主机发送SENDCSD(CMD)获取卡定义数据(CardSpecificDataCSD寄存器)如块大小、卡存储容量、最大时钟速率等。CMD用来选择一个卡并将它置于传输状态(Transferstate)在任何时间只能有一个卡处于传输状态。如果已有一个卡处于传输状态它和主机的连接将释放并返回到Standby状态。当CMD以保留相对地址“x”发送时所有卡将返回到Standby状态。这可以用来识别新的卡而不重置其他已注册的卡。在这种状态下已有一个RCA地址的卡不响应识别命令(ACMD,CMD,CMD)。注意:当卡接收到一个带有不匹配RCA的CMD时卡将取消选中。在公用CMD线时选中一个卡时将自动不选中其他卡。因此在SD卡系统中主机具有如下功能:l初始化完成后在公用CMD线时不选中卡是自动完成的。l如果使用单独的CMD线需要关注不选中卡的操作在主机和选择的SD卡之间的所有数据通信是点对点的方式。所有寻址命令都需要响应。不同数据传输模式的关系如图所示使用如下步骤:l所有读数据命令可以在任何时候通过停止命令(stopcommand,CMD)中止。数据传输将中止卡回到传输状态(TransferState)。读命令有:块读命令(CMD)多块读命令(CMD)发送读保护(CMD)发送scr(ACMD)以及读模式的通用命令(CMD)。l所有写数据命令可以在任何时候通过停止命令(stopcommand,CMD)中止。在不选中卡命令CMD前写命令必须停止。写命令有:块写命令(CMDandCMD),写CID(CMD),写CSD(CMD),lockunlock命令(CMD)以及写模式通用命令(CMD)。l一旦数据传输完成卡将退出数据写状态并进入ProgrammingState(传输成功)或TransferState(传输失败)。l如果一个快写操作停止而且最后一块块长度和CRC是有效的那么数据可以被操作(programmed)。l卡可能提供块写缓冲。这意味着在前一块数据被操作时下一块数据可以传送给卡。如果所有卡写缓冲已满只要卡在ProgrammingStateDAT将保持低电平(BUSY)。l写CSD、CID、写保护和擦除时没有缓冲。这表明在卡因这些命令而处于忙时不再接收其他数据传输命令。在卡忙时DAT保持低电平并处于ProgrammingState。实际上如果CMD和DAT线分离而且主机占有的忙DAT线和其他DAT线分开那么在卡忙时主机可以访问其他卡。l在卡被编程(programming)时禁止参数设置命令。参数设置命令包括:设置块长度(CMD)擦除块开始(CMD)和擦除块结束(CMD)。l卡在操作时不允许读命令。l使用CMD指令把另一个卡从Standby状态转移到Transfer状态不会中止擦除和编程(programming)操作。卡将切换到Disconnect状态并释放DAT线。l使用CMD指令可以不选中处于Disconnect状态的卡。卡将进入Programming状态重新激活忙指示。l使用CMD或CMD重置卡将中止所有挂起和活动的编程(programming)操作。这可能会破坏卡上的数据内容需要主机保证避免这样的操作。宽总线选择不选择宽总线(位总线宽度)操作模式通过ACMD选择和不选择。在上电后或GOIDLE(CMD)命令后默认的总线宽度是位。ACMD命令只在“transtate”有效即只有在卡选中后(CMD)总线宽度才能修改。读数据格式DAT总线在没有数据传输时处于高电平。一个传输数据块包含一个起始位(LOW)接着连续的数据流。数据流包含有效数据(如果使用了ECC了还包括错误纠正位)。数据流以一个结束位(HIGH)结束。数据传输和时钟信号同步。以块传输的有效数据包含CRC校验和。产生多项式是标准CCITT多项式。采用了缩短的BCH码d=有效数据长度最长为字节。CRC校验和对每个DAT线单独计算并附加在每个数据块后。在宽总线模式操作(DATDAT)中位的CRC校验对每个DAT分别计算。数据块读传输的基本单位是数据块最大尺寸在CSD中定义(READBLLEN)。开始和结束地址完全包含在一个物理数据快(如READBLLEN定义)中的较小的块也可以传递。CRC附加在每个数据块的尾部用来保证数据传输的完整性。CMD(READSINGLEBLOCK)开始一个块读操作然后传输完成后进入Transfer状态。CMD(READMULTIPLEBLOCK)开始连续的块传输直到停止命令。停止命令有一个执行延迟。在停止命令最后一位发送完以后数据传输停止。如果主机使用累计长度不是块对齐的部分块在第一个不对齐块的开始卡会发现一个块未对齐错误在状态寄存器中设置ADDRESSERR错误中止传输并等待(在Data状态)停止命令。数据写格式数据写传输格式类似于读格式。对于以块为单位的写数据传输CRC检验位附加到每个数据块。卡的每根数据线在接收到数据并在写操作前执行CRC校验。数据块写数据块写(CMD,,(W)),一个或多个数据块从主机发送给卡主机在每个数据块后附加CRC校验。数据块长度WRITEBLLEN(B)。如果CRC校验失败卡将在DAT数据线上指示错误。传输的数据将被抛弃而且后续传输的数据块(在多数据块写模式)也都会被忽略。多数据块写命令比连续的单数据块写命令速度快。不允许部分块写(小于B)。当主机试图在写保护区域写数据时写操作将中止。在这种情况下卡在状态寄存器设置WPVIOLATION位并忽略所有后续数据传输并在Receivedata状态下等待停止命令。对CID和CSD寄存器进行编程操作不需要实现设置块长度传输的数据也是CRC保护的。如果CSD或CID寄存器一部分存储于ROM中那么不可改变部分必须和接收缓冲中的相应部分内容保持一致。如果匹配失败卡将报告一个错误而且不改变任何寄存器内容。接收到一个数据块并完成CRC校验后卡将开始写如果写缓冲满而且不能从一个新的WRITEBLOCK命令接收新数据时DAT线保持为低电平。任何时候主机都可以通过SENDSTATUS(CMD)命令获取卡的状态。状态位READYFORDATA指示卡是否可以接收新数据或写操作还在进行中。主机通过CMD(选中另一个卡)不选中卡这个操作可以把卡的状态编程Disconnect并释放DAT线而不中断写操作。当不选中卡时如果编程还在进行而且写缓冲不可用时将通过下拉DAT为低电平来重新激活忙信号。实际上主机通过interleaving可以实现多个卡同时写操作interleaving过程可以通过在卡忙时访问其他卡实现。预擦除设置优先于多数据块写操作设置多个写数据块的预擦除(ACMD)可以使得接下来的多个数据块写操作比没有预先执行ACMD的相同操作更快。主机可以通过该命令设置多少个数据块将在接下来的写操作中发送。如果在所有数据块发送给卡时中止了写操作(使用停止传输命令)残余写数据块的内容(指要写入新内容的数据块?)将变得不确定(可能已擦除或还是原来的数据)。如果主机发送了超过ACMD中定义的数据块数目的数据卡将逐个擦除数据块(在收到新数据时)。多数据块写操作完成后值将重新设置为默认值。建议在CMD命令前使用该命令以加速写操作。如果需要预擦除主机在写命令前发送ACMD。如果不发送ACMD命令设置的预擦除数将在其他指令执行时自动清除。发送写数据块数目系统使用管道机制进行数据缓冲管理有时候在多数据块写操作过程中发生错误使得无法确定哪一个数据块是最后成功写入的数据块。卡可以把正常写入的数据块数(thenumberofwellwrittenblocks)作为对命令ACMD的响应。擦除同时擦除多个写数据块可以提高数据吞吐量。通过ERASEWRBLKSTART(CMD)和ERASEWRBLKEND(CMD)实现写数据块的识别。主机必须严格按照下列的命令操作顺序:ERASEWRBLKSTARTRASEWRBLKENDandERASE(CMD)。如果不按顺序接收到擦除指令(CMD)或地址设置指令(CMD,)卡将在状态寄存器中设置ERASESEQERROR位并重置整个顺序(sequence)。如果接收到一个不顺序的命令(除了SENDSTATUS)卡将在状态寄存器设置ERASERESET状态位重置擦除顺序和执行最后的命令。如果擦除范围包括写保护扇区将不被擦除擦除命令只擦除无保护的扇区。状态寄存器的WPERASESKIP位将设置。地址设置命令中的地址是以字节为单位的块写地址。卡将忽略所有小于WRITEBLKLEN(CSD)LSB(最低有效位)。如上所述的块写操作卡通过保持DAT为低电平指示擦除操作正在进行中。实际的擦除操作时间可能会很长主机可以通过CMD不选中卡或执行卡断开操作。卡上擦除操作后的数据为“”或“”由卡制造商确定。SCR寄存器的DATASTATAFTERERASE(bit)定义了是“”或“”。写保护管理写保护方法如下:l机械写保护开关(由主机负责)l卡内部写保护(由卡负责)l密码保护锁操作机械写保护开关卡内部写保护密码保护锁操作时钟控制SD卡主机可以使用SD卡总线时钟信号设置卡进入节能模式或控制总线上的数据流。主机可以降低时钟频率或直接关闭。SD卡主机必须遵循下列约束:l总线频率可以在任何时候改变(满足最大和最小值的约束)。lACMD(SDAPPOPCOND)是一个例外。发送ACMD命令后主机将执行下面步骤和步骤直到卡进入就绪状态:)持续发送KHZKHZ之间的时钟频率。)如果主机要停止时钟通过ACMD命令以小于ms的间隔设置busy位。CRC错误条件CRC和非法命令命令卡类型共有四类用来控制SD卡的命令:l广播命令(bc)无响应广播命令只有在所有CMD线一起连接到主机时才能使用。如果分开连接那么每个卡将单独接收命令。l带响应的广播命令(bcr)所有卡同时响应。因为SD卡没有开漏模式这个命令只有在所有的CMD线分开时采用使用。该命令将被每个卡分别接收和响应。(OPENDRAIN输出只能做输出口当外部无上拉电阻时该口为高阻状态。只有外部有上拉电阻时才有可能输出高或低的电平。)l寻址(点对点)命令(ac)DAT上没有数据传输。l寻址(点对点)数据传输命令(adtc)DAT上传输数据。所有的命令和响应通过CMD线传输。命令格式命令长度位usMHZbitbitbitbitbitbit起始位host命令参数CRCendbitbitCRC计算:G(x)=xxM(x)=(startbit)*x(hostbit)*x(lastbitbeforeCRC)*xCRC=余数(M(x)*x)G(x)命令分类SD卡命令集分为几个类每个类支持一个卡功能集合操作。支持命令基本保留读块保留写块擦除写保护锁应用保留CMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDCMDACMDACMDACMDACMDACMDACMDACMD详细命令描述*所有无用位必须填入但是值irrelevant表基本命令(类和类)命令索引类型参数响应缩写描述CMDbc:无用GOIDLESTATE重置所有卡到Idle状态CMD保留CMDbcr:无用RALLSENDCID要求所有卡发送CID号CMDBcr:无用RSENDRELATIVEADDR要求所有卡发布一个新的相对地址RCACMD不支持CMD保留CMD保留CMDac:RCA:无用R(只来自选中的卡)选中不选中卡CommandtogglesacardbetweentheStandbyandTransferstatesorbetweentheProgrammingandDisconnectstateInbothcasesthecardisselectedbyitsownrelativeaddressanddeselectedbyanyotheraddressaddressdeselectsallWhentheRCAequals,thehostmaydooneofthefollowing:useotherRCAnumbertoperformcarddeselectionOrresendCMDtochangeitsRCAnumbertootherthenandthenuseCMDwithRCA=forcarddeselectionCMD保留CMDac:RCA:无用RSENDCSD寻址卡并让其发送卡定义数据CSDCMDac:RCA:无用RSENDCID寻址卡并让其发送卡识别号CIDCMDadtc:数据地址RREADDATUNTILSTOP从卡读取数据流从给定地址开始知道停止传输命令结束CMDac:无用RbSTOP中止多个块的读写操作CMDac:RCA:无用RSENDSTATUS寻址卡并发送卡状态寄存器CMD保留CMDac:RCA:无用GOINACTIVESTATE设置卡到inactive状态表块读操作命令(类)命令索引类型参数响应缩写描述CMDac:块长度RSETBLOCKLEN为接下来的块操作指令设置块长度CMDadtc:数据地址RREADSINGLEBLOCK读取一个块CMDadtc:数据地址RREADMULTIPLEBLOCK连续读取多个块直到停止命令CMD保留表块写操作命令(类)命令索引类型参数响应缩写描述CMDadtc:数据地址RWRITEBLOCK写一个长度由SETBLOCKLEN指定的块CMDadtc:数据地址RWRITEMULTIPLEBLOCK连续写多个块直到STOPTRANSMISSION命令CMD不支持CMDadtc:无用RPROGRAMCSD编辑CSD位表写保护(类)命令索引类型参数响应缩写描述CMDac:数据地址RbSETWRITEPROT设置地址组保护位。写保护由卡配置数据的WPGRPSIZE指定CMDac:数据地址RbCLRWRITEPROT清除保护位CMDadtc:写保护数据地址RSENDWRITEPROT要求卡发送写保护位状态CMD保留表擦除命令(类)命令索引类型参数响应缩写描述CMDac:数据地址RERASEWRBLKSTART设置要擦除的第一个写数据块地址CMDac:数据地址RERASEWRBLKEND设置要擦除的最后一个写数据块地址CMD…CMD保留CMDac:无用RbERASE擦除所有选中的写数据块CMD…CMD保留表擦除命令(类)命令索引类型参数响应缩写描述CMDac:数据地址RERASEWRBLKSTART设置要擦除的第一个写数据块地址CMDac:数据地址RERASEWRBLKEND设置要擦除的最后一个写数据块地址CMD…CMD保留CMDac:无用RbERASE擦除所有选中的写数据块CMD…CMD保留表卡锁命令(类)命令索引类型参数响应缩写描述CMD…CMDSDA可选命令表应用相关(ApplicationSpecific)命令(类)命令索引类型参数响应缩写描述CMDac:RCA:填充位RAPPCMD告诉卡接下来的命令是应用相关命令而非标准命令。CMDadtc:填充位:RDWR读写RGENCMD应用相关(通用目的)的数据块读写命令CMD…CMD保留CMD…CMD厂商保留*命令相关命令可能指SD卡专用命令所有应用相关命令之前必须先执行APPCMD(CMD)。表SD卡使用保留的应用相关命令ACMD索引类型参数响应缩写描述ACMDac:填充位:总线宽度RSETBUSWIDTH:bit:bitACMDadtc:填充位RSDSTATUS设置SD卡状态ACMD保留ACMD­保留作为SD安全应用ACMD…ACMD保留ACMD­adtc:填充位RSENDNUMWRBLOCKS发送写数据块的数目。响应为位CRCACMD­ac:填充位:数据块数目RSETWRBLKERASECOUNT设置写前预擦除的数据块数目(用来加速多数据块写操作)。“”=默认(一个块)()ACMD保留ACMD­保留作为SD安全应用ACMD­保留作为SD安全应用ACMD­保留作为SD安全应用ACMD…ACMD保留ACMD­bcr:OCRwithoutbusyRSDAPPOPCOND要求访问的卡发送它的操作条件寄存器(OCR)内容ACMD­ac:填充位setcdRSETCLRCARDDETECT连接断开卡上CDDAT(pin的K欧姆上拉电阻。上拉电阻可用来检测卡ACMDACMD­保留作为SD安全应用ACMD­adtc:填充位RSENDSCR读取SD配置寄存器SCR()不管是否使用ACMD在多数据块写操作中都需要STOPTRAN(CMD)命令卡状态迁移表响应所有响应通过CMD线传输响应以MSB开始不同类型的响应长度根据类型不同而不同。响应以起始位开始(通常为“”)接着这是传输方向的位(卡为)。除了R外其他响应都有CRC。每个响应都以结束位(通常为“”)结束。共有四类响应格式分别为:R(标准响应):长度位Bits:指示被响应的命令索引号。如果有到卡的数据传输每个数据块传输后数据线上都会出现忙信号。主机在数据块传输后检测忙信号。表响应R起始位:::Width值xxx描述起始位传输位命令索引卡状态CRC结束位Rb和R相同带有一个可选的忙信号传输。根据接收到命令前的状态和接收到的命令可能变成忙。主机可以在响应时检测忙信号。R(CID,CSD):响应长度为位CID寄存器内容作为CMD和CMD的响应发送。CSD寄存器内容作为CMD的响应发送。只传输CID和CSD的…位寄存器的位被响应的结束位取代。表响应R起始位::Width值‘’x描述起始位传输位保留CID或CSD包括内容CRC结束位R(OCR寄存器):长度位OCR寄存器作为ACMD的响应发送。四、在SC中的使用基本操作SDI操作根据传输频率设置SDIPRE寄存器改变频率可以调整波特率。操作步骤:)设置SDICON设置时钟和中断)设置SDIPRE)等待SDCLK初始化卡CMDPathProgramming)写命令参数(bit)到SDICARG寄存器)通过设置SDICCON确定命令类型和起始命令)当SDICSTA的特殊标记设置时确定SDI命令操作的结束方式:a)如果是无响应(noresponse)命令标记是SDICSTAb)如果是有响应(withresponse)命令标记是SDICSTA)清除SDICSTA寄存器相应标记DATPathProgramming)在SDIDTIMER寄存器中设置超时)在SDIBSIZE中设置块大小通常为x)在SDIDCON寄存器中设置块模式(modeofblock)、总线宽度(buswidth)、DMA等以及开始数据传送)通过检查SDIFSTA判断TxFIFO的可用性(available,halforempty)当可用时(available)写Txdata到SDIDAT寄存器)通过检查SDIFSTA判断RxFIFO的可用性(available,halforempty)当可用时(available)从SDIDAT寄存器读数据到Rxdata)当传输结束标记SDIDSTA置位时确定SDI数据操作的数据)清除SDIDSTA寄存器相应位SDIO操作两类SDIO操作:SDIO中断接收和读等待请求分别通过SDICON寄存器的RcvIOInt位和RwaitEn位标记。SDIO中断在SD位模式中断从SDDAT脚接收所有范围的中断。在SD位模式SDDAT脚共享为接收数据和中断。中断检测范围(InterruptPeriod):)单数据块:A和B之间的间隔A:数据组装(packet)结束后个时钟周期B:下一条带数据命令(withdatacommand)最后一位发送结束)多数据块SDIDCON=:A和B之间的时间在范围C检测重启动(restart)中断A:数据组装结束后个时钟周期B:A后个时钟周期C:中止命令响应最后一位后个时钟)多数据快SDIDCON=:A和B之间在A重启动A:数据组装结束后个时钟周期A后个时钟周期读等待请求(ReadWaitRequest)无论位还是位模式读等待请求信号在下述情况下通过SDDAT脚传送:)在读多块操作请求信号在数据块结束后个时钟开始传输)传输在用户向SDIDSTA中写后结束寄存器SDICON寄存器名地址RW描述重置值SDICONxARWSDI控制寄存器xSDICON位描述初始值字节顺序类型(ByteOrder)确定读写时的字节顺序类型=TypeA,=TypeBTypeA:D:®D:®D:®D:TypeB:D:®D:®D:®D:从卡接收SDIO中断(RcvIOInt)确定SD主机是否接收卡(或SDIO)的SDIO中断:不接收:接收读等待使能(RWaitEn)在多数据块读模式中当SD主机等待下一个数据块时是否产生读等待请求信号。这一位需要延迟从卡传输下一数据块。:不产生:产生FIFO重置(FRST)重置FIFO值该位自动清除:普通模式:FIFO重置ClockoutEnable(ENCLK)是否使能SDCLKOut:禁止(不分频):使能SDIPRE(SDI模特率分频寄存器)寄存器名地址RW描述重置值SDIPRExARWSDI模特率分频寄存器xSDIPRE名位描述初始值分频值:确定SDI时钟率:Baudrate=PCLK(prescalervalue)xSDICARG(SDI命令参数寄存器)寄存器名地址RW描述重置值SDICARGxARWSDI命令参数寄存器xSDICARG位描述初始值CmdArg:命令参数xSDICCON(SDI命令控制寄存器)寄存器名地址RW描述重置值SDICCONxACRWSDI命令控制寄存器xSDICCON位描述初始值中止命令(AbortCmd)确定是否是中止命令类型:普通命令:中止命令(CMD,CMD)带数据命令(WithData)确定命令类型是否是带数据命令:否无数据:带数据LongRsp确定主机是否接收位长的响应:短响应格式:长响应格式WaitRsp确定主机是否等待响应:不等待:等待命令开始(CMST)确定命令是否开始操作:命令就绪:命令开始CmdIndex:带个开始位的命令索引xSDICSTA(SDI命令状态寄存器)寄存器名地址RW描述重置值SDICSTAxARWSDI命令状态寄存器xSDICSTA位描述初始值响应CRC失败(RspCrc)RW当接收到命令响应时CRC校验是否失败该位通过写清:无:失败命令发送(CmdSent)RW命令发送(不管是否响应)该位通过写清:无:命令结束命令超时(CmdTout)RW命令响应超时(clk)该位通过写清:无:超时响应接收结束(RspFin)RW响应接收结束该位通过写清:无:响应结束CMD线忙(CmdOn)R命令传输操作中:无:操作中RspIndex:R带个开始位的响应命令索引xSDIRSP(SDI响应寄存器)寄存器名地址RW描述重置值SDIRSPxARSDI响应寄存器xSDIRSP位描述初始值Response:卡状态:(短格式)卡状态:(长格式)xSDIRSP(SDI响应寄存器)寄存器名地址RW描述重置值SDIRSPxARSDI响应寄存器xSDIRSP位描述初始值RCRC:CRC(带结束位短格式)卡状态:(长格式)xResponse:未用(带结束位短格式)卡状态:(长格式)xSDIRSP(SDI响应寄存器)寄存器名地址RW描述重置值SDIRSPxACRSDI响应寄存器xSDIRSP位描述初始值Response:未用(带结束位短格式)卡状态:(长格式)xSDIRSP(SDI响应寄存器)寄存器名地址RW描述重置值SDIRSPxARSDI响应寄存器xSDIRSP位描述初始值Response:未用(带结束位短格式)卡状态:(长格式)xSDIDTIMER(SDI数据忙时钟)寄存器名地址RW描述重置值SDIDTIMERxARWSDI数据忙时钟寄存器xSDIDTIMER位描述初始值DataTimer:数据忙超时周期(~周期)xSDIBSIZE(SDI块大小寄存器)寄存器名地址RW描述重置值SDIBSIZExARWSDI块大小寄存器xSDIBSIZE位描述初始值BlkSize:块大小值(~byte)在流模式中没有用。在多块传输中BlkSize必须是字对齐的即BlkSize:=xSDIDCON(SDI数据控制寄存器)寄存器名地址RW描述重置值SDIDCONxACRWSDI数据控制寄存器xSDIDCON位描述初始值SDIO中断周期(Period)类型PryType确定最后一个块传输时SDIO中断周期是个时钟周期(cycle)还是更多周期:个周期:更多周期(如单块传输)响应后传输TARSP确定是否在接收到响应后开始数据传输:DatMode设置后开始:接收到响应后开始(假设DatMode设置为)命令后数据接收方式RACMD确定何时数据开始接收:DatMode设置后开始:命令发送后开始(假设DatMode设置为)命令后忙信号接收方式BACMD确定何时开始接收忙信号:DatMode设置后开始:命令发送后开始(假设DatMode设置为)块模式BlkMode数据传输模式:流模式:块模式宽总线使能WideBus使能宽总线:标准总线(只使用SDIDAT):宽总线模式(使用SDIDAT:)DMA使能EnDMA使能DMA:禁止(polling):允许*DMA操作结束后需要清除该位强制停止(STOP)确定是否允许强制停止:

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/43

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利