当前位置:文档之家› SD卡电路图

SD卡电路图

SD卡电路图
SD卡电路图

https://www.doczj.com/doc/623098125.html,/v_playlist/f4403013o1p0.html

窗体底端

SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。

(1) SD 卡的引脚定义:

注:S:电源供给I:输入O:采用推拉驱动的输出

PP:采用推拉驱动的输入输出

SD卡SPI模式下与单片机的连接图:

SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut 进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。

(2) SPI方式驱动SD卡的方法

SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写

入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。

1)命令与数据传输

1. 命令传输

SD卡自身有完备的命令系统,以实现各项操作。命令格式如下:

命令的传输过程采用发送应答机制,过程如下:

SPI模式中定义了三种应答格式,如下表所示:

写命令的例程:

//-----------------------------------------------------------------------------------------------

向SD卡中写入命令,并返回回应的第二个字节

//-----------------------------------------------------------------------------------------------

unsigned char Write_Command_SD(unsigned char *CMD)

{

unsigned char tmp;

unsigned char retry=0;

unsigned char i;

//禁止SD卡片选

SPI_CS=1;

//发送8个时钟信号

Write_Byte_SD(0xFF);

//使能SD卡片选

SPI_CS=0;

//向SD卡发送6字节命令

for (i=0;i<0x06;i++)

{

Write_Byte_SD(*CMD++);

}

//获得16位的回应

Read_Byte_SD(); //read the first byte,ignore it.

do

{ //读取后8位

tmp = Read_Byte_SD();

retry++;

}

while((tmp==0xff)&&(retry<100));

return(tmp);

}

2)初始化

SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成功后,应尽量提高SPI 的速率。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。随后就是写入两个命令CMD0与CMD1,使SD 卡进入SPI模式

初始化时序图:

初始化例程:

//-------------------------------------------------------------------------- 初始化SD卡到SPI模式

//-------------------------------------------------------------------------- unsigned char SD_Init()

{

unsigned char retry,temp;

unsigned char i;

unsigned char CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95}; SD_Port_Init(); //初始化驱动端口

Init_Flag=1; //将初始化标志置1

for (i=0;i<0x0f;i++)

{

Write_Byte_SD(0xff); //发送至少74个时钟信号

}

//向SD卡发送CMD0

retry=0;

do

{ //为了能够成功写入CMD0,在这里写200次

temp=Write_Command_SD(CMD);

retry++;

if(retry==200)

{ //超过200次

return(INIT_CMD0_ERROR);//CMD0 Error!

}

}

while(temp!=1); //回应01h,停止写入

//发送CMD1到SD卡

CMD[0] = 0x41; //CMD1

CMD[5] = 0xFF;

retry=0;

do

{ //为了能成功写入CMD1,写100次

temp=Write_Command_SD(CMD);

retry++;

if(retry==100)

{ //超过100次

return(INIT_CMD1_ERROR);//CMD1 Error!

}

}

while(temp!=0);//回应00h停止写入

Init_Flag=0; //初始化完毕,初始化标志清零

SPI_CS=1; //片选无效

return(0); //初始化成功

}

3)读取CID

CID寄存器存储了SD卡的标识码。每一个卡都有唯一的标识码。CID寄存器长度为128位。它的寄存器结构如下:

它的读取时序如下:

与此时序相对应的程序如下:

//------------------------------------------------------------------------------------ 读取SD卡的CID寄存器16字节成功返回0

//------------------------------------------------------------------------------------- unsigned char Read_CID_SD(unsigned char *Buffer)

{

//读取CID寄存器的命令

unsigned char CMD[] = {0x4A,0x00,0x00,0x00,0x00,0xFF}; unsigned char temp;

temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes

return(temp);

}

4)读取CSD

CSD(Card-Specific Data)寄存器提供了读写SD卡的一些信息。其中的一些单元可以由用

读CSD的时序:

相应的程序例程如下:

//-----------------------------------------------------------------------------------------

读SD卡的CSD寄存器共16字节返回0说明读取成功

//-----------------------------------------------------------------------------------------

unsigned char Read_CSD_SD(unsigned char *Buffer)

{

//读取CSD寄存器的命令

unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};

unsigned char temp;

temp=SD_Read_Block(CMD,Buffer,16); //read 16 bytes

return(temp);

}

4)读取SD卡信息

综合上面对CID与CSD寄存器的读取,可以知道很多关于SD卡的信息,以下程序可以获取这些信息。如下:

//-----------------------------------------------------------------------------------------------

//返回

// SD卡的容量,单位为M

// sector count and multiplier MB are in

u08 == C_SIZE / (2^(9-C_SIZE_MULT))

// SD卡的名称

//-----------------------------------------------------------------------------------------------

void SD_get_volume_info()

{

unsigned char i;

unsigned char c_temp[5];

VOLUME_INFO_TYPE SD_volume_Info,*vinf;

vinf=&SD_volume_Info; //Init the pointoer;

/读取CSD寄存器

Read_CSD_SD(sectorBuffer.dat);

//获取总扇区数

vinf->sector_count = sectorBuffer.dat[6] & 0x03;

vinf->sector_count <<= 8;

vinf->sector_count += sectorBuffer.dat[7];

vinf->sector_count <<= 2;

vinf->sector_count += (sectorBuffer.dat[8] & 0xc0) >> 6;

// 获取multiplier

vinf->sector_multiply = sectorBuffer.dat[9] & 0x03;

vinf->sector_multiply <<= 1;

vinf->sector_multiply += (sectorBuffer.dat[10] & 0x80) >> 7;

//获取SD卡的容量

vinf->size_MB = vinf->sector_count >> (9-vinf->sector_multiply);

// get the name of the card

Read_CID_SD(sectorBuffer.dat);

vinf->name[0] = sectorBuffer.dat[3];

vinf->name[1] = sectorBuffer.dat[4];

vinf->name[2] = sectorBuffer.dat[5];

vinf->name[3] = sectorBuffer.dat[6];

vinf->name[4] = sectorBuffer.dat[7];

vinf->name[5] = 0x00; //end flag

}

以上程序将信息装载到一个结构体中,这个结构体的定义如下:

typedef struct SD_VOLUME_INFO

{ //SD/SD Card info

unsigned int size_MB;

unsigned char sector_multiply;

unsigned int sector_count;

unsigned char name[6];

} VOLUME_INFO_TYPE;

5)扇区读

扇区读是对SD卡驱动的目的之一。SD卡的每一个扇区中有512个字节,一次扇区读操作将把某一个扇区内的512个字节全部读出。过程很简单,先写入命令,在得到相应的回应后,开始数据读取。

扇区读的时序:

扇区读的程序例程:

unsigned char SD_Read_Sector(unsigned long sector,unsigned char *buffer)

{

unsigned char retry;

//命令16

unsigned char CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF};

unsigned char temp;

//地址变换由逻辑块地址转为字节地址

sector = sector << 9; //sector = sector * 512

CMD[1] = ((sector & 0xFF000000) >>24 );

CMD[2] = ((sector & 0x00FF0000) >>16 );

CMD[3] = ((sector & 0x0000FF00) >>8 );

//将命令16写入SD卡

retry=0;

do

{ //为了保证写入命令一共写100次

temp=Write_Command_MMC(CMD);

retry++;

if(retry==100)

{

return(READ_BLOCK_ERROR); //block write Error!

}

}

while(temp!=0);

//Read Start Byte form MMC/SD-Card (FEh/Start Byte)

//Now data is ready,you can read it out.

while (Read_Byte_MMC() != 0xfe);

readPos=0;

SD_get_data(512,buffer) ; //512字节被读出到buffer中

return 0;

}

其中SD_get_data函数如下:

//----------------------------------------------------------------------------

获取数据到buffer中

//----------------------------------------------------------------------------

void SD_get_data(unsigned int Bytes,unsigned char *buffer)

{

unsigned int j;

for (j=0;j

*buffer++ = Read_Byte_SD();

}

6)扇区写

扇区写是SD卡驱动的另一目的。每次扇区写操作将向SD卡的某个扇区中写入512个字节。过程与扇区读相似,只是数据的方向相反与写入命令不同而已。

扇区写的时序:

扇区写的程序例程:

//-------------------------------------------------------------------------------------------- 写512个字节到SD卡的某一个扇区中去返回0说明写入成功

//-------------------------------------------------------------------------------------------- unsigned char SD_write_sector(unsigned long addr,unsigned char *Buffer) {

unsigned char tmp,retry;

unsigned int i;

//命令24

unsigned char CMD[] = {0x58,0x00,0x00,0x00,0x00,0xFF};

addr = addr << 9; //addr = addr * 512

CMD[1] = ((addr & 0xFF000000) >>24 );

CMD[2] = ((addr & 0x00FF0000) >>16 );

CMD[3] = ((addr & 0x0000FF00) >>8 );

//写命令24到SD卡中去

retry=0;

do

{ //为了可靠写入,写100次

tmp=Write_Command_SD(CMD);

retry++;

if(retry==100)

{

return(tmp); //send commamd Error!

}

}

while(tmp!=0);

//在写之前先产生100个时钟信号

for (i=0;i<100;i++)

{

Read_Byte_SD();

}

//写入开始字节

Write_Byte_MMC(0xFE);

//现在可以写入512个字节

for (i=0;i<512;i++)

{

Write_Byte_MMC(*Buffer++);

}

//CRC-Byte

Write_Byte_MMC(0xFF); //Dummy CRC

Write_Byte_MMC(0xFF); //CRC Code

tmp=Read_Byte_MMC(); // read response

if((tmp & 0x1F)!=0x05) // 写入的512个字节是未被接受

{

SPI_CS=1;

return(WRITE_BLOCK_ERROR); //Error!

}

//等到SD卡不忙为止

//因为数据被接受后,SD卡在向储存阵列中编程数据

while (Read_Byte_MMC()!=0xff){};

//禁止SD卡

SPI_CS=1;

return(0);//写入成功

}

此上内容在笔者的实验中都已调试通过。单片机采用STC89LE单片机(SD卡的初始化电压为2.0V~3.6V,操作电压为3.1V~3.5V,因此不能用5V单片机,或进行分压处理),工作于22.1184M的时钟下,由于所采用的单片机中没硬件SPI,采用软件模拟SPI,因此读写速率都较慢。如果要半SD卡应用于音频、视频等要求高速场合,则需要选用有硬件SPI的控制器,或使用SD模式,当然这就需要各位读者对SD模式加以研究,有了SPI模式的基础,SD模式应该不是什么难事。

SD卡工作原理介绍和工作原理图

大容量SD卡在海洋数据存储中的应用 本设计使用8 GB的SDHC(High Capacity SD Memory Card,大容量SD存储卡),为了方便卡上数据在操作系统上的读取,以及数据的进一步分析和处理,在SDHC卡上建立了FAT32文件系统。 海洋要素测量系统要求数据存储量大、安全性高,采用可插拔式存储卡是一种不错的选择。目前,可插拔式存储卡有CF 卡、U盘及SD卡。CF卡不能与计算机直接通信;U盘需要外扩接口芯片才能与单片机通信,增加了外形尺寸及功耗;而SD卡具有耐用、可靠、安全、容量大、体积小、便于携带和兼容性好等优点,非常适合于测量系统长期的数据存储。 1 SD卡接口的硬件设计 STM32F103xx增强型系列是意法半导体公司生产的基于Cortex-M3的高性能的32位RISC内核,工作频率为72 MHz,内置高速存储器(128 KB的闪存和20 KB的SRAM),以及丰富的增强I/O端口和连接到2条APB总线的外设。STM32F103xx系列工作于-40~+105℃的温度范围,供电电压为2.0~3.6 V,与SD卡工作电压兼容,一系列的省电模式可满足低功耗应用的要求。 SD卡支持SD模式和SPI模式两种通信方式。采用SPI模式时,占用较少的I/O资源。STM32F103VB包含串行外设SPI接口,可方便地与SD卡进行连接。通过4条信号线即可完成数据的传输,分别是时钟SCLK、主机输入从机输出MISO、主机输出从机输入MOSI和片选CS。STM32F103VB与SD卡卡座的接口电路如图1所示。 SD卡的最高数据读写速度为10 MB/s,接口电压为2.7~3.6 V,具有9个引脚。SD卡使用卡座代替传输电缆,减少了环境干扰,降低了出错率,而且1对1传输没有共享信道的问题。SD卡在SPI模式下各引脚的定义如表1所列。 2 SD卡接口的软件设计 本设计采用STM32F103VB自带的串行外设SPI接口与SD卡进行通信,这里只介绍SPI模式的通信方式。 2.1SD卡的读写 先对STM32F103VB的SPI_CRl(SPI控制寄存器)以及SPI_SR(SPI状态寄存器)进行初始化设置,使能SPI并使用主机模式;同时设置好时钟,在时钟上升沿锁存数据。SPI通道传输的基本单位是字节,由STM32F103VB控制其和SD卡之间的所有通信。 要读写SD卡,首先要对其进行初始化。初始化成功后,即可通过发送相应的读写命令对SD卡进行读写。SD卡的读写流程如图2所示。 2.2 SD1.x与SD2.0标准的识别 由于大容量SDHC的出现,SD1.x满足不了SDHC的容量要求,标准已经升级为SD2.0。但也因此出现了许多电子设备无法驱动大容量SD卡的情况,如何识别SD1.x与SD2.0就显得尤为重要。SD2.0的SPI模式初始化流程如图3所示。 判断是否为SD2.0卡,CMD8(SD2.0新增的命令)是关键。若卡是SD2.0,则发送CMD8将会返回有效响应;若是SD1.x,则返回非法响应,这样就可以识别SD卡的类型。 SD1.x与SD2.0的最大不同在于命令地址的表示。SD1.x的地址单位是字节,而SD2.0的地址单位是扇区,地址仍然采用32位4个字节来表示。因此在读写操作时应该根据不同的卡对地址进行相应的处理,若是SD1.x则写入字节地址,若为SD2.0则写入扇区地址。 3 FAT32文件系统目前有3种FAT文件系统:FAT12、FAT16和FAT32。它们的区别在于文件分配表(File Allocation Table,FAT)中每一表项的大小(也就是所占的位数):FAT12为12位,FATl6为16位,FAT32为32位。本设

sd卡电路图学习

,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。 (1)SD卡的引脚定义: SD卡引脚功能详述:

SD卡SPI模式下与单片机的连接图: SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。 (2) SPI方式驱动SD卡的方法 SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI 控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。 1)命令与数据传输 1. 命令传输 SD卡自身有完备的命令系统,以实现各项操作。命令格式如下: 命令的传输过程采用发送应答机制,过程如下: 每一个命令都有自己命令应答格式。在SPI模式中定义了三种应答格式,如下表所示:

SD卡读写操作 SD卡电路

SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。 (1)SD卡的引脚定义: SD卡引脚功能详述:

SD卡SPI模式下与单片机的连接图: SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI 方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。 (2) SPI方式驱动SD卡的方法 SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写入第一个命令时进行的。以下介绍SD卡的驱动方法,只实现简单的扇区读写。 1)命令与数据传输 1. 命令传输 SD卡自身有完备的命令系统,以实现各项操作。命令格式如下: 命令的传输过程采用发送应答机制,过程如下: 每一个命令都有自己命令应答格式。在SPI模式中定义了三种应答格式,如下表所示:

STM32读写SD卡要点

3.20SD卡实验 很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有U盘,FLASH芯片,SD卡等。他们各有优点,综合比较,最适合单片机系统的莫过于SD卡了,它不仅容量可以做到很大(32Gb以上),而且支持SPI接口,方便移动,有几种体积的尺寸可供选择(标准的SD 卡尺寸,以及TF卡尺寸),能满足不同应用的要求。只需要4个IO口,就可以外扩一个最大达32GB以上的外部存储器,容量选择尺度很大,更换也很方便,而且方便移动,编程也比较简单,是单片机大容量外部存储器的首选。 ALIENTKE MiniSTM3开发板就带有SD卡接口,利用STM32自带的SPI接口,最大通信速度可达18Mbps,每秒可传输数据2M字节以上,对于一般应用足够了。本节将向大家介绍,如何在ALIENTEK MiniSTM32开发板上读取SD卡。本节分为如下几个部分: 3.20.1 SD卡简介 3.20.2 硬件设计 3.20.3 软件设计 3.20.4 下载与测试

3.20.1 SD卡简介 SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。 SD卡一般支持2种操作模式: 1,SD卡模式; 2,SPI模式; 主机可以选择以上任意一种模式同SD卡通信,SD卡模式允许4线的高速数据传输。SPI模式允许简单的通过SPI接口来和SD卡通信,这种模式同SD卡模式相比就是丧失了速度。 SD卡的引脚排序如下图所示: 图3.20.1.1 SD卡引脚排序图 SD卡引脚功能描述如下表所示: 表3.20.1.1 SD卡引脚功能表 SD卡只能使用3.3V的IO电平,所以,MCU一定要能够支持3.3V的IO端口输出。 注意:在SPI模式下,CS/MOSI/MISO/CLK都需要加10~100K左右的上拉电阻。 SD卡要进入SPI模式很简单,就是在SD卡收到复位命令(CMD0)时,CS为有效电平(低电平)则SPI模式被启用。不过在发送CMD0之前,要发送>74个时钟,这是因为SD卡内部有个供电电压上升时间,大概为64个CLK,剩下的10个CLK用于SD卡同步,之后才能开始CMD0的操作,在卡初始化的时候,CLK时钟最大不能超过400Khz!。 ALENTEK MiniSTM32开发板使用的是SPI模式来读写SD卡,下面我们就重点介绍一下SD卡在SPI模式下的相关操作。 首先介绍SPI模式下几个重要的操作命令,如下表所示:

SD卡引脚 电路图及工作原理介绍

SD卡引脚电路图及工作原理介绍 SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。 (1)SD卡的引脚定义: SD卡引脚功能详述: 引脚编号SD模式SPI模式 名称类型描述名称类型描述 1 CD/DAT3 IO或PP 卡检测/ 数据线3 #CS I 片选 2 CMD PP 命令/ 回应 DI I 数据输入 3 V SS1S 电源地VSS S 电源地 4 V DD S 电源VDD S 电源 5 CLK I 时钟SCLK I 时钟 6 V SS2S 电源地VSS2 S 电源地

7 DAT0 IO或PP 数据线0 DO O或PP 数据输出 8 DAT1 IO或PP 数据线1 RSV 9 DAT2 IO或PP 数据线2 RSV 注:S:电源供给I:输入O:采用推拉驱动的输出 PP:采用推拉驱动的输入输出 SD卡SPI模式下与单片机的连接图: SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。 (2)SPI方式驱动SD卡的方法 SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时

SD卡原理及内部结构

1、简介: SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。 SD 卡内部结构及引脚如下图所示:

SD卡内部图.JPG 2、SD卡管脚图:

SD卡图.JPG 3、SPI模式下SD各管脚名称为: sd 卡: SPI模式下SD各管脚名称为.JPG

注:一般SD有两种模式:SD模式和SPI模式,管脚定义如下:(A)、SD MODE 1、CD/DATA3 2、CMD 3、VSS1 4、VDD 5、CLK 6、VSS2 7、DATA0 8、DATA1 9、DATA2 (B)、SPI MODE 1、CS 2、DI 3、VSS 4、VDD 5、SCLK 6、VSS2 7、DO 8、RSV 9、RSV SD 卡主要引脚和功能为: CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz 的频率; CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡; DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。 SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在

SD卡初始化顺序

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卡电路图

https://www.doczj.com/doc/623098125.html,/v_playlist/f4403013o1p0.html 窗体底端 SD卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD卡作为其存储设备。SD卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点,那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD卡的硬件与读写时序进行研究。对于SD卡的硬件结构,在官方的文档上有很详细的介绍,如SD卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD卡的读写时序。 (1) SD 卡的引脚定义:

注:S:电源供给I:输入O:采用推拉驱动的输出 PP:采用推拉驱动的输入输出 SD卡SPI模式下与单片机的连接图: SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut 进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。 (2) SPI方式驱动SD卡的方法 SD卡的SPI通信接口使其可以通过SPI通道进行数据读写。从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本。然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽。SPI接口的选用是在上电初始时向其写

SD卡内部构造与工作原理

SD卡内部构造与工作原理 1、简介: SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。 SD卡内部结构及引脚如下图所示: SD卡内部图.JPG

2、SD卡管脚图: SD卡图.JPG

3、SPI模式下SD各管脚名称为: sd卡: SPI模式下SD各管脚名称为.JPG 注:一般SD有两种模式:SD模式和SPI模式,管脚定义如下:(A)、SD MODE 1、CD/DATA3 2、CMD 3、VSS1 4、VDD 5、CLK 6、VSS2 7、DATA0 8、DATA1 9、DATA2 (B)、SPI MODE 1、CS 2、DI 3、VSS 4、VDD 5、SCLK 6、VSS2 7、DO 8、RSV 9、RSV

SD卡主要引脚和功能为: CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率; CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡; DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。 SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。SD卡命令的格式如表1所示,其中相关参数可以查阅SD 卡规范。 4、MicroSD卡管脚图:

SD卡内部构造与工作原理(免费分享)

SD卡内部构造与工作原理(附加基于Atmega128单片机SD卡读写程序) 1、简介: SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。 SD卡内部结构及引脚如下图所示:

SD卡内部图.JPG 2、SD卡管脚图: SD卡图.JPG

3、SPI模式下SD各管脚名称为: sd卡: SPI模式下SD各管脚名称为.JPG 注:一般SD有两种模式:SD模式和SPI模式,管脚定义如下:(A)、SD MODE 1、CD/DATA3 2、CMD 3、VSS1 4、VDD 5、CLK 6、VSS2 7、DATA0 8、DATA1 9、DATA2 (B)、SPI MODE 1、CS 2、DI 3、VSS 4、VDD 5、SCLK 6、

VSS2 7、DO 8、RSV 9、RSV SD卡主要引脚和功能为: CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率; CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡; DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。 SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。SD卡命令的格式如表1所示,其中相关参数可以查阅SD 卡规范。 4、MicroSD卡管脚图:

51单片机与SD卡的接口电路和程序

51单片机与SD卡的接口电路和程序(1) 长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数据时,选择SD卡作为存储媒质是开发者们一个很好的选择。在电能监测以及无功补偿系统中,要连续记录大量的电压、电流、有功功率、无功功率以及时间等参数,当单片机采集到这些数据时可以利用SD作为存储媒质。本文主要介绍了SD卡在电能监测及无功补偿数据采集系统中的应用方案。 设计方案 应用AT89C52读写SD卡有两点需要注意。首先,需要寻找一个实现AT89C52单片机与SD卡通讯的解决方案;其次,SD卡所能接受的逻辑电平与AT89C52提供的逻辑电平不匹配,需要解决电平匹配问题。 通讯模式 SD卡有两个可选的通讯协议:SD模式和SPI模式。SD模式是SD卡标准的读写方式,但是在选用SD模式时,往往需要选择带有SD卡控制器接口的MCU,或者必须加入额外的SD卡控制单元以支持SD卡的读写。然而,AT89C52单片机没有集成SD卡控制器接口,若选用SD模式通讯就无形中增加了产品的硬件成本。在SD卡数据读写时间要求不是很严格的情况下,选用SPI模式可以说是一种最佳的解决方案。因为在SPI 模式下,通过四条线就可以完成所有的数据交换,并且目前市场上很多MCU都集成有现成的SPI接口电路,采用SPI模式对SD卡进行读写操作可大大简化硬件电路的设计。 虽然AT89C52不带SD卡硬件控制器,也没有现成的SPI接口模块,但是可以用软件模拟出SPI总线时序。本文用SPI总线模式读写SD卡。 电平匹配 SD卡的逻辑电平相当于3.3V TTL电平标准,而控制芯片AT89C52的逻辑电平为5V CMOS电平标准。因此,它们之间不能直接相连,否则会有烧毁SD卡的可能。出于对安全工作的考虑,有必要解决电平匹配问题。 要解决这一问题,最根本的就是解决逻辑器件接口的电平兼容问题,原则主要有两条:一为输出电平器件输出高电平的最小电压值,应该大于接收电平器件识别为高电平的最低电压值;另一条为输出电平器件输出低电平的最大电压值,应该小于接收电平器件识别为低电平的最高电压值。 一般来说,通用的电平转换方案是采用类似SN74ALVC4245的专用电平转换芯片,这类芯片不仅可以用作升压和降压,而且允许两边电源不同步。但是,这个方案代价相对昂贵,而且一般的专用电平转换芯片都是同时转换8路、16路或者更多路数的电平,相对本系统仅仅需要转换3路来说是一种资源的浪费。 考虑到SD卡在SPI协议的工作模式下,通讯都是单向的,于是在单片机向SD卡传输数据时采用晶体管加上拉电阻法的方案,基本电路如图1所示。而在SD卡向单片机传输数据时可以直接连接,因为它们之间的电平刚好满足上述的电平兼容原则,既经济又实用。

SD卡接口设计[附硬件电路和程序]

SD卡接口设计[附硬件电路和程序] 1标准 SD卡标准是SD卡协会针对可移动存储设备设计专利并授权的一种标准,主要用于制定卡的外形尺寸、电气接口和通信协议。 1.1SD卡引脚功能 SD卡的外形如图1所示,引脚功能如表1所列。SD卡的引脚具有双重功能,既可工作在SD模式,也可工作在SPI模式。不同的模式下,引脚的功能不同。 SD模式多用于对SD卡读写速度要求较高的场合,SPI模式则是以牺牲读写速度换取更好的硬件接口兼容性。由于SPI协议是目前广泛流行的通信协议,大多数高性能单片机都配备了SPI硬件接口,硬件连接相对简单,因此,在对SD卡读写速度要求不高的情况下,采用SPI模式无疑是一个不错的选择。

1.2SPI模式 SPI模式是一种简单的命令响应协议,主控制器发出命令后,SD卡针对不S同的命令返回对应的响应。 SD卡的命令列表都是以CMD和ACMD开头,分别指通用命令和专用命令,后面接命令的编号。例如,CMD17就是一个通用命令,用来读单块数据。 在SPI模式中,命令都是以如下的6字节形式发送的: 每帧命令都以“01”开头,然后是6位命令号和4字节的参数(高位在前,低位在后),最后是7位CRC校验和1位停止位“1”。 SD卡的每条命令都会返回对应的响应类型。在SPI模式下,共有3种响应类型:R1、R2和R3,分别占1、2和3个字节。这里仅列出了R1响应的格式,如表2所列。当出现表中所描述的状态时,相应的位置1。R2和R3的第1个字节格式与R1完全一样,详细内容请参考SD卡标准。

2硬件设计 本设计选用Freescale公司的32位低功耗微控制器MCF51QE128,采用SPI模式实现与SD卡的接口。 由于MCF51QE128是一款低功耗的微控制器,工作电压的典型值为3.6V,与SD卡的工作电压兼容,因而可以直接与SD卡连接,无需电平转换电路。这里选用的是MCF51QE128的第2个SPI口,硬件连接如图2所示。 3软件实现 软件部分主要实现MCF51QE128的初始化、底层SPI通信,以及SD卡的通用写命令、初始化和单块数据的读写等功能。 3.1MCF51QE128的初始化 在与SD卡通信之前,首先需要配置MCF51QE128,并初始化SPI端口。代码如下:

SD卡在单片机上的应用以及SD卡引脚 电路图及工作原理介绍

SD 卡在现在的日常生活与工作中使用非常广泛,时下已经成为最为通用的数据存储卡。在诸如MP3、数码相机等设备上也都采用SD 卡作为其存储设备。SD 卡之所以得到如此广泛的使用,是因为它价格低廉、存储容量大、使用方便、通用性与安全性强等优点。既然它有着这么多优点, 那么如果将它加入到单片机应用开发系统中来,将使系统变得更加出色。这就要求对SD 卡的硬件与读写时序进行研究。对于SD 卡的硬件结构,在官方的文档上有很详细的介绍,如SD 卡内的存储器结构、存储单元组织方式等内容。要实现对它的读写,最核心的是它的时序,笔者在经过了实际的测试后,使用51单片机成功实现了对SD 卡的扇区读写,并对其读写速度进行了评估。下面先来讲解SD 卡的读写时序。 1) SD 卡的引脚定义: SD 卡引脚功能详述: 引脚编号 SD 模式 SPI 模式 名称 类型 描述 名称 类型 描述 1 CD/DAT3 IO 或PP 卡检测/数据3 #CS I 片选 2 CMD PP 命令/回应 DI I 数据输入 3 VSS1 S 电源地 VSS S 电源地 4 VDD S 电源 VDD S 电源

5 CLK I 时钟SCLK I 时钟 6 VSS2 S 电源地VSS2 S 电源地 7 DAT0 IO或PP 数据线0 DO O或PP 数据输出 8 DAT1 IO或PP 数据线1 RSV 9 DAT2 IO或PP 数据线2 RSV 注:S:电源供给I:输入O:采用推拉驱动的输出 PP:采用推拉驱动的输入输出 SD卡SPI模式下与单片机的连接图: SD卡支持两种总线方式:SD方式与SPI方式。其中SD方式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI方式采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD方式时的数据传输速度与SPI方式要快,采用单片机对SD卡进行读写时一般都采用SPI模式。采用不同的初始化方式可以使SD卡工作于SD方式或SPI方式。这里只对其SPI方式进行介绍。 (2)SPI方式驱动SD卡的方法

SD卡接口定义

特性: ◎兼容规范版本1.01 ◎卡上错误校正◎支持CPRM ◎两个可选的通信协议:SD模式和SPI模式 ◎可变时钟频率0-25MHz ◎通信电压范围:2.0-3.6V 工作电压范围:2.0-3.6V ◎低电压消耗:自动断电及自动睡醒,智能电源管理 ◎无需额外编程电压 ◎卡片带电插拔保护 ◎正向兼容MMC卡 ◎高速串行接口带随即存取 ---支持双通道闪存交叉存取 ---快写技术:一个低成本的方案,能够超高速闪存访问和高可靠数据存储 ---最大读写速率:10Mbyte/s ◎最大10个堆叠的卡(20MHz,Vcc=2.7-3.6V) ◎数据寿命:10万次编程/擦除 ◎CE和FCC认证 ◎PIP封装技术 ◎尺寸:24mm宽×32mm长×1.44mm厚 说明: 本SD卡高度集成闪存,具备串行和随机存取能力。可以通过专用优化速度的串行接口访问,数据传输可靠。接口允许几个卡垛叠,通过他们的外部连接。接口完全符合最新的消费者标准,叫做SD卡系统标准,由SD卡系统规范定义。 SD卡系统是一个新的大容量存储系统,基于半导体技术的变革。 它的出现,提供了一个便宜的、结实的卡片式的存储媒介,为了消费多媒体应用。 SD卡可以设计出便宜的播放器和驱动器而没有可移动的部分。 一个低耗电和广供电电压的可以满足移动电话、电池应用比如音乐播放器、个人管理器、掌上电脑、电子书、电子百科全书、电子词典等等。 使用非常有效的数据压缩比如MPEG,SD卡可以提供足够的容量来应付多媒体数据。 框图:

SD卡上所有单元由内部时钟发生器提供时钟。接口驱动单元同步外部时钟的DAT和CMD信号到内部所用时钟。 本卡由6线SD卡接口控制,包括:CMD,CLK,DAT0-DAT3。 在多SD卡垛叠中为了标识SD卡,一个卡标识寄存器(CID)和一个相应地址寄存器(RCA)预先准备好。 一个附加的寄存器包括不同类型操作参数。 这个寄存器叫做CSD。 使用SD卡线访问存储器还是寄存器的通信由SD卡标准定义。 卡有自己的电源开通检测单元。 无需附加的主复位信号来在电源开启后安装卡。 它防短路,在带电插入或移出卡时。 无需外部编程电压。 编程电压卡内生成。 SD卡支持第二接口工作模式SPI。 如果接到复位命令(CMD0)时,CS信号有效(低电平),SPI模式启用。 (译者按:以下部分为本人翻译) 接口 该SD卡的接口可以支持两种操作模式: 。SD卡模式 。SPI模式 主机系统可以选择以上其中任一模式,SD卡模式允许4线的高速数据传输。 SPI模式允许简单通用的SPI通道接口, 这种模式相对于SD模式的不足之处是丧失了速度。 SD卡模式针脚定义 针脚 名称 类型 描述 1 CD DAT3 I/O/PP 卡监测数据位3 2 CMD PP 命令/回复 3 Vss S 地 4 Vcc S 供电电压 5 CLK I 时钟 6 Css2 S 地 7 DAT0 I/O/PP 数据位0 8 DAT1 I/O/PP 数据位1 9 DAT2 I/O/PP 数据位2 1:S:电源供电,I:输入O:输出 I/O:双向 PP:I/O使用推挽驱动 SD卡的总线概念 SD总线允许强大的1线到4线数据信号设置。当默认的上电后,SD卡使用DAT0。 初始化之后,主机可以改变线宽(译者按:即改为2根线,3根线。。。)。混和的SD卡连接方式也适合于主机。在混和连接中Vcc,Vss和CLK的信号连接可以通用。但是,命令,回复,和数据(DAT0~3)这几根线,各个SD卡必须从主机分开。 这个特性使得硬件和系统上交替使用。SD总线上通信的命令和数据比特流从一个起始位开始,以停止位中止。 CLK:每个时钟周期传输一个命令或数据位。频率可在0~25MHz之间变化。SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率。

单片机读写SD卡电路设计

单片机读写SD卡电路设计 【摘要】本文设计了单片机读写SD卡电路,从硬件设计到软件实现的过程。本文以STC32为例,描述了设计工作原理,并给出连接图和程序。 【关键字】SD卡单片机 1引言 安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(外语缩写PDA)和多媒体播放器等。 2SD卡 SD卡就是SecureDigitalCard--安全数码卡,是由日本松下公司,东芝公司和美国SANDISK公司1999年8月共同开发研制的,具有大容量,高性能,尤其是安全等多种特点的多功能存储卡。 3系统设计方案 系统硬件组成 本设计硬件电路采用的整体结构如图1所示。RS232—HOST(单片机)—SD 卡。其中单片机采用流行的stc32,降低生产成本,串行接口RS232为标准3线制。 由稳定电压器供给5V电压,单片机通过SPI总线:时钟、输入、输出、片选4个I/O接口控制SD卡的读写操作。由于SD卡的供电电压为3.3V,所以我采用了LM317对SD卡提供3.3V的电压。SD的输入输出电压电平是3.3V的,而单片机的4个I/O接是5V的TTL电平,所以采用了74LVX4245电平转换驱动芯片,对SD卡的数据传输进行驱动。 当上电后,直接给单片机提供5V工作电压,通过LM317电压转换给SD卡提供3.3V工作电压。单片机通过复位键对SD卡进行读写控制,单片机对SD卡不断发出数据,同时SD卡的DataOutI/O接口把数据发送给单片机。实现单片机对SD卡的一次读写操作。 4系统程序设计 4.1SD卡模态选择 SD卡在工作时有两种总线模式:SD总线模式和SPI总线模式。两种模式下

SD卡硬件原理图及其读写程序

SD卡硬件原理图及其读写程序 2011-03-28 17:45转载自sail_007最终编辑sail_007 最近开始整理以前画过原理图和程序今天先整理出了SD卡的硬件和SPI方式的读写程序。今后会陆续写把DS1302时钟芯片GPRS模块CAN总线通信PWM数控电压也整理出来。一方面是想帮自己总结一下另外如果还能帮助到其他的单片机爱好者那也就更好了。当然水平有限整理出来的东西可能也有许多错误的地方也请高手能指出不胜感激。先发张SD卡的原理图。说明我用的是5V单片机SD卡则是3.3v如果直接连接引脚长期使用会影响SD卡寿命。我一开始选用了普通的光耦触发可能是导通速率不够快无法实现SPI通信后来我就改用9013就行了。下图上US1是SD卡壳其实1到9引脚对应了SD卡的9个引脚10号引脚是卡插入标志也就是说当有SD卡插入时10号引脚会接3.3v的地这样单片机就可以查询是否有卡了。在SPI总线模式下CS为主控制器向卡发送的片选信号SCLK为主控制器向卡发送的时钟信号INDataIn为主控制器向卡发送的单向数据信号MISODataOut为卡向主控制器发送的单向数据信号。程序如下说明我用的是freescale的DP256单片机该单片机有SPI 设备接口只要将其初始化成功便可完成通信设置。uchar CMD0RespCMD1RespCMD59RespCMD16RespCMD9RespC MD17RespCMD24RespCMD58Resp void SD_Initializevoid

uchar csdbuf16TempValue uchar cmdparam4recbuf600resp4resptype uchar sendbuf600 ulong len ulong i ulong BlockAdd SD_InsertDetect Pim.pts.bit.pts70 //cs0 SD_SPIDelay25 Pim.pts.bit.pts71 //cs1 SD_SPIDelay2 Pim.ddrs.bit.ddrs70 //pin cs direction Spi0.spicr1.bit.spe0 //spi enable Pim.ddrs.bit.ddrs71 //pin cs direction Pim.pts.bit.pts70//cs0 Spi0.spibr.byte0x02 //8MHz31.25kHz 0x07-0x00 Spi0.spicr1.bit.mstr1 //master mode Spi0.spicr1.bit.ssoe1 //ss output enable Spi0.spicr1.bit.cpol0 //cpol0 //cpol1 070215 Spi0.spicr1.bit.cpha0 //cpha0 Spi0.spicr2.byte0x18 //normal drive input pullup TempValueSpi0.spisr.byte//clear SPIF first step TempValueSpi0.spidr.byte//clear SPIF second step Spi0.spicr1.bit.spe1 //spi enable CMD0RespSD_ResetSD CMD1RespSD_ActiveInit whileCMD1Resp0x01 CMD1RespSD_ActiveInit 白开水易拉罐主页博客相册个人 档案好友i贴吧看看Ta是谁吧页码 1/5Ww2011/6/26https://www.doczj.com/doc/623098125.html,/wolf9s/blog/item/47e2a620 212d80268744f98c.htmlvoid SD_SPIDelayuint value uint i for i 0 i valuei SPI_SendByte0xFF // 发送0xFF clock out 0xFF uchar SD_ResetSDvoid uchar param4 0000resp SD_SendCmdCMD0 param SD_R1 resp return resp / 函数名称:

手机常用SD卡接口电路实例分析-2011-1220

手机常见SD卡接口电路实例分析 目的:让大家理解常见SD卡接口电路的工作原理和设计注意事项。作者:胡波 日期:2011/12/20 1.概述 现在的很多手机中都有存储卡的卡座,常被称为T-FLASH CARD,它的体积与常见的Micro SD卡相比要小很多,因此更适用于手机的设计中,但T卡的接口电路是与SD卡的接口电路是一样的,它们的主要差别就是卡的外形与体积不一样。为了能够读写这些卡,一般现在的手机的核心处理器都设计有SD卡的读写接口电路,在此我就简单介绍一下SD卡的接口电路。本例中的原理图来至于MTK的MT6573智能手机平台,与原图相比,只是做了部分美观方面的处理,看起来显得比原图紧凑一点,其余方面未做任何的改动。 2.SD卡接口电路实例分析 2.1.MTK6573智能机SD卡接口电路原理分析

SD卡的总线是一个业内的标准总线,它采用串行的方式输入和输出数据,对于硬件设计来讲,只要根据SD卡的接口规范,将SD 对应的信号线接到处理器的SD卡控制器的端口就可以了。而SD卡的读写控制,有着专门的软件通信协议,使得读写SD卡的内容变得非常的简单,在不同的嵌入式操作系统中,都有着专门的驱动程序,会将其映射成一个磁盘,使用特定的文件系统来完成数据的存储和删除。例如我们常用的读卡器,就可以将SD卡在Windows的操作系统中被认作一个U盘,从而非常简单地就可以实现对于SD卡的读写。 在手机的操作系统中,一般也是将其当作一个磁盘来对待的,这都是软件层面的事情,在这里就不多说了。对于搞硬件设计的人来讲,关心连线的对应关系就好了,而搞软件的人就只要关心SD卡的控制协议就可以了。 2.2.电路中的器件及关键网络信号介绍

SD卡原理及内部结构

摘要 SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,它的出现提供了一种便宜的、结实的卡片式的存储媒介。SD卡允许在两种模式下工作,即SD模式和SPI模式, SD卡在24mm×32mm×2.1mm的体积内结合了〔SanDisk〕快闪记忆卡控制与MLC (Multilevel Cell)技术和Toshiba(东芝)0.16u及0.13u的NAND技术,通过9针的接口界面与专门的驱动器相连接,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动 SD卡的容量从16兆字节到最高32GB不等。容量范围如此之宽,可为众多应用提供充足的外部存储空间。SD卡做为各种消费电子产品外部存储的应用、开发技术己经非常成熟、广泛。 关键字SD卡存储器 一SD卡发展历程 SD卡的技术是基于MultiMedia卡(MMC)格式上发展而来,大小和MMC卡差不多,尺寸为32mm x 24mm x 2.1mm。长宽和MMC卡一样,只是比MMC卡厚了0.7mm,以容纳更大容量的存贮单元。SD卡与MMC卡保持着向上兼容,也就是说,MMC卡可以被新的SD设备存取,兼容性则取决于应用软件,但SD卡却不可以被MMC设备存取。(SD卡外型采用了与MMC卡厚度一样的导轨式设计,以使SD设备可以适合MMC卡)。 SD卡接口除了保留MMC卡的7针外,还在两边加多了2针,作为数据线。采用了NAND 型Flash Memory,基本上和SmartMedia的一样,平均数据传输率能达到2MB/s。 设有SD卡插槽的设备能够使用较簿身的MMC卡,但是标准的SD卡却不能插入到MMC卡插槽。SD卡能够插于CF卡和PCMCIA卡上,插上转接器使用;而miniSD卡和microSD卡亦能插上转接器于SD卡插槽使用。一些USB连接器能够插上SD卡,而且一些读卡器亦能够插上SD卡,并由许多连接埠,例如USB、FireWire等存取使用。SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域,音乐、电影、新闻等多媒体文件都可以方便地保存到SD卡中。因此不少数码相机也开始支持SD卡。 SD卡是东芝在MMC卡技术中加入加密技术硬件而成,由于MMC卡可能会较易让使用者复制数码音乐,东芝便加入这些技术希望令音乐业界安心。类似的技术包括索尼的MagicGate,理论上加密技术可引入一些数码版权管理措施,但这功能甚少被应用。 二SD卡的结构组成

相关主题
文本预览
相关文档 最新文档