SD卡初始化顺序
SD卡设计基础指南
SD卡设计基础指南目录1、概述 (3)2、SD卡硬件设计规范指导 (3)2.1 SD卡接口总线分类 (3)2.1.1 SD总线拓扑 (4)2.1.2 SPI总线拓扑 (4)2.2 SD卡接口定义 (5)2.3 SD卡工作原理以及总线协议 (7)2.4 SD卡典型应用电路图 (8)2.7 SD卡PCB布局与走线规范 (10)3、SD卡规格总览 (13)3.1 SD卡种类 (13)3.2总线速 (13)3.3 智能型SDIO(iSDIO,无线局域网络SD) (15)4、SD卡的测试 (16)5、参考文献 (16)1、概述SD卡全名:Secure Digital Memory Card,它是由日本松下、东芝及美国SanDisk 公司于1999年8月共同开发研制,具有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。
SD存储卡是特别为符合新出现的音频和视频消费电子设备的安全性、容量、性能和环境要求而设计的一种存储卡,它有比较高的数据传送速度,而且不断更新标准。
SD卡系统是一个新的大容量存储系统,基于半导体技术的变革。
它的出现,提供了一个便宜的、结实的卡片式的存储媒介,为了消费多媒体应用。
SD卡可以设计出便宜的播放器和驱动器而没有可移动的部分。
一个低耗电和广供电电压的可以满足移动电话、电池应用比如音乐播放器、个人管理器、掌上电脑、电子书、电子百科全书、电子词典等等。
它使用非常有效的数据压缩比如MPEG,SD 卡可以提供足够的容量来应付多媒体数据。
SD卡在24mm*32mm*2.1mm的体积内结合了快闪记忆卡控制与MLC技术和东芝的NAND技术,通过9针的接口与专门的驱动器相连接,不需要额外的电源来保持其上的记忆信息。
无论是听音乐、摄影、拍照、存档、或使用智能型手机,SD规格让制造商每天用效能更高的产品,传递更美好的日常使用经验给上百万个消费者。
作为一种产业通用技术标准,SD提供移动储存产业一个多元化的市场区隔应用,包括:移动电话、数码相机、MP3播放器、个人计算机个人电脑、平板计算机平板电脑、列表机打印机、汽车导航系统、电子书、以及更多消费性电子设备。
爱国者SD存储卡 使用指南
爱国者SD存储卡使用指南·第一次使用新卡时a.在使用卡前,必须先格式化。
·sd卡的维护a.卡被插入或取出时请关闭电源。
b.长期重复使用卡将导致其性能降低,此时你需要购买新卡,以备使用。
爱国者公司不保证卡的老化和破损。
c.卡是精密电子器件。
不要折断或以任何重力冲击。
d.请勿将卡存放在强电和强磁场中,例如:在扬声器或电视接收机旁边。
e.请勿在主高温,高湿,高腐蚀的地方使用和保存此卡。
f.请勿将卡接触灰尘,如已沾染灰尘,使用软布清除。
g.当不使用卡时,请将卡保存在盒中。
h.长期拍摄或播放时,您可能发现卡发热,这是正常现象。
·保存sd卡数据(1).如果sd卡出现下列任何情况,记录数据可能陂破坏:a.使用sd卡的方式不正确。
b.初始化,播放资料,记录资料时关闭电源或取出sd卡。
(2).建议将重要资料复制保管在其它媒体作为备份,例如:软盘、硬盘、cd等。
(3).对于不正常使用SD卡造成的记录资料丢失,爱国者公司不负任何责任,敬请谅解。
aigo SD CARD Quick Guide·How to use the SD CARD:SD CARD is easy to use, the instructions on how to use SD CARD with Windows 2000/XP/Vista on computer/camera are shown below:1. 1) Turn on your computer.1. 2) Plug the SD CARD into the SD MMC MS of the computer. The SD CARD symbol should appearunder the”My Computer”file. Under Windows 2000/XP, an icon will appear in the taskbar.1. 3) Plug the SD CARD into the SD MMC MS of the camera. The SD CARD symbol should appear ,andthe camera will have the memory space of the SD CARD.· Technical parameter-Capacity: 2~32GB-Erase cycles > 5,000times-Data Transfer Rate: up to 480Mbps-Connectivity: USB Port Type A。
am5728初始化详解教程
1.1初始化概述1.2预初始化1.3通过ROM代码初始化设备1.4 HLOS支持服务1.1初始化概述本章概述了从开机到操作系统(OS)和应用程序执行的设备初始化要求、整个初始化过程(包括硬件和软件相关步骤)、一般ROM代码操作要求和行为预期。
1.1.1术语•Bootstrap:在内存引导阶段由ROM代码启动的初始软件•配置头(CH):初始软件之前的可选结构,允许重新定义ROM代码默认设置•下载软件:在外围设备启动阶段,通过ROM代码将初始软件下载到内部静态RAM(SRAM)•eFuse:通常在工厂设置的一次性可编程存储器位置•闪存加载程序:在预闪存阶段由ROM代码启动的下载软件。
它还可以在外部存储器中编程图像。
•初始软件:由任何ROM代码机制执行的软件(内存启动或外围启动)。
初始软件是引导和下载软件的通用术语。
•内存引导:ROM代码机制,包括从外部内存执行初始软件•主CPU:ARM®Cortex®-A15 MPCore™CPU-ID为0的CPU。
它配置多核平台并启动ROM代码,以确保设备从大容量存储器(存储器引导)或外围接口(外围设备引导)引导。
•外围启动:ROM代码机制,包括轮询选定的接口、下载和执行内部RAM中的初始软件(在本例中,是下载的软件)•永久引导设备:默认情况下,包含引导序列中要执行的映像的内存设备。
它是默认的内存引导设备。
如果没有对软件引导配置进行编程,则在热复位后使用永久引导设备。
•预闪存:外设启动的一种特殊情况,使用ROM代码机制对外部闪存进行编程•ROM代码:设备ROM中实现引导的片上软件•ROM代码控制启动阶段:该阶段涵盖从平台释放重置到第一个用户或客户拥有的软件开始执行的顺序操作。
此阶段完全由设备ROM代码控制。
•保存和恢复(SAR)RAM内存:在热复位或从低功耗模式唤醒后未清除的片上RAM内存•从CPU:ARM Cortex-A15 MPCore CPU,CPU-ID为1。
sd卡的初始化过程
sd卡的初始化过程SD卡的初始化过程SD卡(Secure Digital Card)是一种便携式存储媒体,常用于存储数码相机、手机、平板电脑等设备的数据。
在使用SD卡之前,需要对其进行初始化,以确保其正常工作。
下面将详细介绍SD卡的初始化过程。
第一步:检查设备兼容性在初始化SD卡之前,需要确保设备支持SD卡。
一般来说,设备上会标有SD卡的图标或者标识,可以通过查看设备的说明书或者咨询厂家来确定设备是否支持SD卡。
第二步:插入SD卡将SD卡插入设备的SD卡槽中。
SD卡槽通常位于设备的侧面或底部,可以根据设备的说明书来确定SD卡的插入方向。
插入SD卡时要注意不要使用过大的力气,以免损坏SD卡或设备。
第三步:打开设备打开设备的电源开关,等待设备启动完成。
在设备启动过程中,系统会自动检测SD卡的插入,并进行初始化。
第四步:访问SD卡一旦设备启动完成,就可以通过设备的操作界面来访问SD卡。
不同设备的操作界面可能会有所不同,但一般会提供文件管理器或者存储设置等功能,用于管理和操作SD卡上的文件和数据。
第五步:格式化SD卡在初次使用SD卡之前,需要对其进行格式化。
格式化SD卡可以清除SD卡上的所有数据,并建立文件系统以便于数据的读写。
格式化SD卡的操作通常可以在设备的操作界面中找到,一般会有格式化选项供用户选择。
第六步:等待格式化完成在进行格式化操作时,设备会对SD卡进行一系列的处理,包括分区、建立文件系统等。
这个过程可能需要一定的时间,具体时间长短取决于SD卡的容量和设备的处理能力。
在格式化过程中,不要拔出SD卡或关闭设备,以免造成数据丢失或SD卡损坏。
第七步:完成初始化当格式化完成后,设备会提示SD卡初始化成功。
此时,SD卡已经可以正常使用了。
可以通过在设备上存储文件、复制文件、删除文件等操作来验证SD卡的正常工作。
总结SD卡的初始化过程包括检查设备兼容性、插入SD卡、打开设备、访问SD卡、格式化SD卡、等待格式化完成和完成初始化。
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卡命令详解
[1:0]=11),上电后发送CMD0,对卡进行软复位,之后发送CMD8命令,用于区分SD卡2.0,只有2.0及以后的卡才支持CMD8命令,MMC 卡和V1.x的卡,是不支持该命令的。CMD8命令格式如下表:
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卡的容量和 扇区大小等十分重要的信息。CSD寄存器我们在这里就不详细介绍了,关于CSD寄存器的详细介绍,请大家参考《SD卡2.0协议.pdf》。 至此,我们的SD卡初始化基本就结束了,最后通过CMD7命令,选中我们要操作的SD卡,即可开始对SD卡的读写操作了。
ACMD41指令响应(R3),包含了SD卡OCR寄存器内容,其定义如下表所示:
内存卡未初始化的原因
内存卡未初始化的原因
内存卡未初始化的原因可能有以下几种:
1. 内存卡可能因为长时间使用或者受到损坏等原因,出现了硬件故障。
这种情况下,进行初始化还是其他操作,内存卡都可能无法正常工作。
2. 内存卡读卡器可能存在问题,比如存在故障或接触不良。
内存卡读卡器是将内存卡与电脑连接的重要设备,如果读卡器存在故障,就可能导致内存卡初始化失败。
3. 内存卡上的数据可能存在异常,比如病毒感染、数据损坏等。
如果内存卡上的数据出现了异常,如病毒感染、数据损坏等,就可能导致内存卡初始化失败。
4. 接触不良也是一个可能的原因。
内存卡与手机接触不良,如松动或有灰尘等,都可能导致初始化失败。
5. 手机系统故障也可能导致内存卡无法正常初始化。
以上信息仅供参考,如果您遇到相关问题,建议寻求专业人员的帮助。
SD卡驱动相关介绍
1SD /MMC HOST CONTROLER1.1SD中断检测时序SD中断检测时序主要是配置好正常中断状态使能寄存器和正常中断信号使能寄存器相关的bit 位。
主要是卡插入状态使能(ENSTACARDNS),卡插入信号使能(ENSIGCARDNS),卡移除状态使能(ENSTACARDREM),卡移除信号使能(ENSIGCARDREM)1.2SD时钟提供时序SD时钟提供按下面的操作进行:A:发送一个SD命令B:检测在4bit模式下SD卡产生的中断。
对于停止SD时钟的提供,只要设置SD时钟使能位为0,该寄存器位在时钟控制寄存器1.2.1时钟改变的函数逻辑SD时钟的改变时通过sdhci_s3c_change_clock()函数来处理,其中主要对时钟控制寄存器和超时控制寄存器进行配置,最后通过sdhci_change_clock()函数来处理SD时钟设置,其中包括分频值的计算,以及时钟控制寄存器的配置等。
1.3SD总线电压控制时序1.4改变总线宽度时序1:设置卡中断状态使能位为0,屏蔽不正确的中断,当改变总线宽度时2:如果是SD内存卡,执行第4部,如果是其他的卡,执行第3步3:设置CCCR中的IENM为0,通过CMD52命令4:改变SD卡的位模式。
改变SD内存卡总线的宽度(ACMD6),SDIO卡的总线宽度设置通过CCCR设置5:如果你想改变成4位传输模式,设置数据传输宽度(WIDE4)到Host Control 寄存器为1,其他方式下,设置为0.6:如果是SD内存卡,结束操作,如果是其他卡,继续第7步7:设置IENM(CCCR)位1,通过CMD52命令8:设置卡中断状态使能位为11.5数据线超时设置为了检测数据线的超时错误,HOST Driver应该执行下面两个步骤1:计算一个检测超时分频值,把值写超时控制寄存器2:设置超时数据值到超时控制寄存器1.6SD 数据交换执行这节主要描述产生时序和控制各种SD数据交换。
单片机读写SD卡
结束语
实验结果表明单片机使用12MHz的晶体振荡器时,读写速度和功耗都基本令人满意,可以应用于对读写速度要求不高的情况下。本文详细阐述了用AT89C52单片机对SD卡进行操作的过程,提出了一种不带SD卡控制器,MCU读写SD卡的方法,实现了SD卡在电能监测及无功补偿数据采集系统中的用途
SPI_TransferByte(0xff);
SPI_TransferByte(0xff);
retry=0;
do{ temp=Write_Command_SD(SD_INIT,0);
//发送初始化命令
retry++;
if(retry==100) //重试100次
{SD_Disable(); //关片选
return(INIT_CMD1_ERROR);
//如果重试100次失败返回错误号
}
}while(temp!=0);
SD_Disable(); //关片选
ቤተ መጻሕፍቲ ባይዱ return(TRUE); //返回成功
}
数据块的读写
本文的实现程序把SPI总线读写功能集成在一起,传递的val变量既是向SPI写的数据,也是从SPI读取的数据。具体程序如下:(程序是在Keil uVision2的编译环境下编写)
sdio linux驱动流程图
SD卡的工作原理想了解SD卡的工作原理,首先需要了解的就是SD卡协议了,这个在网上可以轻松的下载到。
在了解协议后,就可以看看下面的一些开发思路了。
首先看下脱离操作系统如何在S3C2410上实现SD卡的读写。
过程可以分为3个大的步骤:初始化sd卡、写sd卡、读sd卡;下面的过程是我通过realview-MDK环境测试过的。
一、初始化sd卡二、写sd卡写sd卡可以分为3种方式:POLL、中断、DMA (1)POLL写三、读sd卡读sd卡也可分为3中方式:POLL、中断、DMA (1)POLL读SD卡linux驱动工作原理,说了下脱离操作系统如何在S3C2410上实现SD卡的读写。
了解了脱离操作系统的工作原理后,现在可以思考linux是如何管理管理SD卡的了。
Linux中SD驱动可以分为3层:块设备层(mmc_block.c ,mmc_sysfs.c,mmc_queue.c)、mmc协议层(mmc.c)、sd驱动层(s3c2410_sdi.c)。
下面从以下几个方面理解驱动:1、s3c2410_sdi.c代码初始化过程;2、SD卡块设备注册过程;3、request及数据传输的实现。
下面介绍的过程参考的代码是内核版本是2.6.8,其它版本过程类似。
一、s3c2410_sdi.c代码初始化过程二、SD卡块设备注册过程三、request及数据传输的实现SD卡调试关键点:1. 上电时要延时足够长的时间给SD卡一个准备过程,在我的程序里是5秒,根据不同的卡设置不同的延时时间。
SD 卡初始化第一步在发送CMD命令之前,在片选有效的情况下首先要发送至少74个时钟,否则将有可能出现SD卡不能初始化的问题。
2. SD卡发送复位命令CMD0后,要发送版本查询命令CMD8,返回状态一般分两种,若返回0x01表示此SD卡接受CMD8,也就是说此SD卡支持版本2;若返回0x05则表示此SD卡支持版本1。
因为不同版本的SD卡操作要求有不一样的地方,所以务必查询SD卡的版本号,否则也会出现SD卡无法正常工作的问题。
SD卡的命令大全
SD卡的命令大全SD卡的命令格式:SD卡的指令由6字节(Byte)组成,如下:Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)Byte2-5:Command Arguments,命令参数,有些命令没有参数Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位02.SD卡的命令SD卡命令共分为12类,分别为class0到class11,不同的SDd卡,主控根据其功能,支持不同的命令集如下:Class0 :(卡的识别、初始化等基本命令集)CMD0:复位SD 卡.CMD1:读OCR寄存器.CMD9:读CSD寄存器.CMD10:读CID寄存器.CMD12:停止读多块时的数据传输CMD13:读Card_Status 寄存器Class2 (读卡命令集):CMD16:设置块的长度CMD17:读单块.CMD18:读多块,直至主机发送CMD12为止 .Class4(写卡命令集) :CMD24:写单块.CMD25:写多块.CMD27:写CSD寄存器 .Class5 (擦除卡命令集):CMD32:设置擦除块的起始地址.CMD33:设置擦除块的终止地址.CMD38: 擦除所选择的块.Class6(写保护命令集):CMD28:设置写保护块的地址.CMD29:擦除写保护块的地址.CMD30: Ask the card for the status of the write protection bitsclass7:卡的锁定,解锁功能命令集class8:申请特定命令集。
class10 -11 :保留有关sd卡驱动和fat fs的实现用了3个文件来实现。
sdboot.c为sd的驱动(可理解为pdd)层,主要实现一些对sd控制器的配置以及一些基本sd命令的实现和对sd卡的操作。
SPI模式下对SD卡的操作
SPI模式下对SD卡的操作STM32的SPI设备简介:STM32F107VC有3个SPI设备,SPI控制器在输出数据的同时采样输入数据,使用相同时钟线。
Master设备写操作的同时,读入寄存器同时采样填充,每次也需要清空寄存器。
Master设备的读操作,实际上是通过写数据输出时钟序列,采样MISO的信号。
SD卡简介:SD卡的技术规范经过几次升级,与最初版本已有很大不同,本文基于Ver 3.01讨论从容量上分SD卡支持SPI的Mode0和Mode3SD卡支持50MHz总线,STM32的APB2总线最高72MHz,SPI分频?为36Mhz,理论上所有SD卡都可以正常操作,实际上一些低版本的卡缺乏稳定性插入信号CD:CD线是可选的信号线,没有卡时为高电位,有卡插入时CD为低电位电位稳定延迟:CS线为高的状态下输出若干时钟,延迟利于电位稳定SD卡的准备状态,初始化操作:SD卡从上电到可读写状态需要一定序列命令的操作,这个过程包括选择SPI模式和判断卡的版本以及供电操作SD规范中的流程图CMD0SD卡上电后使用CMD0进入SPI模式,CMD0的返回值是1字节的R1,R1应该为空闲0x01CMD8版本2.0以上的SD卡支持CMD8命令,包括大部分SDHC的卡和所有SDXC卡,早期的SDHC卡有可能仍属于V1.0卡命令返回值R7,第一字节为R1,Ver1.0的卡对R1的“非法命令”位2置位,Ver2.0以上卡应返回0x01ACMD41和CMD1ACMD41是为卡供电命令,供电前卡的状态为空闲(idle),R1的返回值为0x01,供电后为动作状态(ready)一些早期的卡认为ACMD41是非法命令,只能用MMC的CMD1命令供电CMD58CMD58读取卡的状态,一个重要的标志位CCS,会影响到读写操作中地址数据的设定CCS为1时为高版本卡,数据地址为页单位,512字节为一页CCS为0时,地址为以字节为单位实际地址CCS置位与否也取决于ACMD41中对HCS:30bit的置位请求CMD9取得卡容量等信息,CSO寄存器,CSO是16个字节的结构体,加上2字节的CRC,应读取18字节的内容卡的信息也有版本区别,需要分别处理CMD24 CMD17CMD24写数据CMD17读数据SD的读写都要以页单位进行,无论是否是新版本。
西门子cpu恢复出厂设置及格式化存储卡的方法总结
如何复位SIMATIC S7-300的MMC卡描述对于S7-300 CPU,在不插入MMC或者插入含无效参数的MMC启动时,本地接口的通信参数(协议,波特率和站址)都会保持,仍然可以通过先前的通信数据访问至【J CPU。
通信数据只有在进行恢复出厂设置或者插入含有有效参数的MMC启动时改变。
S7 300 CPU对于S7-300CPU (除CPU 318外),从固件V2.5版开始,支持“复位至出厂状态”功能。
在操作指南”S7-300CPU31xCandCPU31x:安装"(条目号:13008499)的9.5 章节中,可以找到关于“复位至出厂状态”的步骤及结果的所有信息。
MMC只有MMC卡包含对该CPU无效的参数时才可能复位MMCo此时只能按下述步骤初始化MMC:在复位MMC时所有的用户数据都被删除。
复位按如下操作:1.将MMC插入CPUo CPU请求进行完全复位(STOP LED慢闪)。
2.将CPU开关拨至$1^5”,保持直至5T(^1^口常亮(约9秒)。
3.在接下来的3秒内,放开开关并再次拨至“MRES”,此时进入删除过程,STOP LED闪烁。
如果在进行上述操作后,CPU仍然请求被动格式化,则MMC卡被动格式化失败。
说明:对于固件版本为V3.2和V3.3的CPU如果不能通过CPU复位MMC,此时,需要一个PG或者SIMATIC USB读卡器来复位MMC具体信息可以通过条目13体信45获取,在下一个固件版本将取消这种操作行为说明条目号21829579描述了如何在S7-300 CPU之外对SIMATIC MMC进行写入或删除操作。
*无效系统数据,譬如存储的是不同类型CPU的数据。
9.5 复位为出厂状态CPU的出厂状态CPU属性的默认值设置:表格9 3 出J状态下的CPU操作步骤进行如卜操作以通过模式选择蹲开关将CPU空位为出厂状态:1 .切断电源电作.2 .从CPU 和卜SIMATICMMC 卡.3 .模式选择当选向MRES,然后再次接通电源电张.4 .请等待,直到卜面概述的LED灯图像1出现.5 .松开模式选择器开关.& 3眇钟内将其设置回MRES并保挣在此位置.6 .请等待,直到下一个概述的LED灯图像2出现.流灯图像亮起约五秽钟,即RESET的持续时间.在此期何.您可以通过松开模式选择器开关来中断复位步骤.7 .请等待,直到期后概述的LED灯图像3出现.然后冉次松开模式选择器开关.现在.CPU史位为出厂状态.无需缓冲便可后动《所有LED均亮起),并切换为STOP模式.CPU31xC KJCPU 31x:安装澧作说吗03/2011. A5E00432663-12 212CPU正在复位时的灯图像将CPUt位为出‘状态时. LED灯匡演亚亮起•包J去宰94 力图尊LED量色灯图像1灯图像2灯图像3STOP黄色O□□RUN嫌色O□□FRCE黄色0□□5 VDC绿色A A ASF怔色□0△BFx H色□□□3 ,LED亮数□ » LED也灭0 s LEO VI 0 5 Hz的顿率囚爆说明去掉PROFINET CPU以用于1:同位置•成药R置于机录卜时.必须将CPU恢女为出厂设置.*是因为R IP边址和设各名称WW存砧在保持型在站券中.用户不能格式化MMCW R能是复位“MMC卡,这会胆涂所有用户数嬴按以下步曲行:LMMC卡适在CPU的底板m CPU要求整机星位(STOP LED灯慢为煽).2,将开关扳到MRES并在柜里保持(大约9秒)到STOP LED灯持釜灵3.在接下家的3秒钟内必须将开关扳茗,并再次扳到MRESc STOP LED灯在刊涂过程中闪第如果MMC卡在以二盾迷的步景完成后仍遮实请求圣叽复位.她该卡有故苣.照除MMC卡由的程序有三种方法:1 .在短打开blocks ,选择要删除的块.用delete廨涂:2 .^plc/do^nload user program to memory card 下载一^交的程字;3 .使用西门子PG或西门子专用读卡器未删除或执行整式化.具徐瑾作参考:《S7・300CPU一器介绍与—卡的期(更轩版)》了■(2007.12.28 )http "wM.’waG.siemeRS.coE.crVdonEoad,searc”Res』t aspx?sea「chTex:=A00g7<S7~400CPU色器介诏与一也用(2006.09 22 )>下载:httD://www . crVdovmload/searcnResclt aspx?sea「chTex1=A0053《MMC卡款提的读写(更新版)(2008.01.17)>下放httpj/A\vwafl.siemens.coE.crVdownload,searchResdtaspx?sea「chTex:=A0ir3回答杳:弋廿barry冬季二口第13来2a?@闻2 10 2-47E、人✓X-S.。
sd卡数据读写流程
sd卡数据读写流程SD卡是一种常见的存储媒介,它具有轻便、易携带、容量大、存储速度快等优势。
SD卡数据读写流程是指将数据从SD卡中读取出来或将数据写入SD卡中的整个过程。
一、SD卡的物理结构SD卡主要由控制器、记忆芯片和接口组成。
控制器负责管理SD卡的读写操作;记忆芯片是存储数据的核心部件,它采用闪存技术,可存储数据并保持数据不易丢失;接口是SD卡与主控制器进行通信的桥梁,一般采用SPI(串行外设接口)或SDIO(SD输入输出)接口。
二、SD卡读写流程1.初始化SD卡当主控制器接通SD卡电源时,首先要进行初始化操作。
初始化操作主要包括向SD卡发送复位命令、读取SD卡的OCR(操作条件寄存器)以及设置SPI或SDIO接口的工作参数等操作。
2.读取SD卡信息在SD卡初始化成功后,主控制器通过SPI或SDIO接口向SD 卡发送命令,读取SD卡ID信息、SD卡容量、SD卡速度等重要参数。
这些信息将在数据读写时起到重要作用。
3.读取文件SD卡上的文件存储在文件系统中,主控制器需要先读取文件系统,找到要读取的文件所在的位置。
一般情况下,文件系统采用FAT32格式,主控制器需要读取文件系统启动区扇区信息,从而找到文件所在扇区及其起始地址。
4.读取数据在找到文件所在位置后,主控制器就可以根据文件系统的信息,向SD卡发送读操作指令,读取文件数据。
读取数据时,主控制器需要根据SD卡的速度、数据传输模式等参数设置接口波特率、时序等参数。
5.写入数据SD卡写数据流程与读数据基本相同,只是主控制器需要向SD卡发送写操作指令,将数据写入SD卡中。
写入数据时,主控制器需要根据SD卡的容量、速度等参数设置写入数据的起始位置、写入数据的长度、写入数据的校验和等参数。
6.关闭SD卡当读写操作完成后,主控制器需要向SD卡发送停止指令,将SD卡彻底关闭。
关闭SD卡可以避免SD卡数据丢失、损坏等问题。
三、SD卡的数据保护SD卡存储的数据非常重要,因此在SD卡的读写过程中,需要采取一定的措施保护数据。
SD卡使用手册
SD卡使用手册第1章 SD软件包使用手册SD/MMC 卡是一种大容量(最大可达4GB)、性价比高、体积帏、访问接口简单的存储卡。
SD/MMC 卡大量应用于数码相机、MP3 机、手机、大容量存储设备,做为这些便携式设备的存储载体,它还具有低功耗、非易失性、保存数据无需消耗能量等特点。
SD 卡接口向下兼容MMC(MutliMediaCard 多媒体卡)卡,访问SD 卡的SPI 协议及部分命令也适用于MMC 卡。
1.1 SD/MMC卡的外部物理接口SD 和MMC 卡的外形和接口触点如图1 所示。
其中SD 卡的外形帺寸为:24mm x 32mm x 2.1mm (普通)或24mm x 32mm x 1.4mm (薄SD 存储卡),MMC 卡的外形帺寸为24mm x 32mm x 1.4mm 。
表1 为SD/MMC 卡各触点的名称及作用,其中MMC 卡只使用了1 ~ 7 触点。
表1 SD/MMC 卡的焊盘分配滨:1. S:电源;I:输入;O:推挽输出;PP:推挽I/O。
2. 扩幕的DAT 线(DAT1 ~ DAT3 )在上电后处于输入状态。
它们在执行SET_BUS_WIDTH 命令后作为DAT 线操作。
当不使用DAT1 ~ DAT3 线时,主机应使自己的DAT1~DAT3 线处于输入模式。
这样定义是为了与MMC 卡保持兼容。
3. 上电后,这条线为带50KΩ上拉电阻的输入线(可以用于检测卡是否存在或选择SPI 模式)。
用户可以在正常的数据传输中用SET_CLR_CARD_DETECT(ACMD42 )命令断开上拉电阻的连接。
MMC 卡的该引脚在SD 模式下为保留引脚,在SD 模式下无任何作用。
4. MMC 卡在SD 模式下为:I/O/PP/OD。
5. MMC 卡在SPI 模式下为:I/PP。
由表1 可见,SD 卡和MMC 卡在不同的通信模式下,各引脚的功能也不相同。
这里的通信模式是指微控制器(主机)访问卡时使用的通信协议,分为两种:SD 模式及SPI 模式。
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可以通过重新定义先前保留的位,来扩展一些已经存在的命令的新功能。
SD卡中文数据手册
SD卡中⽂数据⼿册SD卡中⽂数据⼿册⼀概述1.SD总线模式下CLK:时钟信号CMD:双向命令和响应信号DAT0-3:双向数据信号VDD,VSS:电源和地信号SD模式下允许有⼀个主机,多个从机(即多个卡),主机可以给从机分别地址.主机发命令有些命令是发送给指定的从机,有些命令可以以⼴播形式发送.SD模式下可以选择总线宽度,即选⽤⼏根DAT信号线,可以在主机初始化后设置.2.SD总线协议SD模式下的命令和数据流都有⼀个开始位和结束位.>命令:是在CMD上传输的⽤于启动⼀个操作的⽐特流.由主机发往从机,可以是点对点也可以是⼴播的. >响应:是在CMD上传输的⽤于之前命令回答的⽐特流.由从机发往主机.>数据:是在DAT上传输的⽐特流,双向传输.⽆响应模式⽆数据模式多块读操作模式多块写操作模式命令格式响应格式数据格式SD卡上电后会⾃动初始化,通过给卡发送CMD0也可以复位卡.⼆.SD卡命令描述.1.⼴播命令:给所有卡都发送,某些命令需要响应.2.点对点命令给指定地址的卡发送,需要响应.SD卡系统有两种⼯作模式:1.卡识别模式.主机上电复位后即处于此模式,它会在总线上等待卡.卡复位后也处于此模式,直到SEND_RCA(CMD3)命令到来.2.数据传输模式.卡收到SEND_RCA(CMD3)命令后即进⼊此模式.主机识别到卡后也进⼊此模式.卡状态和⼯作模式对照表1.卡识别模式.此模式下主机复位总线所有的卡,验证⼯作电压,询问卡的地址.这个模式下所有数据的传输都是只通过CMD线来完成.1)卡的复位.当卡上电或收到GO_IDLE_STATE(CMD0)命令后,卡即进⼊Idle State状态.此时卡将其RCA设为0,相关寄存器设为传输稳定的最优模式.2)⼯作电压验证每个卡的最⾼和最低⼯作电压存储在OCR.只有当电压⽐配时,CID和CSD的数据才能正常传输给主机.SD_SEND_OP_COND(ACMD41)命令⽤来判断卡的⼯作电压是否符合,如果不符合的话,卡应该放弃总线操作,进⼊Inactive State状态.在发送SD_SEND_OP_COND(ACMD41)命令前记得要⾸先发送APP_CMD (CMD55).卡的状态变换图.ACMD41命令响应中的BUSY位也⽤于卡表⽰其还没准备好,主机此时应重发ACMD41命令,直到卡准备好.主机在这个阶段的ACMD41中不允许改变⼯作电压,如果确实想改变的话,应该先发送CMD0,然后再发送改变后的ACMD41.GO_INACTIVE_STATE(CMD15)命令⽤于使指定地址的卡进⼊Inactive State模式.3)卡识别过程.ALL_SEND_CID(CMD2)命令⽤于获取卡的CID信息,如果卡处于Ready State,它就会在CMD线上传送它的CID信息,然后进⼊Identification State模式.紧接着发送CMD3 (SEND_RELATIVE_ADDR)命令,⽤于设置卡新的地址.卡收到新的地址后进⼊Stand-by State 模式.2.数据传输模式.数据传输模式下卡的状态转变图进⼊数据传输模式后,主机先不停的发送SEND_CSD(CMD9)命令获取卡的CSD信息. SET_DSR(CMD4)⽤于设置卡的DSR寄存器,包括数据总线宽度,总线上卡的数⽬,总线频率,当设置成功后,卡的⼯作频率也随之改变.此步操作是可选的.CMD7命令⽤于使指定地址的卡进⼊传输模式,任何指定时刻只能有⼀个卡处于传输模式.传输模式下所有的数据传输都是点对点的,并且所有有地址的命令都需要有响应..所有读命令都可以由CMD12命令停⽌,之后卡进⼊Transfer State.读命令包括单块读(CMD17),多块读(CMD18),发送写保护(CMD30),发送scr(ACMD51)和读模式⼀般命令(CMD56)..所有写命令都可以由CMD12命令停⽌.写命令包括单块读(CMD24),多块读(CMD25),写CID(CMD26),写CSD(CMD27),锁和解锁命令(CMD42)和写模式⼀般命令(CMD56)..当写命令传输完成后,卡进⼊Programming State(传输成功)或Transfer State(传输失败).如果⼀个卡写操作被停⽌,但其前⾯数据的CRC和块长度正确,数据还是会被写⼊..卡要提供写缓冲,如果写缓冲已满并且卡处于Programming State,DAT0保持低BUSY. .写CID,CSD,写保护,擦除命令没有缓冲,当这些命令没完时,不应发送其他的数据传输命令..参数设置命令在卡被编程时是不允许发送的,这些命令包括设置块长度(CMD16),擦除块起始(CMD32)和擦除块结束(CMD33). .当卡正编程时读命令是禁⽌的..⽤CMD7使另⼀个卡进⼊Transfer State不会终⽌当前卡的编程和擦除,当前卡会进⼊Disconnect State并且释放DAT线..Disconnect State模式的卡可通过CMD7重新被选中,此时卡进⼊Programming State 并且使能busy信号..CMD0或CMD15会终⽌卡的编程操作,造成数据混乱,此操作应禁⽌.1)总线宽度选择命令ACMD6命令⽤于选择总线宽度,此命令只有在Transfer State有效.应在CMD7命令后使⽤.2)块读命令块是数据传输的最⼩单位,在CSD(READ_BL_LEN)中定义,SD卡为固定的512B.每个块传输的后⾯都跟着⼀个CRC校验.CMD17(READ_SINGLE_BLOCK)⽤于传输单个块,传输完之后,卡进⼊Transfer State.CMD18(READ_MULTIPLE_BLOCK)⽤于多个块的传输,直到收到⼀个CMD12命令.3)块写命令与块读命令类似,每个块传输的后⾯都跟着⼀个CRC校验.卡写数据时会进⾏CRC校验.多块写⽐重复的单块写更能提⾼效率.如果CSD中的WRITE_BLK_MISALIGN没设置,并且发送的数据不是块对齐的,卡会设置状态寄存器中的ADDRESS_ERROR 位,并且进⼊Receive-data-State状态等待停⽌命令.此时写操作也会停⽌,并且卡会设置其的WP_VIOLATION位.如果写缓冲满的话,卡会停⽌接受WRITE_BLOCK命令.此时主机应发送SEND_STATUS (CMD13)命令,卡返回数据的READY_FOR_DATA位标志卡是否准备好接受新的数据.在多块写操作中通过事先发送ACMD23命令可提⾼写速度.ACMD23⽤于定义接下来要写数据的块的数⽬.每次多块写操作后,这个值⼜被设为默认的1.ACMD22会使卡返回写成功的块数⽬.4)擦除命令擦除命令的顺序是:ERASE_WR_BLK_START(CMD32),ERASE_WR_BLK_END(CMD33)and ERASE (CMD38).如果(CMD38或(CMD32,33)接收到出错信息,卡会设置状态寄存器中的ERASE_SEQ_ERROR 位并且重新等待新的命令时序.如果接收到时序错误命令,卡会设置其ERASE_RESET位并且重新等待新的命令时序.5)写保护管理三种机制:-.写保护物理开关-.卡内部写保护通过设置CSD中的WP_GRP_ENABLE位和WP_GRP_SIZE位,SET_WRITE_PROT和CLR_WRITE_PROT命令⽤来设置和清除保护机制.-.密码保护.三.时钟控制如果主机要发送1K的数据,但是主机缓冲区只有512B,那么主机可以在发送完前512B 后,可以先停⽌时钟,然后把后512B填充⼊缓冲区,再启动时钟,这样卡并不会检测要两次发送之间的间隔,认为其是⼀次完整的数据发送过程.四CRC校验1.CRC7CRC7⽤于所有的命令,除R3以外的响应,以及CID和CSD寄存器.2.CRC16CRC16⽤于数据块的校验五.错误类型.1.CRC错误和命令⾮法错误命令的CRC校验出错,卡设置其状态寄存器的COM_CRC_ERROR位.⾮法命令错误,卡设置其状态寄存器的ILLEGAL_COMMAND位.⾮法命令包括:不⽀持的命令,未定义的命令以及当前状态不⽀持的命令.2.读,写和擦除超时.卡应该在指定的时间内完成⼀个命令或返回移动的错误信息.如果在指定的超时时间内主机收不到响应,应认为卡停⽌⼯作,应重新复位卡.六命令1.命令类型:-bc不需要响应的⼴播命令.-bcr需要响应的⼴播命令.每个卡都会独⽴的接收命令和发送响应.-ac点对点命令,DAT线上没数据-adtc点对点命令,DAT线上有数据所有命令均遵守上图中的格式,总共48位.⾸先是1个起始位0,接着是1个⽅向位(主机发送位1),6个命令位(0-63),32位参数(有些命令需要),CRC7位校验,1个停⽌位. 2.卡命令根据不同的类型分成了不同的Class,见下表,其中Class0,2,4,5,8是每个卡都必须⽀持的命令,不同的卡所⽀持的命令保存在CSD中.3.命令详细描述1)基本命令Class02)读命令Class23)写命令Class43)擦除命令Class54)应⽤特定命令Class8下表中的所有命令使⽤前都应先跟⼀个APP_CMD(CMD55)命令七.卡状态转换表⼋.应答.所有的应答都是通过CMD发送,不同的应答长度可能不同.总共有四种类型的应答.1.R1:长度位48位.注意每个块传输完成后有⼀个BUSY位.2.R1b:与R1类似,只是将BUSY位加⼊响应中.3.R2(CID CSD寄存器):长度为136位,CID为CMD2和CMD10的应答,CSD为CMD9的应答.4.R3(OCR寄存器):长度位48位.作为ACMD41的应答.5.R6(RCA地址应答):长度为48位九.卡的状态SD卡⽀持两种状态:-卡状态:与MMC卡兼容.-SD卡状态:扩充到了512位.1.卡状态:R1应答包含⼀个32位的卡状态.见下表.其中Type中的含义为:E:错误位.S:状态位.R:根据命令在响应中设置.X:根据在命令执⾏期间设置,必须再次读此位才能获得命令执⾏后的情况.Clear Condition:A:与卡的当前状态有关B:总是与命令有关,⽆效的命令会清除此位.C:通过读此位来清除下表指明了哪些命令可能使哪些位产⽣变化这些位通过DAT线传输,并伴有CRC16校验.其是作为ACMD13的应答.⼗.卡存储器形式.-块:块是基本读写命令的单位,它可以是固定的或可变的.关于块的⼤⼩以及其是否可变性存储在CSD中.-扇区:扇区是擦除命令的单位,它是固定的值,保存在CSD中.⼗⼀.时序图时序图中字母含义:1.命令和应答1)卡识别和卡⼯作电压确认模式:CMD2,ACMD412)地址分配模式:CMD33)数据传输模式:4)命令结束->下⼀个命令:5)两个命令直接2.数据读.1)单块读:CMD172)多块读:读过程时序.停⽌命令时序3.数据写1)单块写:注意Busy信号.2)多块写:多块写命令时序停⽌命令时序卡主动停⽌时的时序4.时序值。
sd 初始化流程
sd 初始化流程SD卡的初始化流程SD卡是一种常见的存储设备,广泛应用于移动设备和嵌入式系统中。
在使用SD卡之前,需要对其进行初始化操作,以确保正常的读写功能和稳定性。
本文将介绍SD卡的初始化流程。
1. 电源供应和硬件连接在进行SD卡初始化之前,首先需要为SD卡提供电源供应。
通常,SD卡的电源供应连接至系统电源,通过电源管理模块进行控制。
此外,还需要确保SD卡与主控芯片之间的硬件连接正常,包括SD卡插槽和主控芯片引脚的连接。
2. 延迟初始化为了保证SD卡在上电之后能够正常工作,需要进行延迟初始化。
延迟初始化的目的是等待SD卡电源稳定,并确保SD卡的时钟信号在合适的频率下运行。
一般来说,延迟初始化的时间为几毫秒,具体时间取决于SD卡的规格和电源供应的稳定性。
3. 发送软复位命令在SD卡初始化的过程中,需要向SD卡发送软复位命令,以恢复SD卡至初始状态并启动其内部逻辑。
软复位命令是一条特殊的命令,通过主控芯片发送给SD 卡,使得SD卡进入待机状态并准备接收后续的命令。
4. 识别SD卡类型在成功发送软复位命令之后,主控芯片需要对SD卡进行类型识别,以确定SD卡的规格和工作模式。
主要包括以下几个步骤:- 发送询问命令:主控芯片向SD卡发送查询命令,获取SD卡的版本和规格信息。
- 解析应答数据:主控芯片接收SD卡的应答数据,并解析其中的信息,包括SD卡的(标准)容量、支持的总线模式(SPI或SD)等。
- 切换总线模式(可选):如果主控芯片支持多种总线模式,可以发送切换命令,将SD卡从SPI模式切换至SD模式,以提高读写速度和性能。
5. 发送初始化命令根据SD卡的类型和工作模式,主控芯片需要选择合适的初始化命令,对SD卡进行初始化设置。
这些初始化命令包括发送时钟频率设置命令、协议设置命令、块大小设置命令等,用于配置SD卡的工作参数,以实现更高效的数据读写操作。
6. 检查初始化状态在发送初始化命令之后,主控芯片需要等待SD卡返回操作完成的状态。
HI3512开发板加载SD卡和SATA接口硬盘
硬盘接口硬盘加载SD卡和SATA接口HI3512开发板开发板加载一、PCI-SATA硬盘的加载连接SATA硬盘的硬件,注意电源部分不要插反,黄线为+12V、红线为+5V,SATA硬盘接口定义祥看《SATA接口定义》。
第一次使用硬盘时需要修改uboot的启动参数(支持PCI主设备,从设备启动参数不同,详看《Hi3511/Hi3512 外围设备驱动操作指南.pdf》):hisilicon# setenv bootargs 'mem=32M console=ttyAMA0,115200 busclk=144000000 root=1f01 rootfstype=jffs2 mtdparts=phys_mapped_flash:2M(boot),14M(rootfs) pcimod=host pciclksel=16' 保存启动参数hisilicon# saveenv然后开始加载PCI支持模块(SATA使用的是PCI转SATA)1、启动时加载MMZ~$: modprobe mmz mmz=ddr,0,0xE2000000,64M2、加载pci host支持模块~$: insmod /hisi-pci/pci_hwhal_host.ko // 加载底层设备驱动所需模块~$: insmod /hisi-pci/pci_proto_host.ko // 加载主从设备通信协议层模块时间稍长有几十秒~$: insmod /hisi-pci/pci_vcom_host.ko // 加载主从虚拟串口设备所需模块~$: insmod /hisi-pci/pci_vether_host.ko // 加载主从虚拟网口设备所需模块支持模块硬盘支持模块3、加载sata硬盘~$: modprobe sd_mod~$: modprobe sata_sil~$: modprobe nls_cp437~$: modprobe nls_iso8859-1~$: modprobe vfat4、mount sata硬盘到mnt文件夹~$: mount -t vfat /dev/scsi/host0/bus0/target0/lun0/part4 /mnt如果硬盘是第一次使用,要使用fdisk命令进行分区,mkdosfs命令进行格式化,下面是详细的实例(320G的日立SATA硬盘):1、对硬盘进行分区~$: fdisk /dev/scsi/host0/bus0/target0/lun0/disc提示:Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable.The number of cylinders for this disk is set to 38913.There is nothing wrong with that, but this is larger than 1024,and could in certain setups cause problems with:1) software that runs at boot time (e.g., old versions of LILO)2) booting and partitioning software from other OSs(e.g., DOS FDISK, OS/2 FDISK)Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Command (m for help):输入命令m,根据帮助信息进行操作。
SD卡读写操作详细说明
SD卡读写操作详细说明SD卡(Secure Digital Card)是一种常见的存储设备,广泛应用于各种数码设备,如相机、手机、音乐播放器等。
SD卡读写操作是指对SD卡进行数据的读取和写入操作。
本文将详细介绍SD卡的读写操作流程和相关细节。
一、SD卡读写操作的基本原理SD卡采用了Flash存储技术,数据的读写是通过对存储芯片中的电荷进行控制实现的。
每个存储单元可以存储一个位(0或1),多个存储单元可以组成字节、块等不同大小的数据单元。
二、SD卡的初始化在进行SD卡的读写操作之前,首先需要对SD卡进行初始化。
SD卡的初始化包括以下几个步骤:1.插入SD卡:将SD卡插入到SD卡插槽中。
2.电源供给:给SD卡供电,使其可以正常工作。
3.寻卡:通过命令与SD卡进行通信,找到SD卡并识别其属性和参数。
三、SD卡的读操作SD卡的读操作是指从SD卡中读取数据。
SD卡的读操作流程如下:1.发送读命令:通过控制器向SD卡发送读命令,告知SD卡要读取的数据的起始地址和长度。
2.接收应答:SD卡接收到读命令后,会返回一个应答信号,确认是否接收到了读命令。
3.读取数据:当SD卡接收到读命令后,在指定的地址范围内读取数据,并将数据传输给控制器。
4.数据传输:控制器接收到SD卡传输的数据后,将数据转发给主机或其他设备进行处理。
四、SD卡的写操作SD卡的写操作是指向SD卡中写入数据。
SD卡的写操作流程如下:1.发送写命令:通过控制器向SD卡发送写命令,告知SD卡要写入的数据的起始地址和长度。
2.接收应答:SD卡接收到写命令后,会返回一个应答信号,确认是否接收到了写命令。
3.写入数据:当SD卡接收到写命令后,在指定的地址范围内写入数据。
4.数据传输:控制器向SD卡传输要写入的数据,SD卡接收到数据后进行存储。
五、SD卡的块操作SD卡的读写操作是以块为单位进行的,一个块的大小一般为512字节。
SD卡的块操作流程如下:1.发送块命令:通过控制器向SD卡发送块命令,告知SD卡要进行块操作的起始块号和块数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1 SD卡模式选择
SD卡上电后进入SD模式,如果SD卡在接收CMD0命令时CS为0则SD卡进入SPI模式并且应答为R1应答,SD卡处于idle状态,回到SD模式的唯一方法就是重新上电。
1.2 SD卡SPI模式下初始化
1、Clock:上电后主机应发送至少74个时钟,在这期间应保持CS为高电平,然后SD卡进入idle模式。
2、进入SPI模式:如果在接受CMD0命令时CS为低电平,则SD卡进入SPI模式,CMD0命令没有参数。
CMD0的应答R1格式,R1应答的内容定义为:
3、CMD8:初始化发送CMD0后,SD卡并不知道当前的电压是否合适,为了验证电压Physical LayerSpecification Version 2.00定义了CMD8命令;初始化发送完CMD0后,在发送ACMD41
之前需发送CMD8,以便初始化High Capacity SD卡,如果SD卡不能在该电压下工作,则SD卡不作应答,并处于idle状态,否则SD卡将作出应答并echo出命令中设置的电压范围和check pattern。
CMD8命令格式:
VHS: 0000b、Others Not Defined
0001b 2.7-3.6V
0010b Reserved for Low Voltage Range
0100b、1000b Reserved
Check Pattern:可为任意8位的数,推荐使用0xaa。
CMD8应答:
4、发送ACMD41:ACMD命令是在发送需要的命令之前发送一个CMD55命令组成的,ACMD41命令由CMD55和CMD41组成,CMD55命令没有参数,应答为R1应答,HCS=1表明主机支持High Capacity SD卡,HCS=0表明不支持。
发送CMD41命令,判断应答是否表明表明SD卡仍然处于初始化阶段;R1应答的bit0为1表明处于idle状态,SD卡还在初始化阶段。
5、初始化完成:当发送ACMD41命令的应答为0x00时表明SD卡已完成ACMD41发起的初始化过程。
这里为大家总结了一下编写该程序所需要的知识:
1.SD卡的官方资料(我承认这个资料很垃圾,比起民间的技术总结它的内容
可谓又臭又长,但是作为基础也要了解一下,SD协议不用看)
2.清晰明了的MMC卡时序图(虽然这个是MMC卡的,但是在初始化的时候
CMD0的时序是一样的)
电路:我用的SD卡的电路其实很简单,参考SD卡的官方资料中的电路链接就可以的。
供电问题:由于SD卡的电压是3.3V,所以你的CPU必须支持3.3V的IO端口输出。
再来说一说鸡毛蒜皮的细节:
1.为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:
CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。
2.为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本
文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认。
3.正确的回应内容应该是:
CMD0——0x01(SD卡处于in-idle-state)
CMD55——0x01(SD卡处于in-idle-state)
ACMD41——0x00(SD卡跳出in-idle-state,完成初始化准备接受下一条指令)
这里要说的是如果最后的回应内容还是0x01的话,可以循环发送CMD55+ACMD41,直到回应的内容0x00。
4.在所有的指令中,唯独CMD0特殊,在向SD卡发送以前需要向SD卡发送
74+个时钟。
那么为什么要74个CLK呢?因为在上电初期,电压的上升过程据SD卡组织的计算约合64个CLK周期才能到达SD卡的正常工作电压他们管这个叫做Supply ramp up time,其后的10个CLK是为了与SD卡同步,之后开始CMD0的操作,严格按照此项操作,一定没有问题。
5.关于SD卡的SPI总线,在读入数据时SD卡的SPI是CLK的上升沿输入锁
存,输出数据也是在上升沿。
6.向SD卡写入一个CMD或者ACMD指令的过程是这样的:
首先使CS为低电平,SD卡使能;其次在SD卡的Din写入指令;写入指令后还要附加8个填充时钟,是SD卡完成内部操作;之后在SD卡的Dout 上接受回应;回应接受完毕使CS为低电平,再附加8个填充时钟。
7.在SD卡的Din没有数据写入时,应使Din保持高电平。