好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

SD卡引脚定义-电路-基本原理.doc

14页
  • 卖家[上传人]:鲁**
  • 文档编号:393290616
  • 上传时间:2023-11-13
  • 文档格式:DOC
  • 文档大小:338KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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卡的SPI通信接口使其可以通过SPI通道进行数据读写从应用的角度来看,采用SPI接口的好处在于,很多单片机内部自带SPI控制器,不光给开发上带来方便,同时也见降低了开发成本然而,它也有不好的地方,如失去了SD卡的性能优势,要解决这一问题,就要用SD方式,因为它提供更大的总线数据带宽SPI接口的选用是在上电初始时向其写入第一个命令时进行的以下介绍SD卡的驱动方法,只实现简单的扇区读写1) 命令与数据传输1. 命令传输SD卡自身有完备的命令系统,以实现各项操作命令格式如下:       命令的传输过程采用发送应答机制,过程如下:                           每一个命令都有自己命令应答格式在SPI模式中定义了三种应答格式,如下表所示:字节 位 含义       1 7 开始位,始终为0 6 参数错误 5 地址错误 4 擦除序列错误 3 CRC错误 2 非法命令 1 擦除复位 0 闲置状态 字节 位 含义       1 7 开始位,始终为0 6 参数错误 5 地址错误 4 擦除序列错误 3 CRC错误 2 非法命令 1 擦除复位 0 闲置状态       2 7 溢出,CSD覆盖 6 擦除参数 5 写保护非法 4 卡ECC失败 3 卡控制器错误 2 未知错误 1 写保护擦除跳过,锁/解锁失败 0 锁卡 字节 位 含义       1 7 开始位,始终为0 6 参数错误 5 地址错误 4 擦除序列错误 3 CRC错误 2 非法命令 1 擦除复位 0 闲置状态 2~5 全部 操作条件寄存器,高位在前 写命令的例程://-----------------------------------------------------------------------------------------------  向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) 读取CIDCID寄存器存储了SD卡的标识码。

      每一个卡都有唯一的标识码CID寄存器长度为128位它的寄存器结构如下: 名称 域 数据宽度 CID划分 生产标识号 MID 8 [127:120] OEM/应用标识 OID 16 [119:104] 产品名称 PNM 40 [103:64] 产品版本 PRV 8 [63:56] 产品序列号 PSN 32 [55:24] 保留 - 4 [23:20] 生产日期 MDT 12 [19:8] CRC7校验合 CRC 7 [7:1] 未使用,始终为1 - 1 [0:0] 它的读取时序如下:          与此时序相对应的程序如下://------------------------------------------------------------------------------------    读取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)读取CSDCSD(Card-Specific Data)寄存器提供了读写SD卡的一些信息。

      其中的一些单元可以由用户重新编程具体的CSD结构如下:名称 域 数据宽度 单元类型 CSD划分 CSD结构 CSD_STRUCTURE 2 R [127:126] 保留 - 6 R。

      点击阅读更多内容
      相关文档
      【含听力7英RJ月考】六安市霍邱县2024-2025学年七年级上学期10月月考英语试卷.docx 【含听力7英RJ月考】蚌埠第三实验学校2024-2025学年七年级英语第一次月考试卷.docx 【含听力7英RJ月考】芜湖市无为市2024-2025学年七年级上学期10月月考英语试卷.docx 【含听力7英RJ月考】宿州市第一初级中学2024-2025学年七年级上学期第一次月考英语试卷.docx 2025年河北省普通高校招生考试冲刺压轴卷(三)物理试卷.doc 2025届江苏省扬州市高三下学期考前调研测试物理试卷.doc 2025届河南省高三全真模拟考试物理试卷.doc 2025届福建省百校联考高三下学期5月押题考试物理试卷.doc 2025届天津市宝坻区九校高三下学期联考物理学科试卷.doc 2025届湘豫名校联考高三下学期第四次模拟考试物理试卷.doc 2025届辽宁省名校联盟高三下学期模拟(押题卷)物理试卷(三).doc 2025届江苏省徐州市高三下学期第一次模拟考试物理试卷.doc 2025届江苏省泰州市高三第四次调研测试数学试卷.doc 2025届江苏省高品质高中高三下学期5月调研测试物理试卷.doc 2025届天津市和平区高三下学期三模物理试卷.doc 2025届湖南省天壹名校联盟高三下学期冲刺压轴大联考物理试卷.doc 2025届江西省九师联盟高三下学期5月检测模拟预测物理试卷.doc 2026届云南三校高考备考实用性联考卷(一)物理试卷.doc 2025届广东省深圳市福田某校高三下学期五模考试物理试卷.doc 2024—2025学年山西省高三上学期第一次调研考试数学试卷.doc
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.