一。 SD卡简介
1. 什么是SD卡
2. SD卡的特点
3. SD卡的寄存器
CSD寄存器包括卡的容量,数据块的大小,非常重要的寄存器。
二。SPI 模式如何访问SD卡
1. SPI模式下,SD卡的命令格式
2. SD卡命令介绍
CMD0用来复位SD卡。
CMD8用来区分2.0卡还是1.0卡。
CMD9读取卡的特定的数据寄存器SCR。
CMD10读取卡的标志寄存器CID。
CMD16设置块大小,对于SDHC无效,SDHC固定是512字节。
CMD17读取一个块的数据。
CMD18读取多个块的数据。
CMD24是写入一个块的数据。
CMD25是写入多个块的数据。
每个指令都有一个响应。
SD卡和单片机的通信过程
R2到R7响应,请参照《SD卡2.0协议.pdf》7.3.2节
3. SD卡初始化
初始化步骤:
此流程图为SPI模式
流程解读: 先Power-on上电,然后延时大于74个CLK,然后使CS=0,发送CMD0,这样就进入SPI模式,然后发送CMD8(通常带个参数0x1AA)1为代表主机的供电范围为2.7V到3.6V和AA为检查通信,这个指令最重要的作用是用来区分是2.0的卡还是1.x的卡或是MMC卡,如果这个指令有响应,就是说明卡是2.0的卡或者是以后版本的卡,如果没有响应就说明是1.x的卡或是MMC卡,如果是2.0的卡就会有响应,然后检查卡的电压,CMD58是可选的指令,这里用不到,就不发送CMD58,发送ACMD41指令(注意在发送这个指令之前要先发送CMD55),如果主机支持高容量的卡就设置HCS位等于1,如果不支持,设置HCS=0,发送完ACMD41指令后,卡有个R1响应,如果R1响应中idle_state = 1,就是空闲状态=1,如果空闲状态=1,就不停发送ACMD41指令,知道空闲状态标志位idle_state=0,再进行下面的步骤,发送一个CMD58指令,通过CMD58指令,返回一个OCR寄存器的值(CMD58指令是读取OCR寄存器的值),OCR寄存器中有个CCS位,如果CCS=1,说明是一个2.0的SDHC高容量的卡,如果CCS=0,说明是 一个2.0的标准容量的卡,也就是0到2GB的卡。
另外一个如果不响应CMD8,是一个1.x的卡或是MMC卡,然后同样CMD58指令不用,发送ACMD41指令,这里注意对于1.x的卡,HCS位是无效的,所以参数为0,对于ACMD41没有响应的话,就是一个MMC卡,如果对于ACMD41有响应,就判断idle_state位空闲状态是不是等于0,等于0以后这个就是1.x的标准容量的卡。
VHS位一般设置为0001b,CMD8使用的参数一般是0x1AA。
一般设置HCS位=1.
ACMD41指令只有第30位有效。
这里重点关心CCS位,如果是会SDHC卡,CCS=1,如果是SDSC卡,CCS= 0。通过CCS位可以区分是SDHC还是SDSC卡。
4. 单块数据读取512字节
接收512个字节的数据。
5. SD卡多块读取流程
注意:地址的单位跟卡的类型有关,数据地址如果是SDSC卡,地址单位是字节,如果是SDHC卡,是以512字节为单位,表示读取第几个512字节,2^32=4GB,对于SDSC卡足够寻址,SDSC卡最大为2GB,对于SDHC卡,寻址范围是2^32*512=2TB,所以SDHC卡最大为2T容量。
6. SD卡单块数据块写入流程
MCU可以读取MISO上的电平,如果读到是0,表示SD卡还在编程,就不能发新的数据,知道0xff,才能发送下一批数据。
7. SD卡多块数据块写入流程
注意:在发送结束令牌0xfd后,还要多写入一个512个字节的数据,然后才能完成写入。
发送完0xfd令牌以后,还要发送一个512字节的数据,然后才结束写入。
三。 硬件连接
关键字:SD卡 SPI方式
引用地址:
28.SD卡简介(SPI方式)——mini版专用
推荐阅读最新更新时间:2024-03-16 15:44
STCl2C5A60S2单片机的SD卡读写
O 引言 SD卡是一种微型、低功耗、可移动的Flash多功能存储卡,该卡向上兼容MMC卡,并增加了智能保护机制,以有效地防止盗版,同时具有更快的传输速率及更高的存储容量,可广泛用于便携式消费类电子产品中。本文首先介绍了STC12C5A60S2单片机在SPI协议下与SD卡的硬件接口电路,然后简要阐述了SPI总线模式以及软件模拟的SPI总线数据通讯,最后给出了实现SD卡的初始化和读写操作的软件流程。 1 STC单片机 STCl2C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(IT)的单片机,这是一种高速、低功耗、超强抗干扰的新一代805l单片机,它的指令代码完全兼容传统8051,但速度比8051快8~
[单片机]
基于ARM9和μC/OS-II的SD卡文件系统的实现
随着嵌入式式技术的不断发展,ARM处理器凭借其高性能、廉价、耗能低的优质特性而得到广泛应用。文中主要针对货车动态称重系统中大量实时载重数据存取的需求,在ARM9嵌入式处理器和μC/OS-II操作系统基础上,设计实现了一种SD卡文件系统。该系统具有实时性强、存取速率高、易维护,易移植等特点。 1 硬件接口电路设计 本系统硬件开发平台处理器为S3C2440A,是三星公司推出的16/32位RISC微处理器,ARM920T内核,主频400 MHz,最高可达533 MHz,内部具有丰富的系统外围控制器和多种通信接口。SD卡支持SPI和SD两种通信模式,S3C2440A具有SD卡接口,支持SD总线模式,所以不再像低端的ARM处理器
[单片机]
STM32F401 SDIO HAL driver初始化SD卡
STM32F4xx的HAL部分已经提供了SD的driver,初始化时的IO PIN等放在HAL_SD_MspInit。 void HAL_SD_MspInit(SD_HandleTypeDef *hsd) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GP
[单片机]
SD卡在单片机上的应用
SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。 (1)
[单片机]
基于STM32F407的FatFs文件系统在SD卡驱动上的移植
最近在做SD卡驱动,以前移植过efsl,觉得用的人不是很多,现在移植个FatFs,也跟上队伍。 第一步,保证SD卡底层驱动函数正确,包括SD卡初始化、SD扇区读写等。 第二步,下载FatFs源码,名为ff9b.zip,解压在src文件夹中可以得到diskio.c、ff.c、以及\option\cc936.c这三个源码文件,在STM32F407工程文件中创建FatFs文件夹,加入这几个源码以及相应头文件,并且在系统Include Path中加入这个文件夹的位置,以编译时找到其头文件。 第三步开始移植。diskio.c这个文件中定义了fatfs文件系统与硬件存储器之间的接口函数,供文件系统调用,包
[单片机]
SD卡协会发布影像速度等级的SD规格,支持4K和8K高像素影片
SD卡协会释出SD记忆卡新规格,影片速度等级(Video Speed Class)的SD 5.0规格,支援4K、8K、3D和360度全景影片,且最高支援SD卡每秒写入90MB。
存储卡业界标准制定委员会SD卡协会(SD Association,SDA)于2月25日发布影片速度等级(Video Speed Class)的SD 5.0规格,可以同时记录和存取多种超高画质的影片格式,而新SD卡规格支援4K、8K、3D和360度全景影片,且让SD卡最快能在每秒写入90MB的资料,还能够优化采用NAND快闪记忆体架构的SD卡。
Video Speed Class也和UHS Speed Class规格一样有等级规范,以
[手机便携]
基于LPC2148的SD卡实现嵌入式系统升级设计
1 引言 随着现代工业社会逐步向智能化社会的过渡,嵌入式在现代经济生活中扮演着重要的角色。为了做出好的产品,必须与用户形成互动,利用用户的反馈信息不断完善产品。另外,产品在长时间使用中,会慢慢出现终端程序设计上的缺陷,这就要求对终端系统设备的内核、文件进行系统升级或者对设备进行功能维护。如果对几百个终端进行现场ISP升级,或通过JTAG口、串口实现升级,不仅浪费大量的人力、财力,更重要的是浪费了宝贵的时间,延误了开拓市场的机遇,降低了用户对产品的信誉度。为了解决这些问题,提出了利用LPC2148的SD卡实现嵌入式系统升级的设计方案。 2 总体系统升级方案设计 厂家生产出产品后,用户购买回去使用,当设备出现了系统
[单片机]
LPC1114 FAT下读写SD卡
前一贴里利用的是SSP总线下进行扇区的读写,这一贴将在FAT文件系统下进行SD卡的读写。 本来想自己写个简单的FAT文件系统,但是,在前不就,本人写了个FAT在AVR ICC下能够正常的运行,到LPC2148中来时死活不运行,这让我对自己写FAT失去了信心。本身FAT就是个比较复杂的东东,没有那么都时间去写。 再说了自己写的总是兼容性上有一定的。所以,决定还是移植一个比较好的文件系统吧。 在网络上的文件系统常见的有四个:UC/FS;ZLG/FS;efsl;FatFS。 第一个:UC/FS。文件系统没得什么说的,UCOSII那个公司开发的,稳定性,兼容性应该都不会差。 第二个:ZLG/FS。周立功的很多的上面都送了
[单片机]