SD卡编程指南
SD卡FAT32文件系统学习手册

SD卡FAT32文件系统学习手册一一般硬盘数据结构是按下面来建立的。
二首先看看启动区的内容,也就是第一个扇区。
使用软件:WinHex有用的内容用彩色线标志下:(1)灰色线内容:EB 59 90 跳转指令;(2)灰色点线内容:4D 53 44 4F 53 35 2E 30 为厂商标志和os 版本号,这里是MSDOS5.0;(3)红色部分:00 20 (偏移地址0BH,长度2)注意这里数据的布局,高地址放高字节,低地址放低字节(数据为小端格式组织),所以数据应该是0200,就是512,表示的意思是,该磁盘每个扇区有512个字节,有的可能是1024、2048、4096;(4)黄色部分:08 (偏移地址0DH,长度1)表示的意思是每个簇有8个扇区,这个值不能为0,而且必须是2的整数次方,比如1、2、4、8、16、32、64、128,但是这个值不能使每个簇超过32KB 字节;(5)蓝色部分:24 00 (偏移地址0EH,长度2),转换一下,就是00 24,意思是保留区域中的保留扇区数为36个,那么就可以知道下面的FAT1区的开始的地址就是:0x24*200(每个扇区的字节数)=0x4800;(6)粉色部分:02 (偏移地址10H,长度1) ,此卷中的FAT结构的份数为2,另外一个是备份的。
(7)黑色部分:C6 03 (偏移地址24H,长度2)转换一下,03C6,每个FAT占用的扇区数。
那么每个扇区占用的字节数就是0x03c6*200=78C00。
根据启动区、FAT1、FAT2、根目录、数据区的次序,可以依次计算出它们的地址了。
启动区:理所当然是0x00;FAT1:0x4800;FAT2:0x4800 + 0x78C00 = 7D400;根目录区:7D400 + 78C00 = F6000;数据区的地址,等等再计算。
这个只是计算,可以看看是不是和实际的一致。
怎么样,是不是和计算的很一致。
为什么要计算为什么要计算SD数据的读取要给出地址,而且每次读取都是一个整扇区,512个字节。
CH376编程指南

/* 往 CH376 数据端口写入数据 */
void xWriteCH376Data( UINT8 mData ) /* 向 CH376 写数据 */
{
/* (*(volatile unsigned char xdata *)0xBCF0) = mData ; */ /* 通过 51 单片机外
部并行总线接口操作向 CH376 写入数据 */
CH376_DATA_DAT_OUT( mData ); /* 向 CH376 的并口输出数据 */
CH376_DATA_DIR_OUT( );
/* 设置并口方向为输出 */
CH376_A0 = 0;
CH376_CS = 0;
CH376 编程指南
2
CH376_WR = 0; /* 输出有效写控制信号, 写 CH376 芯片的数据端口 */
并口读写时序如下:
/* 往 CH376 命令端口写入命令 */ void xWriteCH376Cmd( UINT8 mCmd ) /* 向 CH376 写命令 */ {
/* (*(volatile unsigned char xdata *)0xBDF1) = mCmd ; */ /* 通过 51 单片外部并行总线接口操作向 CH376 写入命令 */ CH376_DATA_DAT_OUT( mCmd ); /* 向 CH376 的并口输出数据 */ CH376_DATA_DIR_OUT( ); /* 设置并口方向为输出 */ CH376_A0 = 1; CH376_CS = 0; CH376_WR = 0; /* 输出有效写控制信号, 写 CH376 芯片的命令端口 */ //CH376_CS = 0; /* 该操作无意义,仅作延时,CH376 要求读写脉冲宽度大于 40nS */ CH376_WR = 1; /* 输出无效的控制信号, 完成操作 CH376 芯片 */ CH376_CS = 1; CH376_A0 = 0; CH376_DATA_DIR_IN( ); /* 禁止数据输出 */ /*mDelay0_5uS( ); mDelay0_5uS( ); mDelay0_5uS( );*/ /* 延时 1.5uS 确保读写周期大于 1.5uS,或者用状态查询代替 */ }
SD卡手册

SD卡(Secure Digital Card):基于FLASH存储单元的卡,它是专为安全性高、容量大、高性能目的设计的。
SD框图如图1-1所示:图1-1SD卡不但有大容量存储单元,还集成有智能控制器来实现接口协议管理、安全性能、版权保护盒ECC校验等。
特点:高达2GB容量、SD卡协议兼容、SPI模式控制、版权保护、密码保护SD卡通讯方式:SD 6线通讯(clk、cmd、D0—3)数据出错保护传送单块、多块数据传送SPI 3线串行总线(clk、DI、DO)可选的非数据保护传送单块、多块数据传送读写次数性能:SD卡数据读次数:不受限(无限次)每扇区写:100,000次SD Mode:SD模式下多卡的识别:SD卡模式是单主机多从机模式,clk和power线共用;识别过程如下:主机分别使能各个卡自己的cmd线,各个卡的CID寄存器是事先编程好的,它是一个用在卡识别过程中唯一数字,主机能使用READ_CID命令读取CID寄存器的值,主机只能读而不能写。
内部上拉的DA T3脚可以用来进行卡插入的侦测,在数据传输过程中可以将上拉电阻断开(使用ACMD42)。
Card Status:存储在一个32bit的寄存器中,它被当做命令应答的数据区来发送,它包含卡当前的状态及上一个命令的完成代码,可以通过SEND_STA TUS命令读取。
SD_Status:存储在512bit的寄存器中,当发送命令SD_STA TUS(ACMD13)时它被当做一块数据块来发送。
存储空间阵列分区如图1-2所示:数据传输的基本单元式byte面向块的命令:Block:块大小就是发送块传输命令时传输的数据字节数,大小可变也可以固定,块的大小及编程存储在CSD寄存器中。
图1-2一次擦除单元的粒度一般与面向块命令不同Sector:这是和擦除命令有关的单元,每个设备扇区的大小事固定的,扇区的大小信息存储在CSD寄存器中。
具有写保护的卡:WP Group:拥有独立写保护的最小单元,Its size is the number of groups which will be write protected by one bit,每张卡WP Group的大小也是固定的,大小信息存在CSD 中。
sd卡读写模块的用法

SD卡读写模块是一种使单片机能够读写SD卡/TF卡的模块,它可以帮助单片机实现大容量存储方案。
该模块内置文件系统,可直接进行文件读写操作,适用于单片机系统。
使用SD卡读写模块时,需要了解其用法和操作。
1. 连接SD卡:将SD卡插入SD卡读写模块的卡槽中,确保卡槽与SD卡之间的接触良好。
2. 连接单片机:将SD卡读写模块与单片机相连接。
通常,SD卡读写模块会提供标准的SPI接口或MMC接口与单片机相连。
根据单片机的接口类型和SD卡读写模块的接口类型,选择合适的连接方式。
3. 初始化模块:在程序中调用SD卡读写模块的初始化函数,对模块进行初始化。
初始化过程中,模块会自动检测SD卡的类型和容量,并配置相应的操作模式。
4. 文件操作:通过调用SD卡读写模块的文件操作函数,实现文件的创建、删除、读取、写入等操作。
例如,可以使用open()函数打开一个文件,使用read()函数读取文件内容,使用write()函数写入文件内容,使用close()函数关闭文件。
5. 目录操作:通过调用SD卡读写模块的目录操作函数,实现目录的创建、删除、遍历等操作。
例如,可以使用mkdir()函数创建一个目录,使用rmdir()函数删除一个目录,使用opendir()函数打开一个目录,使用readdir()函数读取目录下的一个文件,使用closedir()函数关闭目录。
6. 卡操作:通过调用SD卡读写模块的卡操作函数,实现SD卡的格式化、挂载、卸载等操作。
例如,可以使用format()函数格式化SD卡,使用mount()函数挂载SD卡,使用umount()函数卸载SD卡。
需要注意的是,不同的SD卡读写模块可能具有不同的功能和操作方式,因此在使用时需要参考相应的模块手册或开发指南。
同时,为了提高程序的稳定性和可维护性,建议使用模块提供的函数进行操作,而不要直接操作SD卡的底层寄存器。
单片机读写SD卡教程

单片机读写SD卡教程引言:SD卡(Secure Digital Card)是广泛应用于各类数字设备上的一种存储介质。
它小巧轻便,可靠性高,容量大,因此在各种嵌入式系统中都广泛使用。
本教程将介绍如何使用单片机读写SD卡,包括初始化SD卡、读写数据等基本操作。
一、硬件准备在开始之前,我们需要准备以下硬件设备:1.一个支持SPI协议的单片机开发板(例如STC89C51、STM32等);2.一个SD卡插槽,或者是一个带有SD卡插槽的扩展板;3.杜邦线、面包板等连接器。
二、软件准备除了硬件设备,我们还需要准备以下软件工具:1. Keil C51、IAR、Keil MDK等单片机编译工具;2. SD卡相关的库文件,例如FatFs;3.一个用于测试的程序(可以是一个简单的读写数据的程序)。
三、连接SD卡插槽将SD卡插入到对应的插槽中,并将插槽与单片机的硬件SPI接口连接。
根据不同的开发板,连接方式可能有所不同,一般SPI接口包括SCK(时钟线)、MOSI(主机输出从机输入线)、MISO(主机输入从机输出线)和CS(片选线)等。
四、编写读写SD卡的程序在开始编写程序之前,我们需要先了解SD卡的工作原理。
SD卡通过SPI总线与单片机进行通信,通过发送特定的命令和参数实现读写操作。
以下是一个简单的读写SD卡的流程:1.初始化SD卡a.发送CMD0命令,将SD卡设置为SPI模式;b.发送CMD8命令,验证SD卡是否支持高速SPI模式;c.发送ACMD41命令,等待SD卡初始化完成。
2.读写数据a.发送CMD17命令,指定要读取的扇区地址;b.等待SD卡回应,确认读取命令执行成功;c.读取数据;d.发送CMD18命令,继续读取下一个扇区;e.重复步骤c和d,直到读取完所有数据;f.发送CMD12命令,停止读取。
g.发送CMD24命令,指定要写入的扇区地址;h.等待SD卡回应,确认写入命令执行成功;i.写入数据;j.发送CMD25命令,继续写入下一个扇区;k.重复步骤i和j,直到写入完所有数据;l.发送CMD12命令,停止写入。
sd卡模块产品使用手册及单片机程序

BRT = 0XFD;
//设置波特率 9600
AUXR = 0x10;
//启动波特率发生器
EA = 1;
//开总中断
IE2 = 0x01;
//开串口 2 中断
}
/*--------------------------------------
发送一个字符
--------------------------------------*/
--------------------------------------*/
#include "STC12C5A60S2.h"
#define uchar unsigned char
#define uint unsigned int
uchar dat=0;
/*--------------------------------------
S2CON &= ~0x01; dat= S2BUF; } if( S2CON & 0x02 ){ S2CON &= ~0x02; } } /*--------------------------------------
主函数 --------------------------------------*/ void main() { uchar tab[]={"liguangyang!!"}; uchar *p; uchar x; init(); p=tab; for( x=0;x<14;x++ ){ txd_c(p[x]); delay(200); } while(1) P0 = dat; }
串口初始化
--------------------------------------*/
SD卡资料编写

SD卡资料整理1、概述SD卡高度集成闪存,具备串行和随机存取能力。
可以通过专用优化速度的串行接口访问,数据传输可靠。
接口允许几个卡垛叠,通过他们的外部连接。
接口完全符合最新的消费者标准,叫做SD卡系统标准,由SD卡系统规范定义。
SD卡系统是一个新的大容量存储系统,基于半导体技术的变革。
它的出现,提供了一个便宜的、结实的卡片式的存储媒介,为了消费多媒体应用。
SD卡可以设计出便宜的播放器和驱动器而没有可移动的部分。
一个低耗电和广供电电压的可以满足移动电话、电池应用比如音乐播放器、个人管理器、掌上电脑、电子书、电子百科全书、电子词典等等。
使用非常有效的数据压缩比如MPEG,SD卡可以提供足够的容量来应付多媒体数据。
安全数字存储卡(Secure Digital Memory Card,SDC)作为事实上的标准存储卡广泛应用于移动设备上。
SDC 曾作为高层兼容多媒体卡(Multi Media Card,MMC)进行开发。
SDC设备一般也兼容MMC。
还存在一些功能相同但尺寸更小的版本,如RS-MMC、miniSD和microSD。
MMC/SDC 内置一个微控制器,在卡内部执行flash 存储操作(擦写、读取、写入、错误控制和功耗平衡(Wearleveling))。
数据以512 字节为单位在存储卡与主机控制器之间传输,从高层看来,卡可以被看作是通用硬盘设备。
当前定义的用于存储卡的文件系统为FAT12/16 并使用FDISK 分区规则。
FAT32 仅用于大容量卡(>=4G)。
SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。
本小节仅简要介绍SPI模式。
2、引脚SD卡引脚如下图所示:SD卡外部引脚图micro-SD卡-本卡的物理尺寸见【1】。
SPI模式下SD各管脚名称为.JPG注意:SPI模式时,这些信号需要在主机端用10~100K欧的电阻上拉【2a】p4,如下表的相应引脚说明【2a】p5。
SD卡驱动编写流程

SD卡驱动编写流程现在对SD卡驱动编写做个总结,以及本人在调试中遇到的问题。
先介绍一下SD卡规格,其全称Secure Digital Memory Card简写SD,是以Flash Memory为基础的存储卡,自带控制器。
所以编写的驱动是针对控制器接口的,不是针对Flash Memory的。
SD卡支持三种驱动模式,见下图!外观图和PIN定义看下图:分别为SPI模式和SD BUS模式,不同的模式,注意相同编号的PIN意义不一样!下面以SD1bit mode为例子介绍怎么驱动SD卡。
SD卡是以命令驱动的,所以应先了解命令的基本格式,见下图!其中需要用到CRC7下面的图是用示波器实际采集到的CMD6发送时的波形图例说明:深蓝为CLK信号浅蓝为CMD信号红色CMD开始黄色CMD结束结合上面的图很容易理解命令发送格式CRC7码可以用下面函数计算另外还会用到CRC16码,在发送数据和接收数据时需要用到,可以用查表方法,那样速度最快SD卡命令实际使用到的命令有32条,其中基本命令25条,用户应用命令7条。
下面表中详细介绍了每条命令的功能下面的图表为用户命令:要运行用户命令需要先发送基本命令CMD55。
每次运行都需要先发送CMD55其中R1,R2,R3,R6为返回数据格式SD卡内部寄存器介绍:R2,R3,R6,能返回寄存器状态或使用CMD9.CMD10读寄存器内容下面的截图为发送CMD24后,SD卡回复的数据信息图例说明:深蓝为CLK信号浅蓝为CMD信号红色CMD开始黄色CMD结束紫色为DATA0了解命令发送格式后,就可以继续下一步了,向SD卡发送初始化命令和读写数据了,调试过程中这一步很容易出问题,主要是时序匹配不上,发送命令后SD卡没有反映,不过CMD0是个例外用I/O模拟CLK,CMD时需要注意数据是上升沿有效,下降沿触发。
SD卡操作总流程!驱动模式选择卡发送SD退出CD卡操作SD卡支持级联,可以在总线上挂多个设备,通过初始化命令选择卡,状态转换命令退出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SD卡编程指南——如何使用MMC/SDC2011-11-05 苏勇安全数字存储卡(Secure Digital Memory Card,SDC)作为事实上的标准存储卡广泛应用于移动设备上。
SDC曾作为高层兼容多媒体卡(Multi Media Card,MMC)进行开发。
SDC设备一般也兼容MMC。
还存在一些功能相同但尺寸更小的版本,如RS-MMC、miniSD和microSD。
MMC/SDC内置一个微控制器,读取、写入、错误控制和功耗平衡(Wearleveling))。
数据以512字节为单位在存储卡与主机控制器之间传输,从高层看来,卡可以被看作是通用硬盘设备。
当前定义的用于存储卡的文件系统为FAT12/16并使用FDISK分区规则。
FAT32仅用于大容量卡(>=4G)。
本文讲述作者在小型嵌入式系统中使用MMC/SDC中的基本知识和一些琐碎的内容。
作者相信,这些信息对于即将在电子硬件工程中使用MMC/SDC的人会有一些帮助。
1. 引脚下图展示了SDC/MMC的外观,MMC有7个引脚,SDC有9个引脚。
其中三个引脚为电源引脚,故负责通信的引脚MMC有4个,SDC有6个。
主机与卡之间的通信是通过同步串行接口实现的。
工作电源电压范围是有工作状况寄存器(Operation Conditions Register,OCR)指示的,应读该寄存器并确定工作电压范围。
无论怎样,电源应固定在3.0/3.3V,因为所有的MMC/SDC的电源至少是在2.7~3.6V的范围内。
在执行写入操作时,电流消耗能达到几十毫安,因此,主机系统应至少保证能够为卡提供100mA的电流供应。
2. 命令与应答在SPI模式下,信号线上的数据方向是确定的,数据按字节以串行方式传输。
从主机传向卡的命令帧是定长(6个字节)数据包,如下图所示。
当一个命令帧被传送到卡上,命令的应答(R1,R2或R3)从卡上反馈回主机。
由于数据传输是有主机产生的串行时钟驱动的,主机需在读到有效的应答之前保持读取状态以提供时钟,DI信号线上在读通信过程中保持高电平(发送0xFF交换数据)。
应答应在命令响应时间内(NCR)反馈回来,对于SDC为0到8个字节,对于MMC为1到8个字节。
,CS信号线上的电平需在发送命令帧之前被拉低,并在通信过程中(发送命令,接收应答及读写数据)保持低电平。
在SPI模式下,CRC校验功能是可选的,但是CRC字段始终要填充内容以构成一个完整的命令帧。
2.1 常用的SPI模式命令(1)命令由6个字节组成:01+6位命令号+4个字节的命令参数+7位校验码+结束位1。
(2)命令分为10个类:SPI支持:类0——基本控制(0复位、1激活初始化、9读CSD寄存器、10读CID寄存器、12多块过程中停止传输、13读状态寄存器);类2——块读(16设置块长度、17读一个数据块、18读多个数据块,直到发命令12);类4——块写(24写块、25写多个块、27写CSD的可编程为);类5——擦除(32设置擦除块的起始地址、33设置终止块地址、38擦除先前选择的所有块);块6——写保护(可选28设置写保护、29清除写保护、30读写保护状态);类7——锁卡命令(可选42上锁或者解锁);类8——指定应用(55通知SD卡下个是特殊应用命令、56获取或写入一个数据块);类10与类11——保留。
其中,SPI模式不支持类1,类3,类9。
2.2 SPI命令的响应状态有三种命令应答的格式,R1(1个字节)、R2(两个字节)和R3 R3(五个字节),因发送命令而不同。
大部分命令的响应是R1,R1的位段如下图所示,值为0x00表示运行成功,否则由相应状态位置1标识错误。
读取状态寄存器响应R2,只有读取32位的OCR(命令58)使用应答R3。
一些命令的执行时间比NCR长,它们使用应答R1B(1个字节)。
R1B同R1类似(有些命令只需要0或非0反馈,就用R1B,比如停止传输、擦除等命令),即为R1跟在忙标志后(在内部执行命令时DO保持低电平)。
主控制器应等待命令执行完毕直到DO转为高电平3. SPI模式下的初始化过程上电复位之后,MMC/SDC进入原生工作模式(SD模式)。
若要进入SPI模式,须如下图所示执行过程。
3.1 上电(插卡)卡供电达到2.2V以上后,还需等待至少1毫秒才能接收命令。
设定主机控制器的SPI 时钟频率在100kHz到400kHz之间。
设定DI和CS为高电平,同时发送至少74个时钟脉冲到SCLK上。
此时,卡将进入原生工作模式(SD模式)并准备接收原生命令。
3.2 软件复位在CS为低电平时发送命令0,对卡进行复位。
卡在接收命令0成功时对CS信号采样,若CS信号为电平,则卡进入SPI模式并且回应R1进入空闲状态(R1=0x01)。
由于命令0必须作为原生命令发送,CRC字段必须包含有效值。
卡一旦进入SPI模式,CRC功能就被关闭,不再进行CRC校验。
命令0和命令8需要CRC校验时,可将该字段写0。
命令59可以启动CRC功能。
3.3 初始化在空闲状态,卡只接收命令0、命令1、命令41、命令58和命令59。
其它的命令被拒绝执行。
此时,读OCR寄存器并查看卡的工作电压。
若系统供电不在卡的正常供电范围,则卡不工作。
注意,所有的卡工作电压范围为2.7~3.6V。
当接收到命令1时,卡执行初始化过程。
若要检测初始化过程是否结束,主机需持续发送命令1并查看回应直到初始化结束。
当卡成功完成初始化,应答R1的空闲状态位将清零(R1由0x01变为0x00)。
初始化过程将持续几百毫秒(卡容量越大,时间越长),故而需要考虑超时时间的设定。
在空闲状态位被清零后,卡可以接收正常的读写命令。
对于SDC建议时候用命令41(ACMD41)取代命令1,若命令41被拒绝后在用命令1尝试,在理想情况下,所有的卡都支持这两个命令。
若要提高对卡的读写性能,可将SPI通信速率尽量提高。
CSD寄存器中的TRAN_SPEED 字段指示了卡支持的最大工作频率。
大多数情况下,MMC最大工作频率为20MHz,SDC最大工作频率为25MHz。
注意,在SPI模式下时钟需要确定为20/25MHz,因为没有开环条件限制时钟频率。
对于2GB容量的卡,初始读写块长度为1024,这就需要使用命令16将读写块长度重新设定为512以适应FAT文件系统的工作要求。
3.4 支持SDC v2和高容量的卡卡通过命令0进入空闲状态后,以0x000001AA为参数发送命令8并发送正确的CRC,之后进入初始化进程。
若命令8被拒绝并回应非法命令错误(0x05),则表示此卡可能为SDC v1或是MMC。
若命令8被接收,并回应R7(R1(0x01)后跟着32位数据),返回值的低12位为0x1AA,则表示此卡为SDC v2,工作电压范围为2.7~3.6V。
否则,此卡将拒绝访问,此时,可使用以HCS(位30)为参数发送命令41(ACMD41)进行初始化。
完成初始化后,读OCR寄存器并检查CCS(位30),若该位置1,则下文说明的子序列数据读取操作中将使用块地址而不是字节地址。
块地址固定为512字节。
4. 数据传输4.1 数据包与数据回应在数据通信过程中,命令回应后将会有一个或多个数据块被发送/接收。
数据块以数据包发送。
数据包包含令牌(Token)、数据块(Data Block)和CRC校验码,数据包格式如下图所示。
停止传输令牌(Stop Tran Token)表示写入多个块的结束,以单个字节使用而无需数据块和CRC字段。
4.2 读单个块参数指定读取内容的起始地址,以字节或块为单位。
扇区地址是由高层指定的。
当命令17被接收,一个读操作即被启动并将读到数据发送到主机。
检测到有效的令牌后,主机控制器接收数据域和两个字节的CRC。
若不需要进行CRC校验,CRC字段数值必须被填充为偶数。
在读操作过程中,若发生错误,则将返回错误令牌而不是数据包。
4.3 读多个块读多块命令可以从指定地址连续读多个块。
在执行读命令之前,若未指定读取块的数量,传输过程将作为一个开放结束的多块读操作启动,读操作将连续执行,直到发送命令12结束。
发送命令12后,紧接着接收到(交换)的是一个填充字节,在接收到命令12的回应之前应将其抛弃。
4.4 写单个块当卡成功接收一个写命令时,主机控制器在一个空字节后发送数据包,发送数据包格式与块写入命令的格式相同。
若未启动CRC校验功能,CRC字段可以为任何值。
当主机发送一个数据包,卡将在接收数据包后立刻回应一个数据应答,数据应答跟随一个处理写操作的忙标志位。
大多数卡不能被更改写入块的大小,一般固定为512字节。
在基本的SPI模式下,CS信号在传输过程中应为有效,但存在一个例外。
当卡为忙时,主控制器可以关闭CS信号以释放与卡的SPI总线连接供其它SPI设备使用。
在进行内部处理过程中,卡将再次拉低DO信号。
由此,一个预先的忙查询过程(等待准备好后立刻发送命令或数据)取代消极地等待将有效地减少浪费时间。
附加的一个内部过程是在数据回应后发送的一个字节,这以为着启动内部写操作需要8个时钟驱动。
在8个时钟期间,CS信号的状态为无效,以便执行上述的释放总线的过程。
4.5 写多个块多块写命令将按序在指定地址上写入多个块。
若未指定写入块的数量,则写如过程将以开放结束多块写入(open-ended multiple block write)命令开始,连续写入多块数据,以停止传输令牌(Stop Tran token)结束。
在停止传输令牌发送后的一个字节,DO信号线上将会有忙标志。
对于SDC,对块写通信过程必须以一个结束传输令牌结束,与传输类型、预定义或是开放结束无关。
4.6 读CSD和CID读CSD和CID与单块读命令相同,但是读取长度不同。
CSD和CID以16字节的数据块发送给主机控制器。
关于命令(CMD)、CID和OCR,请参见MMC/SDC的说明。
5. 关于总线悬空与热插拔任何可能悬空的信号都应该通过一个上拉/下拉电阻设定初始电平,对于MOS设备,这是一个通用的设计标准。
由于DI和DO在默认情况下为高电平,所以它们应被上拉。
根据SDC/MMC的说明,上拉电阻的阻值建议为50K~100K ohms。
但是,在SDC/MMC说明中未提到时钟信号,这是由于这个信号始终是由主机控制器驱动。
如果有可能悬空,应被拉低到默认状态。
MMC/SDC支持热插拔,但需要考虑主机电路得避免误操作。
例如,若系统供电(Vcc)直接连在卡的接口上,Vcc将在卡接入的一瞬间被拉低,这是因为卡内部的电容上流过充电电流造成的,如A图所示,图中示波器显示电压下降了600mV,这已经足够触发掉电检测了。
B图所示为一个电感插入到接口电路中,瞬间压降为200mV。
一个小的ESR电容,比如6. 考虑多从机配置在SPI总线上,每个从机信号由CS信号选中,可以有多个设备挂载到SPI总线上。