【stm32f407】SD协议(二)-SD卡

发布者:Meshulun最新更新时间:2019-01-31 来源: eefocus关键字:stm32f407  SD协议  SD卡 手机看文章 扫描二维码
随时随地手机看文章

一.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卡的容量和扇区大小等十分重要的信息

关键字:stm32f407  SD协议  SD卡 引用地址:【stm32f407】SD协议(二)-SD卡

上一篇:【stm32f407】SD协议(三)-源码
下一篇:【stm32f407】SD协议(一)-SDIO

推荐阅读最新更新时间:2024-03-16 16:23

MSP430的SPI通信例程(SD卡初始化-理论解说)
最近需要做一个数据存储,发现SD卡这一块还不太好弄 现在的单片机有相当一部分还不支持SDIO,比如MSP430(据我所知,如果有支持的型号了还请及时告诉我~),所以只好用SPI通信来进行SD卡的操作,虽然后续涉及到更为复杂的FAT等等,但是首先需要解决的仍然是建立通信的问题。 采用的单片机型号为MSP430F5438A,用了一个开发板。 SPI通信基本例程 例程及解释如下: //===========================================================================// // // // 文件:
[单片机]
stm32f103与stm32f407的引脚复用与重映射
stm32f103的AFIO: stm32f103的AFIO寄存器如下,使用前都要打开AFIO时钟: AFIO_MAPR:配置复用功能重映射 AFIO_EXTICRX:配置外部中断线映射 AFIO_EVCR: 配置EVENTOUT事件输出 只有使用了AFIO的事件控制寄存器、AFIO的重映射功能以及外部中断(EXTI)控制寄存器才需要使用AFIO。 1、当使用外部中断时,需要打开AFIO时钟。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 然后使用GPIO_EXTILineConfig函数进行挂载。例如: GPIO_EXTILineConfig(GPIO_PortSour
[单片机]
STM32CubeMX 配置STM32F407 实现HAL库延时微妙方案
先说一下为什么写这篇博客。 不知道大家有没有遇到过这种情况,当你在移植别人的程序的时候,尤其是移植STM32的程序,从标准库移植到HAL库的时候,总是无奈延时微妙函数在HAL库中找不到,delay_us(u8 us); 很多次我都是用毫秒延时代替了, 但是,这样会使得程序的效率大大降低,所以通过参考别人的资料,通过定时器写了延时us函数,延时还是很准确的 1、我所使用的单片机型号及开发环境 **PS**: emmmmm… (这里并不是打广告,只是我个人使用的这个开发板,其他任何的开发板,只要主控芯片一样均可以) 开发环境如图,我是用的Cube+IAR, Keil5也可以的,都一样。 2、使用Cube配置定时器TIM
[单片机]
STM32CubeMX 配置<font color='red'>STM32F407</font> 实现HAL库延时微妙方案
关于STM32与SD卡通信的一些理解
SD的驱动和应用困扰了我很久,寒假的时候看到SD简化版物理层协议的时候就傻掉了,看到SD的驱动快3000行的代码也动摇了。这几天几种地看了一下SD卡的相关内容,总结了一些体会,感觉也没有那么恐怖了。我决定从分层上来讨论SD的驱动和应用,因为这样可以构建一个清晰的逻辑,且不知哪位计算机大师曾说过:一切计算机问题都可以用分层的方法来解决。 我自己把SD卡从驱动到应用共分为4层,从下至上依次为:驱动层、物理层、文件系统层、应用层。下面一一来介绍各层的一些重要的操作。 1)驱动层 驱动层,对应到ST的库,就是STM32f10x_sdio.c/.h这个两文件。其实使用任何一个STM32的外设,只要用库函数都离不开这一对互相对应的.c
[单片机]
stm32 CubeMx 实现SD卡/sd nand FATFS读写测试
1. 前言 SD卡/SD nand是嵌入式开发中常为使用的大容量存储设备,SD nand虽然当前价格比SD卡高,但胜在价格、封装以及稳定性上有优势,实际操作和SD卡没什么区别。 关于 SD卡/SDnand 的驱动,有了CubeMx之后其实基本上都自动生成了对应的驱动了,基本上把驱动配置一下之后,自己写一些应用就可以完成基本的读写了,同时关于FATFS文件系统,也可以直接采用CubeMx配置,也不用自己移植,因此使用STM32开发这些还是比较爽的!不过使用过程中也有一些坑,自动生成的驱动有时候也还是有一些bug,因此还是需要大家对对应驱动有一定的了解。 本文将主要分享关于使用 CubeMx 配置 stm32 的工程,通过SD
[单片机]
stm32 CubeMx 实现<font color='red'>SD卡</font>/<font color='red'>sd</font> nand FATFS读写测试
STM32F407 之 高级定时器介绍
1、简介: STM32F4 高级定时器(TIM1 和 TIM8)包含一个 16 位自动重载计数器,该计数器由可编程预分频器驱动。 高级定时器可用于各种用途,包括测量输入信号的脉冲宽度(输入捕获),或者生成输出波形(输出比较、PWM、带死区插入的互补PWM)。 使用定时器预分频器和RCC 时钟控制器预分频器,可以将脉冲宽度和波形周期从几微秒调制到几毫秒。并且高级定时器和通用定时器彼此完全独立看,不共享任何资源。它们可以实现同步。 2、TIM1 和 TIM8 的主要特性 TIM1 和 TIM8 定时器具有以下特性: ● 16 位递增、递减、递增/递减自动重载计数器。 ● 16 位可编程预分频器,用于对计数器时钟频
[单片机]
<font color='red'>STM32F407</font> 之 高级定时器介绍
Mico SD卡的消失,仅仅是安全问题吗?
苹果(Apple)在内等智能型手机厂在2年前开始在手机采内建存储器设计后,正式舍弃Micro SD卡扩充设计,随后其他手机厂商也纷纷跟进,造成目前仍支持Micro SD卡扩展的手机寥寥无几。   媒体分析认为,造成Micro SD卡逐渐在手机失宠原因除了安全性外,某种程度来说,去Micro SD卡后让具备更大存储器需求之用户必须改采购价格更高的手机,自然可为厂商贡献更多收益。   除了苹果不再支持Micro SD卡之外,Google在去Micro SD卡的努力也早有脉络可循。当年Google所推出首款Nexus One仍可支持Micro SD卡槽,但日后各款Nexus便不再支持该功能。   Google为了更彻底
[嵌入式]
基于ReWorks平台的SD卡驱动程序设计
摘要:SD卡作为一种大容量、高性能的固体存储设备广泛应用于各类嵌入式系统。目前基于嵌入式ReWorks系统的SD卡驱动研究还比较少。为实现SD卡在ReWorks平台上的数据存取,本文以S3C2440为处理器研究了基于SD总线模式的SD卡初始化过程和读/写过程,并根据ReWorks系统关键数据结构和建立块设备的工作流程,在ReWorks系统平台上实现了的SD模式下的SD卡驱动程序。该驱动程序的结构及实现细节时ReWor-ks平台的块设备驱动开发以及其他系统平台的SD卡驱动开发均有一定的借鉴意义。 关键词:驱动程序;ReWorks;SD卡;嵌入式系统 0 引言 SD卡(Secure Digital Memory Card)是由日本
[工业控制]
基于ReWorks平台的<font color='red'>SD卡</font>驱动程序设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved