为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。
为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认。
正确的回应内容应该是:
CMD0——0x01(SD卡处于in-idle-state)
CMD55——0x01(SD卡处于in-idle-state)
ACMD41——0x00(SD卡跳出in-idle-state,完成初始化准备接受下一条指令)
这里要说的是如果最后的回应内容还是0x01的话,可以循环发送CMD55+ACMD41,直到回应的内容0x00。
在所有的指令中,唯独CMD0特殊,在向SD卡发送以前需要向SD卡发送74+个时钟。那么为什么要74个CLK呢?因为在上电初期,电压的上升过程据SD卡组织的计算约合64个CLK周期才能到达SD卡的正常工作电压他们管这个叫做Supply ramp up time,其后的10个CLK是为了与SD卡同步,之后开始CMD0的操作,严格按照此项操作,一定没有问题。
关于SD卡的SPI总线,在读入数据时SD卡的SPI是CLK的上升沿输入锁存,输出数据也是在上升沿。
向SD卡写入一个CMD或者ACMD指令的过程是这样的:
首先使CS为低电平,SD卡使能;其次在SD卡的Din写入指令;写入指令后还要附加8个填充时钟,是SD卡完成内部操作;之后在SD卡的Dout上接受回应;回应接受完毕使CS为低电平,再附加8个填充时钟。
在SD卡的Din没有数据写入时,应使Din保持高电平。
关键字:SD卡 SPI模式 初始化顺序
引用地址:
SD卡的SPI模式的初始化顺序
推荐阅读最新更新时间:2024-03-16 15:00
MSP432P401r驱动SD卡
废话不多说,直接上移植好的代码 #include SPI.h #include SD.h #define SS 18 #define MOSI 15; #define MISO 14; #define SCK 7 File myFile; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { // wait for serial port to connect. Needed for native USB port only } Seri
[单片机]
基于FAT16文件系统的嵌入式温度记录器
闪存技术的不断发展,使得闪存卡(如SD卡、MMC卡等)因其体积小、容量大、可靠性高等优点而在嵌入式存储领域得到越来越广泛的应用。 FAT16文件系统具有出色的文件管理性能,能被大多数操作系统识别,因此将闪存卡与FAT16文件系统相结合是嵌入式存储、记录系统中一个理想的方案。温度采集与控制技术是现代测量、控制系统的一个重要组成部分。由于传统的模拟传感测量温度系统存在测量精度低、易受干扰、硬件复杂、调试繁琐等不利因素,而新型单片数字式温度传感器具有测量精度高、抗干扰能力强、操作方便、功耗低等优点,应用范围越来越广泛。本嵌入式数字温度记录器以ARM7微处理器 LPC2148、数字温度传感器ADT75为基础,采用大容量SD卡作为存储介
[单片机]
基于ATmega32的SD卡上FAT32文件系统数据读取
O 引言 SD卡(secure digital memory card,安全数码卡)是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2 g,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。 本文正是通过AVR单片机经过软硬结合的设计方案,来读取SD卡上FAT32文件系统中的数据,FAT32是微软公司开发的新一代的文件系统,支持更大的存储容量和长达255个字符的文件名,也可以通过串口转USB接口芯片通过
[单片机]
LPC11U14实现SD卡U盘
此实验在本人设计的LPC1114/LPC1343/LPC11U14开发板是验证成功:下面先秀秀图吧,下面是三种芯片三种开发板。SD卡在背面。。。 要实现SD卡U盘功能只有实验LPC1343或者LPC11U14才行,因为它们都有USB功能。下面先讲讲大概的思路。 通过USB和PC进行通信,并枚举一个U盘,具体的操作是通过SPI总线操作SD卡。 下面就先看NXP源代码模拟的U盘,和我们修改后实现的SD卡U盘: NXP模拟U盘 SD卡U盘 1.NXP原厂代码免费赠送: USBMem.rar (294.52 KB) 2.本人修改的SD卡U盘,收费哦: SD卡U盘.rar (1.45 MB
[单片机]
STM32L431之SPI从模式使用DMA时数据偏移3个字节
环境: 将SPI3配置成从模式,并且使用DMA来传输数据,在初始化完SPI3后,就立即配置DMA,将待传输的数据准备好。 主机还未读取时,就重新更新数据,更新数据的方法为直接调用Spi3TxDmaStart static void Spi3TxDmaStart(void * buf,unsigned int len,int enableInterrupt){ DMA2_Channel2- CCR &= 0xFFFFFFFE; // disable DMA first DMA2_Channel2- CMAR = (unsigned int)buf; DMA2_Channel2- CNDTR = len & 0xFF
[单片机]
SD卡读写的关键点一
这是复位的时序图,结合程序分析一下怎么看时序图 上面的IN和OUT是针对SD卡为主机的定义,IN就是单片机发数据给SD卡的接口,OUT是SD卡发出数据的接口。 时序图我们以CLK的状态来分步写程序,第一部分是:74个时钟节拍,就是开始发送74个时钟节拍,CS要置高,数据线IN必须发1,OUT可以不处理。程序如下 SD_CS=1; for(i=0;i 0x0f;i++) SD_spi_write(0xff); SD_CS=0; 这样我们就完成了第一部分的时序,SD_spi_write()是我前面写的SPI接口的读写函数。这里我们发了超过74个时钟的节拍,这不会有问题吗?我们可以看到时序图74后面有一段
[单片机]
STC51单片机SPI接口单主单从模式通信-汇编语言
;============================================ ;STC12C5410 spi 通信 ;单主单从模式 ;============================================ ;MASTER EQU 1 ;主单片机 MASTER EQU 0 ;从机 ;------------------------------------- ;定义COM波特率自动重装常数 ; RELOAD_8BIT_DATA EQU 0F6H; Fosc=18.432 ,4800 ;-------------------------------------
[单片机]
SanDisk得东芝相助率先推出2GB的microSD卡
自从三星电子公司开始批量生产60纳米制程的8GB多级单元(MLC)NAND闪存芯片之后,存储卡厂商们纷纷将各自microSD存储卡的容量提高到1GB。但是,SanDisk公司在东芝公司的支持下,最近推出了存储容量为2GB的存储卡产品,将其他存储卡厂商都远远地甩在了身后。 SanDisk公司在7月底正式推出了2GB的microSD存储卡,而估计其他厂商到9月份的时候才可能推出容量为1GB的microSD存储卡。据SanDisk公司称,2GB的microSD存储卡的售价大约为100美元,而现在市场上的2GB的SD存储卡的售价大约在50美元左右。 由于东芝公司在多级单元NAND闪存的供应上居市场统治地位,因此SanDisk公司可
[焦点新闻]