SD卡读写操作
sd卡数据读写流程

SD卡数据读写流程引言SD卡(Secure Digital Card)是一种常用的存储设备,通常用于移动设备、相机等电子产品中。
在使用SD卡时,数据的读写是一个非常重要的过程。
本文将详细介绍SD卡的数据读写流程,包括初始化、文件操作和数据传输等环节。
初始化SD卡初始化SD卡是数据读写的第一步,确保SD卡可以被正确地识别和使用。
下面是SD卡数据读写的初始化流程:1.插入SD卡:将SD卡插入目标设备的SD卡插槽中。
2.电源供给:为SD卡提供稳定的电源,通常通过连接电源线或使用内置电池来实现。
3.延时等待:等待SD卡稳定,一般为几毫秒的时间。
4.发送命令:通过SPI或SDIO等接口向SD卡发送特定的命令,以初始化SD卡。
5.接收响应:SD卡将返回初始化成功与否的响应,如果初始化成功,则可以进行后续的数据读写操作。
SD卡文件系统在进行数据读写之前,需要先设置SD卡的文件系统。
常用的文件系统包括FAT16、FAT32和exFAT等。
下面是SD卡文件系统的设置流程:1.格式化SD卡:使用格式化工具对SD卡进行格式化,以清除原有的文件系统和数据。
2.创建分区:根据需求,可以将SD卡分为一个或多个分区,并设置每个分区的大小。
3.创建文件系统:选择合适的文件系统类型,在分区上创建文件系统,并分配文件系统的容量。
4.分配文件表:文件系统会维护一个文件表,记录文件的位置、大小等信息。
在创建文件系统时,会分配一块空间来存储文件表。
5.设置文件权限:根据需要,可以设置文件的读写、执行权限,以保证文件的安全性。
SD卡数据读写操作SD卡的数据读写操作包括文件的创建、打开、读取、写入和关闭等。
下面是SD卡数据读写操作的详细流程:1.创建文件:通过文件系统接口,调用相关函数创建一个新的文件,并指定文件的名称和路径。
2.打开文件:使用文件系统的函数打开已经存在的文件,以便后续的读取和写入操作。
3.读取文件:通过文件系统提供的函数,在已经打开的文件中进行读取操作。
sd卡读写模块的用法

sd卡读写模块的用法
SD卡读写模块是一种用于读写SD卡存储设备的模块。
它通常通过SPI或SDIO接口与主控制器(如单片机、开发板等)连接,并提供读
取和写入SD卡的功能。
使用SD卡读写模块的步骤如下:
1.初始化:通过控制模块的引脚,配置SPI或SDIO接口的工作模
式和相关参数。
2.卡插入检测:通过检测SD卡插槽的接触状态,确定是否插入了SD卡。
3.卡初始化:对SD卡进行初始化操作,包括发送命令和接收响应,以确认SD卡的类型和性能等信息。
4.数据读取:发送读取命令和地址,接收SD卡返回的数据。
5.数据写入:发送写入命令和地址,将数据写入SD卡的指定块位置。
在使用SD卡读写模块时,我们还可以拓展以下几个方面:
1.多线程读写:通过同时使用多个SPI或SDIO接口,实现多个线程同时读写SD卡,提高数据传输速度。
2. SD卡文件系统:在SD卡中创建文件系统(如FAT32),将数据按照文件的形式进行存储和管理,提供更加灵活和高效的数据存储方式。
3.数据加密:将敏感的数据进行加密后再写入SD卡,防止数据泄露和篡改。
4.文件压缩:在将数据写入SD卡之前,使用压缩算法(如ZIP)对数据进行压缩,减小存储空间占用。
5.数据校验:在读取或写入数据时,进行校验(如CRC校验)以确保数据的完整性和准确性。
总之,SD卡读写模块的使用方式可以根据具体需求进行拓展,以实现更多功能和提升性能。
基于stm32f103对sd卡底层的基本操作方法

基于stm32f103对sd卡底层的基本操作方法基于STM32F103的SD卡底层操作方法是指通过STM32F103系列微控制器来对SD卡进行读写操作的一组基本方法。
本文将详细介绍如何配置STM32F103的SPI接口和相关寄存器,以及如何使用SPI接口与SD卡进行通信和文件操作。
一、硬件连接首先,需要连接STM32F103与SD卡之间的硬件接口。
STM32F103的SPI接口包括四根引脚,分别是NSS(片选信号)、SCK(时钟信号)、MISO(数据输入信号)和MOSI(数据输出信号)。
通常,可以将SD卡的NSS引脚连接到STM32F103的任一GPIO引脚上作为片选信号,并通过软件控制片选信号的高低电平来选择SD卡进行读写操作。
此外,还需要将SD卡的SCK、MISO和MOSI引脚分别连接到STM32F103的SPI接口的SCK、MISO和MOSI引脚上。
为了方便起见,可以直接使用STM32F1的SPI中的SPI1进行配置。
二、SPI接口配置在STM32F103中,SPI接口由SPI1、SPI2和SPI3三个外设实现,其中SPI1位于APB2总线上,SPI2和SPI3位于APB1总线上。
在本文中,我们将使用SPI1进行SD卡的底层操作。
首先,需要在CubeMX中将SPI1的NSS、SCK、MISO和MOSI引脚分别配置为GPIO输出、SPI时钟、SPI数据输入和SPI数据输出功能。
然后,需要配置SPI1的时钟分频系数、数据位数、传输模式等参数。
SPI1的时钟分频系数由BDIV和BR两个参数决定,其中BDIV位于SPI1->CR1寄存器的位6-7位,用于设定SPI1主频的1/2、1/4、1/8还是1/16,BR位于SPI1->CR1寄存器的位3-5位,用于设定SPI1的分频系数。
根据SD卡的时钟特性,一般选择SPI1的分频系数为sclk/32,其中sclk为主控芯片时钟。
在SPI接口配置完成之后,需要打开SPI1外设时钟使能,并设置SPI1的工作模式、数据位数等参数。
sd卡数据读写流程

sd卡数据读写流程一、概述SD卡是一种常用的存储设备,应用广泛。
在进行SD卡数据读写操作时,需要了解其基本流程及相关细节。
本文将详细介绍SD卡数据读写流程。
二、准备工作1. 确认SD卡类型:根据需求选择合适的SD卡类型,如标准SD卡、Mini SD卡、Micro SD卡等。
2. 准备读写设备:需要使用支持SD卡的读写设备,如读卡器、手机、相机等。
3. 系统环境:根据不同操作系统选择相应的驱动程序和开发工具。
三、初始化SD卡1. 电源接口:将SD卡插入读写设备中,并接通电源。
2. 查找CMD线:通过CMD线查找到SD卡,并发送复位命令。
3. 发送初始化命令:发送初始化命令后,等待SD卡响应并返回状态码。
四、读取CID和CSD寄存器信息1. 发送CMD10命令:通过CMD10命令可以获取CID寄存器信息。
2. 发送CMD9命令:通过CMD9命令可以获取CSD寄存器信息。
五、设置Block长度1. 发送CMD16命令:通过CMD16命令设置Block长度,即每次读取或写入的字节数。
六、数据传输1. 读取数据:发送CMD17命令,指定读取的起始地址和读取的Block数量,等待SD卡响应并返回数据。
2. 写入数据:发送CMD24命令,指定写入的起始地址和写入的Block数量,等待SD卡响应并写入数据。
七、结束操作1. 发送CMD12命令:结束操作前需要发送CMD12命令,以停止多块传输。
2. 断开电源:操作完成后需要断开SD卡电源。
八、注意事项1. SD卡在进行读写操作时需要保持稳定的电压和供电。
2. 操作过程中需要注意各种状态码及其含义。
3. 合理选择Block长度可以提高读写速度。
以上就是SD卡数据读写流程的详细介绍。
在实际应用中,还需要根据具体情况进行合理调整和优化。
SD卡的结构原理和基本读写操作方式

SD卡的结构原理和基本读写操作方式摘要:本文首先介绍了SD Memory Card ( Secure D ig ita l MemoryCard)的基本结构和原理,着重对SD 卡的命令字和操作流程进行介绍。
接着研究了三星32位嵌入式处理器S3C2410与SD 卡硬件接口电路及其对SD卡的基本读写操作方式。
1 引言SD卡( Secure DigitalMemory Card)是一种基于Flash的新一代存储器,它着重数据存储的安全、容量和性能,是许多便携式电子产品如数码相机、手提电话, PDA 等理想的外部存储介质。
2 SD的基本概念2. 1 SD的通信协议SD卡系统可以在两种通信协议下工作: SD协议和SP I协议。
用户可以在硬件初始化时自由选择SD卡系统的通信协议。
对于特定的硬件电路,用户只需使用一种通信协议即可。
本文根据笔者的硬件,仅讨论最常用的SD协议。
2. 2 SD数据传输方式SD支持两种数据传输方式: 1 - bit方式(标准总线)和4- bit方式(宽总线)。
在1 - bit方式下,数据仅仅在数据线0(DAT[ 0 ])上传输。
在4 - bit方式下,数据在4 根数据线(DAT[ 3: 0 ])上同时传输。
在4 - bit数据传输方式下,最高的数据传输速率可达100Mb / sec。
表1列出了在两种方式下SD接口信号的定义。
上电后,缺省状态下系统工作于1 - bit方式。
在SD卡处于传输状态时,用户可以自由地更改为1 - bit或4 - bit方式。
2. 3 SD 通信原理SD总线是一个星型的总线结构,系统中允许有一个主控器,最多可达十个从设备( SD卡)。
在系统初始化时,主控器分别为每一个设备分配一个设备地址,此后主控器就可以根据此设备地址独立操作该设备。
SD总线通信是基于命令和数据位流的,每一个数据流都包括一个起始位和一个结束位。
每一个SD命令表征一个卡操作的开始。
SD命令由命令线(CMD)进行传输。
SD卡实现TXT文本读写

SD卡实现TXT文本读写SD卡是一种常见的存储设备,可以通过它来实现TXT文本的读写操作。
下面是一个实现的示例代码:```#include <SD.h>//定义SD卡引脚const int chipSelect = 4;void setu//初始化串口通信Serial.begin(9600);//初始化SD卡if (!SD.begin(chipSelect))Serial.println("SD卡初始化失败!");return;}Serial.println("SD卡初始化成功!");// 在SD卡根目录创建一个名为test.txt的文件,并将一段示例文本写入文件中File dataFile = SD.open("test.txt", FILE_WRITE);if (dataFile)dataFile.println("这是一个示例文本"); dataFile.println("Hello, World!"); dataFile.close(;Serial.println("文本写入成功!");} elseSerial.println("打开文件失败!");}//读取文件内容并打印在串口终端上dataFile = SD.open("test.txt");if (dataFile)while (dataFile.available()Serial.write(dataFile.read();}dataFile.close(;} elseSerial.println("打开文件失败!");}void loo//程序循环执行,如果有其他的任务可以在这里添加代码```以上代码首先使用`SD.begin(`函数初始化SD卡,并通过`SD.open(`函数创建一个名为"test.txt"的文件,并以写入方式打开。
sd卡识别流程

sd卡识别流程SD卡是一种常见的存储设备,广泛应用于移动设备、数码相机等电子产品中。
本文将从SD卡的识别流程入手,介绍SD卡的工作原理和识别过程。
一、SD卡的工作原理SD卡是一种闪存存储卡,采用了非易失性存储技术,可以长期保存数据。
它由存储芯片、控制器和外壳等组成。
存储芯片负责数据的存储,控制器负责控制数据的读写和传输。
SD卡通过与设备的接口连接,实现数据的读取和写入。
二、SD卡的识别流程1. 插卡检测:当将SD卡插入设备的SD卡槽时,设备会通过插卡检测电路检测SD卡的插入状态。
如果检测到插卡动作,设备会进入下一步的识别流程。
2. 供电和时钟:设备会为SD卡提供电源,并发送时钟信号给SD 卡,以确保SD卡的正常运行。
同时,设备还会发送复位信号给SD 卡,使其回到初始状态。
3. 发送命令:设备会通过SD卡接口向SD卡发送命令,以控制SD 卡的工作。
常见的命令有初始化命令、读取命令、写入命令等。
4. 响应命令:SD卡接收到设备发送的命令后,会进行相应的处理并返回响应结果。
响应结果包括命令执行状态、数据传输状态等。
5. 初始化:设备会向SD卡发送初始化命令,以对SD卡进行初始化设置。
初始化过程中,设备会向SD卡发送一系列的命令和参数,以便建立设备与SD卡之间的通信和数据传输。
6. 容量识别:设备会向SD卡发送容量识别命令,以获取SD卡的容量信息。
SD卡会返回容量信息给设备,设备根据这些信息来判断SD卡的容量大小和可用空间。
7. 文件系统识别:设备会读取SD卡的文件系统信息,以确定SD 卡的文件系统类型和目录结构。
常见的文件系统类型有FAT32、exFAT等。
8. 数据读写:设备通过命令和参数,向SD卡发送读写命令,以读取或写入数据。
SD卡接收到命令后,会执行相应的操作,并返回读取或写入的数据给设备。
9. 结束操作:设备在完成数据读写或其他操作后,会发送结束命令给SD卡,以结束与SD卡的通信和数据传输。
SDMMC卡初始化及读写流程

二、MMC/SD卡的模型和工作原理PIN脚、SD卡总线、SD卡结构、SD卡寄存器、上电过程SD卡寄存器:OCR:操作电压寄存器: 只读,32位第31位:表示卡上电的状态位CID: 卡身份识别寄存器只读128位生产厂商、产品ID,生产日期和串号等CSD:部分可写128位卡的容量、擦出扇区大小、读写最大数据块的大小、读操作的电流、电压等等 CSR: 卡配置寄存器64位数据位宽RCA:16位相关的卡地址寄存器,卡识别过程中主控器和卡协商出来的一个地址三、SD卡命令和响应格式命令和相应格式SD卡命令,命令类型,ACMD命令响应类型、卡类型、卡状态转换表命令的格式:48位起始位0 方向位(host to card: 1, card to host: 0)内容CRC7 结束位1·响应的格式:48位或者136位卡命令:命令的类型:bc: broadcast without Response 无响应的广播bcr: broadcast with Response 有响应的广播ac: Address(point-to-point) Command: 点对点,DATA0~DATA3数据线上无数据adtc: Adress(point-to-point) Data Transfer Commands 点对点,DATA0~DATA3数据线上有数据CMD0, CMD2, CMD3, CMD55, ACMD41 命令可能会导致卡的状态发生变化响应类型:R1,R1b, R2, R3,R6(SD2.0扩展了R7)扩展内容:SPI工作模式:要知道的特点:只支持一个卡,没有RCA,命令只是MMC/SD的基本的子集SDHC:(支持2GB~32GB):理解CMD8的作用,命令格式和响应,了解CSDV2.0寄存器做了扩展SDIO WIFI:增加CMD52,CMD53CMD8可以通过重新定义先前保留的位,来扩展一些已经存在的命令的新功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SD卡操作一、概述1、简介SD卡是基于flash的存储卡。
SD卡和MMC卡的区别在于初始化过程不同。
SD卡的通信协议包括SD和SPI两类。
SD卡使用卡内智能控制模块进行FLASH操作控制,包括协议、安全算法、数据存取、ECC算法、缺陷处理和分析、电源管理、时钟管理。
2、功能介绍2.1 特点1)主机无关的FLASH内存擦除和编程读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机无需关心具体操作的完成。
当采用新型的FLASH时,主机代码无需更新。
2)缺陷管理3)错误恢复4)电源管理Flash每个扇区有大约10万次的写寿命,读没有限制。
擦除操作可以加速写操作,因为在写之前会进行擦除。
3 SD总线模式3.1 Negotiating Operation Conditions当主机定义了SD卡不支持的电压范围时,SD卡将处于非活动状态,将忽略所有的总线传输。
要退出非活动状态唯一的方法就是重新上电。
3.2 SD卡获取和识别SD卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。
主机依次分别访问每个卡,每个卡的CID寄存器中已预编程了一个唯一的卡标识号,用来区分不同的卡。
主机通过READ_CID命令读取CID寄存器。
CID寄存器在SD卡生产过程中的测试和格式化时被编程,主机只能读取该号。
DAT3线上内置的上拉电阻用来侦测卡。
在数据传输时电阻断开(使用ACMD42)。
3.3 卡状态卡状态分别存放在下面两个区域:卡状态(Card Status),存放在一个32位状态寄存器,在卡响应主机命令时作为数据传送给主机。
SD状态(SD_Status),当主机使用SD_STATUS(ACMD13)命令时,512位以一个数据块的方式发送给主机。
SD_STATUS还包括了和BUS_WIDTH、安全相关位和扩展位等的扩展状态位。
3.4 内存组织数据读写的基本单元是一个字节,可以按要求组织成不同的块。
Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储在CSD寄存器。
Sector:和擦除命令相关,由几个块组成。
Sector的大小对每个设备是固定的,大小信息存储在CSD寄存器。
WP Group:写保护单位。
大小包括几个group,写保护由一位决定,对每个设备大小是固定的,存储在CSD寄存器。
3.5 读写操作Single Block Mode:主机根据事先定义的长度读写一个数据块。
由发送模块产生一个16位的CRC校验码,接受端根据校验码进行检验。
读操作的块长度受设备sector大小(512 bytes)的限制,但是可以最小为一个字节。
不对齐的访问是不允许的,每个数据块必须位于单个物理sector内。
写操作的大小必须为sector大小,起始地址必须与sector边界对齐。
Multiple Block Mode:主机可以读写多个数据块(相同长度),根据命令中的地址读取或写入连续的内存地址。
操作通过一个停止传输命令结束。
写操作必须地址对齐。
3.6 数据传输速率SD卡可以通过单数据线(DAT0)或四根数据线(DAT0-DAT3)进行数据传输。
单根数据线传输最大传输速率为25 Mbit/s,四根数据线最大传输速率为100 Mbit/s。
3.7 数据保护每个sector的数据通过Error Correction Code (ECC)进行保护。
在写sector时生成ECC,在读sector时检验ECC。
如果发现错误,在传输前进行纠正。
3.8数据擦除SD卡数据擦除的最小单位是sector。
为了加速擦除操作,多个sector可以同时擦除。
为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址,在地址范围内的所有sector将被擦除。
3.9 写保护两种写保护方式可供选择,永久保护和临时保护,两种方式都可以通过PROGRAM_CSD指令进行设置。
永久保护位一旦设置将无法清除。
3.10 拷贝位通过CSD寄存器中的拷贝位(copy bit)设置SD卡中的数据是原始数据还是拷贝数据。
拷贝位一旦设置,将无法清除,在测试和格式化时使用。
3.11 CSD寄存器所有SD卡的配置信息存储在CSD寄存器。
通过SEND_CSD读取,PROGRAM_CSD修改。
4 SPI模式二、S D卡接口描述1 引脚和寄存器主机通过9个引脚和SD卡相连1.1 SD模式引脚扩展数据线(DAT1-DAT3)上电后为输入,SET_BUS_WIDTH命令执行后作为数据线。
即使只有DAT0使用,所有数据线都和外部上拉电阻连接,否则DAT1 & DAT2(如果未被使用)的振荡输入将引起非期望的高电流损耗。
上电后,数据线输入50K(+/-20K)欧姆的上拉(用来进行卡侦测和SPI模式选择)。
用户可以在常规数据传输时,通过SET_CLR_CARD_DETECT (ACMD42)命令分离上拉。
1.2 SPI模式引脚1.3 寄存器主机通过重新上电来重置(reset)卡。
卡有它自身检测上电的电路,当上电后卡状态切换到idle状态。
也可以通过GO_IDLE (CMD0)指令来重置。
2SD卡总线拓扑SD总线有6根通信线和三根电源供应线:✧CMD——命令线是双向信号线。
主机和卡通过push pull 模式工作。
✧DAT0-3——数据线是双向信号线。
主机和卡通过push pull 模式工作。
✧CLK——时钟是从主机到卡的信号。
CLK通过push pull 模式操作。
✧VDD—VDD是所有卡的电源供应线。
✧VSS[1:2]—VSS是2根地线。
在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽(physical slot)分配逻辑地址。
数据通常分别传输给每个卡。
然后,为了方便处理卡堆栈,初始化后所有命令同时发送给所有卡,在命令数据包中包含了操作地址。
SD总线允许动态配置数据线数目。
上电后默认SD卡只用DAT0作为数据传输线。
初始化后,主机可以改变总线宽度。
这个特性使得在硬件开销和系统性能间取得平衡。
3SPI总线拓扑4电气接口4.1 上电上电后,包括热插入,卡进入idle状态。
在该状态SD卡忽略所有总线操作直到接收到ACMD41命令。
ACMD41命令是一个特殊的同步命令,用来协商操作电压范围,并轮询所有的卡。
除了操作电压信息,ACMD41的响应还包括一个忙标志,表明卡还在power-up过程工作,还没有准备好识别操作,即告诉主机卡还没有就绪。
主机等待(继续轮询)直到忙标志清除。
单个卡的最大上电时间不能操作1秒。
上电后,主机开始时钟并在CMD线上发送初始化序列,初始化序列由连续的逻辑“1”组成。
序列长度为最大1毫秒,74个时钟或supply-ramp-up时间。
额外的10个时钟(64个时钟后卡已准备就绪)用来实现同步。
每个总线控制器必须能执行ACMD41和CMD1。
CMD1要求MMC卡发送操作条件。
在任何情况下,ACMD41或CMD1必须通过各自的CMD线分别发送给每个卡。
5寄存器5.1 OCR(Operating Conditions Register)32位的操作条件寄存器存储了V DD电压范围。
SD卡操作电压范围为2~3.6V。
然而从内存中访问数据的电压是2.7~3.6V。
OCR显示了卡数据访问电压范围,结构如下表所示。
表3-8 OCR寄存器定义OCR结构如下图所示。
如果第32位(busy bit)置位,表明卡上电过程已结束。
5.2 CID(Card Identification)CID寄存器长度为16个字节的卡唯一标识号,该号在卡生产厂家编程后无法修改。
SD 和MMC卡的CID寄存器结构不一样。
1、格式为“n.m”,如“6.2”表示为0110 00105.3 CSD(Card Specific Data)CSD寄存器包含访问卡数据所需的配置信息。
SD卡和MMC卡的CSD不同。
6数据交互格式和卡容量通常,SD卡分为2个区:✧用户区—用户通过读写命令存储安全和非安全数据。
✧安全保护区(Security Protected Area)—版权保护应用程序用来保存安全相关数据,通过SD安全规范中定义的条件验证后,由主机使用安全的读写指令完成操作。
安全保护区的大小大概是总大小的1%。
三、S D卡协议1 SD总线协议SD总线通信是基于命令和数据位流方式的,由一个起始位开始,以一个停止位结束:命令——命令是开始开始操作的标记。
命令从主机发送一个卡(寻址命令)或所有连接的卡(广播命令)。
命令在CMD线上串行传送。
响应——响应是从寻址卡或所有连接的卡(同步)发送给主机用来响应接受到的命令的标记。
命令在CMD线上串行传送。
数据——数据可以通过数据线在卡和主机间双向传送。
卡寻址通过会话地址方式实现,地址在初始化的时候分配给卡。
SD总线上的基本操作是command/response。
数据传送采用块方式,数据块后接CRC校验位,操作包括单数据块和多数据块。
多数据块更适合快速写操作,多数据块传输当在CMD线出现停止命令时结束。
数据传输可以在主机端设置采用单数据线或多数据线方式。
块写操作在DAT0数据线写操作期间使用忙信号,无论用来传输的信号线数目是多少。
命令格式如下所示:响应标记(token)根据内容不同具有四种格式,标记长度。
长度为48位或136位。
数据块的CRC算法采用16位的CCITT多项式。
在命令行中,MSB位首先传送,LSB位最后传送。
当使用宽总线模式时,数据同时在4根数据线上传输。
开始位、结束位和CRC在每根数据线上传送。
CRC对每根数据线单独计算。
CRC状态响应和Busy信号只通过DAT0由卡发送给主机。
2 协议功能描述所有主机和SD卡间的通信由主机控制。
主机发送下述两类命令:●广播命令——广播命令发送给所有SD卡,有些命令需要响应。
●寻址(点对点)命令——寻址命令只发送给具有相应地址的卡,并需要从卡返回一个响应。
对卡而言也有两类操作:●卡识别模式——在重置(reset)后当主机查找总线上的新卡时,处于卡识别模式。
重置后SD卡将始终处于该模式,直到收到SEND_RCA命令(CMD3)。
●数据传输模式——一旦卡的REC发布后,将进入数据传输模式。
主机一旦识别了所有总线上的卡后,将进入数据传输模式。
操作模式与卡状态关系:3 卡识别模式在卡识别模式,主机重置所有处于卡识别模式的SD卡,检验操作电压范围,识别卡并请求卡发送相对卡地址RCA。
操作对每个卡在各自的CMD线上单独进行,所有的数据传送只使用CMD线。
3.1 重置GO_IDLE_STATE(CMD0)是软件重置命令,设置每个SD卡进入Idle状态。
处于Inactive 状态的卡不受此命令影响。
主机上电后,所有SD卡进入Idle状态,包括处于Inactive状态的卡。