历史上的今天
返回首页

历史上的今天

今天是:2025年01月31日(星期五)

2019年01月31日 | 【stm32f407】SD协议(二)-SD卡

2019-01-31 来源:eefocus

一.SD卡简介

1)  简介:

SD卡是基于flash的存储卡。


SD卡和MMC卡的区别在于初始化过程不同。


SD卡的通信协议包括SD和SPI两类。

SD卡使用卡内智能控制模块进行FLASH操作控制,包括协议、安全算法、数据存取、ECC算法、缺陷处理和分析、电源管理、时钟管理。

2)  类型:

MMC卡: MultiMedia card,有 7个触点(引脚),分为两种操作模式,分别为MMC模式与SPI模式,两种模式对引脚的定义是不同的。SPI模式只有 Host 具有SPI接口时才能使用。MMC只具有存储功能,不像SD卡还具有加密功能。

SD卡: Security Digtial card,共有9个触点(引脚),多余的 2 个引脚为数据线,但使用与MMC卡兼容的模式时,这两个多余的引脚没有起到作用。SD卡除了存储功能外,还有一种加密功能,但加密功能是收费的(所以开源的linux中只包含mmc的驱动目录),因为当初SD卡联盟中(索尼)就是发明这种卡就是用来存储音乐(淘汰卡带),并使用加密特性,防止拷贝。

TF卡:软件上SD卡一致,只是在硬件的体积上比SD卡西小,所以市场上很多的TF卡的SD外形卡套


3) 协议:

1.x:小于2GB的卡(但通过相关的软件,可以模拟实现大于2GB)


2.0: 2


3.0: >32GB


二.SD卡引脚介绍

SD卡结构


1)  SD卡模式下引脚介绍

2)  SPI模式引脚介绍

三.SD卡寄存器介绍

1)  CID:The Card IDentification (CID) register is 128 bits wide. It containsthe card identification information used during the card identification phase.Every individual Read/Write (RW) card shall have a unique identificationnumber. The structure of the CID register is defined in the followingparagraphs:

其中就不一一介绍,主要包含一些SD卡的信息


2)  RCA:The writable 16-bit relative card address register carries the cardaddress that is published by the card during the card identification. Thisaddress is usedfor the addressed host-card communication after the cardidentification procedure. The default value of the RCA register is 0x0000. Thevalue 0x0000 is


reserved to set all cards into the Stand-by Statewith CMD7.


3)  DSR:The 16-bit driver stage register is described in detail inChapter 6.5. It can be optionally used to improve the bus performance forextended operating conditions (depending on parameters like bus length,transfer rate or number of cards). The CSD register carries the informationabout the DSR register usage. The default value of the DSR register is 0x404.


4)  CSD:Table hows Definition of the CSD for the High Capacity SD MemoryCard (CSD Version 2.0). The following sections describe the CSD fields and therelevant data types for the High Capacity SD Memory Card.


CSD Version 2.0 is applied to only the High Capacity SDMemory Card. The field name in parenthesis is set to fixed value and indicatesthat the host is not necessary to refer these fields. The fixed values enableshost, which refers to these fields, to keep compatibility to CSD Version 1.0.The Cell Type field is coded as follows: R = readable, W(1) = writable once, W= multiple writable.


5)  SCR:In addition to the CSD register, there is another configurationregister named SD CARD Configuration Register (SCR). SCR provides informationon the SD Memory Card's special features that were configured into the givencard. The size of SCR register is 64 bits. This register shall be set in thefactory by the SD Memory Card manufacturer.


The following table describes the SCR register content.


6)  OCR


The 32-bit operation conditions register stores theVDDvoltage profile of the card. Additionally, this register includes statusinformation bits. One status bit is set if the card power up procedure has beenfinished. This register includes another status bit indicating the cardcapacity status after set power up status bit. The OCR register shall beimplemented by the cards.


The 32-bit operation conditions register stores theVDDvoltage profile of the card. Bit 7 of OCR is newly defined for Dual VoltageCard and set to 0 in default. If a Dual Voltage Card does not receive CMD8, OCRbit 7 in the response indicates 0, and the Dual Voltage Card which receivedCMD8, sets this bit to 1.


Additionally, this register includes 2 more status information bits.


Bit 31 - Card power up status bit, this status bit is setif the card power up procedure has been finished.


Bit 30 - Card capacity status bit, this status bit is setto 1 if card is High Capacity SD Memory Card. 0


indicates that the card is Standard Capacity SD MemoryCard. The Card Capacity status bit is valid after the card power up procedureis completed and the card power up status bit is set to 1. The Host shall readthis status bit to identify a Standard or High Capacity SD Memory Card. The OCRregister shall be implemented by the cards.


7)  SSR:The SD Status contains status bits that are related to the SDMemory Card proprietary features and may be used for futureapplication-specific usage


8)  CSR:The response format R1 contains a 32-bit field named cardstatus. This field is intended to transmit the card’s status information (whichmay be stored in a local status register) to the host. If not specifiedotherwise, the status entries are always related to the previous issuedcommand.

四.SD协议命令

五.命令响应

All responses are sent via the command line CMD. Theresponse transmission always starts with the left bit of the bit stringcorresponding to the response codeword. The code length depends on the responsetype.


A response always starts with a start bit (always 0),followed by the bit indicating the direction of transmission (card = 0). Avalue denoted by ‘x’ in the tables below indicates a variable entry. Allresponses except for the type R3 (see below) are protected by a CRC (seeChapter 4.5 for the definition of CRC7). Every command codeword is terminatedby the end bit (always 1). There are five types of responses for the SD MemoryCard. The SDIO Card supports additional response types named R4 and R5. Referto SDIO Card Spec for detailed information on the SDIO commands and responses.Their formats are defined as follows:


六.SD卡使用过程

SD卡初始化过程


从图中,我们看到,不管什么卡(这里我们将卡分为4类:SD2.0高容量卡(SDHC,最大32G),SD2.0标准容量卡(SDSC,最大2G),SD1.x卡和MMC卡),首先我们要执行的是卡上电(需要设置SDIO_POWER[1:0]=11),上电后发送CMD0,对卡进行软复位,之后发送CMD8命令,用于区分SD卡2.0,只有2.0及以后的卡才支持CMD8命令,MMC卡和V1.x的卡,是不支持该命令的。CMD8的格式如表所示:

这里,我们需要在发送CMD8的时候,通过其带的参数我们可以设置VHS位,以告诉SD卡,主机的供电情况,VHS位定义如表所示

这里我们使用参数0X1AA,即告诉SD卡,主机供电为2.7~3.6V之间,如果SD卡支持CMD8,且支持


该电压范围,则会通过CMD8的响应(R7)将参数部分原本返回给主机,如果不支持CMD8,或者不支持这个电压范围,则不响应。在发送CMD8后,发送ACMD41(注意发送ACMD41之前要先发送CMD55),来进一步确认卡的操作电压范围,并通过HCS位来告诉SD卡,主机是不是支持高容量卡(SDHC)。


ACMD41的命令格式如表所示

ACMD41得到的响应(R3)包含SD卡OCR寄存器内容,OCR寄存器内容定义如表所示:


对于支持CMD8指令的卡,主机通过ACMD41的参数设置HCS位为1,来告诉SD卡主机支SDHC卡,如果设置为0,则表示主机不支持SDHC卡,SDHC卡如果接收到HCS为0,则永远不会反回卡就绪状态。对于不支持CMD8的卡,HCS位设置为0即可。


SD卡在接收到ACMD41后,返回OCR寄存器内容,如果是2.0的卡,主机可以通过判断OCR的CCS位来判断是SDHC还是SDSC;如果是1.x的卡,则忽略该位。OCR寄存器的最


后一个位用于告诉主机SD卡是否上电完成,如果上电完成,该位将会被置1。


对于MMC卡,则不支持ACMD41,不响应CMD55,对MMC卡,我们只需要在发送CMD0后,在发送CMD1(作用同ACMD41),检查MMC卡的OCR寄存器,实现MMC卡的初始化。


至此,我们便实现了对SD卡的类型区分,图中,最后发送了CMD2和CMD3命令,用于获得卡CID寄存器数据和卡相对地址(RCA)。


CMD2,用于获得CID寄存器的数据,CID寄存器数据各位定义如表所示:

SD卡在收到CMD2后,将返回R2长响应(136位),其中包含128位有效数据(CID寄


存器内容),存放在SDIO_RESP1~4等4个寄存器里面。通过读取这四个寄存器,就可以获得


SD卡的CID信息。


CMD3,用于设置卡相对地址(RCA,必须为非0),对于SD卡(非MMC卡),在收到


CMD3后,将返回一个新的RCA给主机,方便主机寻址。RCA的存在允许一个SDIO接口挂


多个SD卡,通过RCA来区分主机要操作的是哪个卡。而对于MMC卡,则不是由SD卡自动


返回RCA,而是主机主动设置MMC卡的RCA,即通过CMD3带参数(高16位用于RCA设


置),实现RCA设置。同样MMC卡也支持一个SDIO接口挂多个MMC卡,不同于SD卡的


是所有的RCA都是由主机主动设置的,而SD卡的RCA则是SD卡发给主机的。


在获得卡RCA之后,我们便可以发送CMD9(带RCA参数),获得SD卡的CSD寄存器


内容,从CSD寄存器,我们可以得到SD卡的容量和扇区大小等十分重要的信息

推荐阅读

史海拾趣

ERP公司的发展小趣事

为了进一步拓展市场和提高竞争力,电子智链开始寻求与其他企业建立生态合作关系。公司与多家电子制造设备供应商、原材料供应商和物流服务商建立了战略合作关系,共同打造了一个覆盖电子产业全链条的生态圈。这一合作模式不仅为客户提供了更加全面和高效的解决方案,还促进了整个电子产业的协同发展。

Brand-Rex公司的发展小趣事

Brand-Rex的综合布线产品在国家重大项目上得到了广泛应用。例如,昌北国际机场作为中国干线机场,其总建筑面积达到96616平方米。该项目于2010年9月中标,2011年5月22日竣工并投入使用。整个系统均采用了Brand-Rex的CAT6PLUS全系列铜缆和光纤产品,充分展示了Brand-Rex在大型项目中的技术实力和产品可靠性。此外,Brand-Rex还参与了其他多个重要项目的布线工作,为国家基础设施的建设做出了积极贡献。

DPA Components International公司的发展小趣事

DPA Components International公司非常重视企业文化的建设。公司倡导“以人为本、追求卓越”的企业文化,注重员工的培训和发展。公司为员工提供丰富的培训资源和职业发展机会,鼓励员工不断创新和进取。同时,DPA还建立了完善的激励机制和福利制度,让员工感受到公司的关怀和温暖。在这种积极向上的企业文化氛围中,员工的工作积极性和创造力得到了充分激发,为公司的持续发展提供了强大动力。

Gustav Klauke GmbH公司的发展小趣事

作为一家具有社会责任感的企业,DPA Components International公司始终关注社会公益事业。公司积极参与各种公益活动,如扶贫助学、环保行动等,为社会做出了积极贡献。此外,DPA还关注行业发展和社会进步,积极参与行业交流和合作,推动整个电子行业的健康发展。通过担当社会责任,DPA不仅提升了企业的社会形象,也为社会的进步和发展做出了积极贡献。

Hengstler GmbH公司的发展小趣事

DPA Components International公司自成立以来,一直将技术创新作为公司发展的核心动力。在电子行业的早期阶段,该公司就投入大量资源研发新型电子元件,这些元件以其高精度和稳定性迅速在市场上获得了认可。随着技术的不断进步,DPA不断推出具有创新性的产品,如智能传感器和高效能集成电路,这些产品不仅满足了客户对性能的需求,也推动了整个电子行业的发展。通过不断的技术创新,DPA Components International公司在市场上建立了良好的口碑,成为行业内的领军企业。

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

作为一家具有社会责任感的企业,DPA Components International公司始终关注社会公益事业。公司积极参与各种公益活动,如扶贫助学、环保行动等,为社会做出了积极贡献。此外,DPA还关注行业发展和社会进步,积极参与行业交流和合作,推动整个电子行业的健康发展。通过担当社会责任,DPA不仅提升了企业的社会形象,也为社会的进步和发展做出了积极贡献。

问答坊 | AI 解惑

基于AT89s51的燃气泄漏报警与应急处理器

摘要: 本文介绍了一种基于单片机技术的燃气泄漏报警及应急处理器。该系统不仅能及时准确地检测出燃气的泄漏,发出声、光报警,还能实施应急处理,同时具有阀门开闭装置安装简便,传感器损坏能自查报警与方便更换等特点。因此特别适合于无条件建立或 ...…

查看全部问答>

我的超声波带原理图与PCB

本帖最后由 paulhyde 于 2014-9-15 03:46 编辑 我的超声波带原理图与PCB  …

查看全部问答>

单片机C语言交流群

各位,本人创建了单片机C语言开发交流群,希望各位多多交流:69698592…

查看全部问答>

请教如何添加D类地址

别人配置的vxworks(PC104) 小弟的组播程序试了很久都不通(我门外汉),后来用ifShow 查 显示如下: fei (unit number 0):     Flags: (0x8063) UP BROADCAST RUNNING ARP MULTICAST     Type: ETHERNET_CSMACD   ...…

查看全部问答>

三星S3C241O的中断问题

我最近在学华恒ARM9,用的是三星S3C2410当做到中断这个问题的时候,遇到了问题,还请各位大虾帮忙 问题如下: 1、不管我把中断置一还是置零都没看到区别,和芯片资料有出入,为什么会这样 2、我把中断待决寄存器和源待决寄存器的值读出来,发现 ...…

查看全部问答>

MDK对于CORTEX3在C中插入汇编的问题?ADC?

MDK对于CORTEX3在C中插入汇编的问题?我使用ARM公司(keil)的MDK软件,CPU使用STM32F103,我想在C语言中插入汇编语言,按照MDK提供的帮助文件插入汇编的方法写如下语句:int qadd(int i, int j){     ...…

查看全部问答>

STM8S207跑24MHz不行,CPU只能2分频?why

//使用外部晶振24MHz,1分频跑不起来,2分频才可以正常工作,不知道哪设置问题 void Clk_Config(void) {     ErrorStatus val;     CLK_DeInit();     //CLK_HSECmd(ENABLE);     //CLK_SYSCLKC ...…

查看全部问答>

超新手弱弱问题----关于定时器的问题

这几天在看书,发现里面说到定时器a和定时器b,我想问一下,定时器是不是属于单片机里面一个硬件呢?应该不是在msp430芯片里面的吧???…

查看全部问答>

【MSP430共享】嵌入式超声波热量表系统的研制

分析和研究了时差法超声波热量表的测量原理, 设计了一种嵌入式超声波热量表系统。 以低功耗的嵌入式微处理器MS P 4 3 0 做为核心控制模块, 选用先进的时间数字转换芯片T DC . GP 2保证 了流量的测量精度, 将嵌入式操作系b ~ p C / OS 一 Ⅱ引 ...…

查看全部问答>

液晶屏初始化时花屏了,求助!

液晶屏初始化时花屏了!(LCD12864带字库的)LCD12864 带字库的。在我对液晶屏初始化时,设置到“进入设定点”这一步,用api函数SSIDataPut(SSI_BASE, data) 发送命令字0x06,就花屏了!这是为什么? …

查看全部问答>