51单片机SD卡SPI模式操作_1568.doc_第1页
51单片机SD卡SPI模式操作_1568.doc_第2页
51单片机SD卡SPI模式操作_1568.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【51单片机SD卡SPI模式操作】 摘要:sd卡有两种接口模式,一种是sd模式,另一种是spi模式。在spi模式下,有六根接口线与主机相连,5V电平的51单片机通过电平转换可与3.3V电平的sd卡相连接。51单片机没有专门的spi总线,可以用51单片机的IO口来模拟spi总结时序。主机与sd卡的数据交换主要通过命令来实现,通过发送cmd0命令对sd卡进行复位,发送命令cmd1实现sd卡的spi模式初始化。cmd17、cmd18命令是sd卡的读写扇区命令,对sd卡的操作是严格按照时序进行的。 关键词:sd卡;spi接口;时序 sd卡以其大容量、低成本、携带方便、存储数据简单和安全可靠性高被大量应用于数码电子设备中,比如数码相机、数码摄像机、mp3、pda、电子学习机、电子图书等。对sd卡的操作有复位、初始化、读写等,下面以本人掌握的材料对sd卡的操作进行分析。 一、sd卡的结构 sd卡的外形与接口如图1,它有9个接点与主机相连,其接口端定义如表1所示。sd卡有两种操作模式,一种是sd模式,另一种是spi模式,不同模式下端口的定义不同。SD模式有一个时钟线、一个命令/反馈线、四根输入/输出信号线、两个电源地和一个电源,所有九根线都有定义,数据传输速率较快。SPI模式只用到CS片选、数据输入、数据输出、时钟、电源地及电源六根线。SPI模式较SD模式速度较慢,但很多单片机都有专用的SPI总线,可与sd卡直接相连,使用方便。 SD卡的内部结构如图2所示,主要有四部分组成,一是接口电路,共有九个接口电路,定义如表1所示。二是接口控制电路,所有操作都由该控制电路具体去执行。三是内部寄存器组OCR、CID、RCA等。四是存储数据的存储单元。接口电路通过控制电路与内部寄存器组成存储单元交换数据,其主要操作有写命令、读数据、写数据、读状态等。 二、sd卡的命令格式 sd卡的命令格式固定为6个字节48个位,其格式如图3所示。 开始位固定为0,第二位固定为1,表示主机给sd卡的命令,然后是6位命令索引号,索引号的大小与索引号数字相同,比如cmd0的索引号为000000,索引号41为101001。紧接着命令索引号是命令参数,有些命令有参数,有些命令没有参数,比如cmd0和cmd1命令参数为32个0,而命令cmd24、cmd17的命令参数是数据的读写地址。最后是7位CRC校验位和一位停止位1。根据命令索引号可推知sd卡的命令最多不超过64个(有些命令索引号为保留以后升级用,没有实际的命令相对应),sd卡协议把卡的命令分为若干类,有些命令只有对sd模式起作用,有些命令只对spi模式起作用,大部分命令是通用的,两种模式下具有相同的命令。 三、51单片机与sd卡在spi模式下的连接 由于51单片机内部没有集成spi模块,使用51单片机与sd卡通讯要用51单片机的IO口模拟spi时序,原则上51单片机的P0、P1、P2、P3口的任意位都可以与sd卡相连,但由于P0与P2口常用于单片机的数据与程序存储器扩展,而P3口又多用于第二功能,比如串行通讯、计数、外部中断等,实际上常用P1口与外部设备连接。第二个问题是接口电平的匹配,像at89s51等大多数单片机都是5v电平,而sd卡的电平是3.3v,超过3.6V的电压将可能烧坏sd卡,所以两者之间要进行电平转换。一种思路是用专用电平转换芯片,但代价较高,另一种是用分压的方式或降压的方式进行电平转换,转换电路如图4所示。 图4中左图是一个分压式电平转换电路,当输入是5V高电平时,经分压输入3.3V,当输入是0V低电平时,输出端仍然是0V低电平。图4中右图是一二极管降压电路,当输入为5V时,经二极管降压,输出为3.3V,当输入为0V时,二极管截止,输出仍然是0V。两种转换电路都是单向转换,只能是从5V电平转换为3.3V电平。 单片机与sd卡的连接电路图为图5所示。由单片机到sd卡的信号需要5V电平到3.3V电平的转换,cs片选信号、sd卡的数据输入信号以及sclk时钟信号都进行了分压式电平转换,并且所有电路都加有上拉电阻。由sd卡到单片机的dout信号线直接接到了单片机的IO端口上,如果单片机不能确认3.3V为高电平,从sd卡到单片机的电路也需要进行电平转换。 四、sd卡spi模式下操作时序 1.复位操作。sd卡进行正常读写前必须进行复位操作,复位操作的命令为cmd0,由0x40,0x00,0x00,0x00, 0x00,0x95组成,前两位固定为01索引号为000000,参数为32位0,CRC校验为1001010,结束位为1。进行sd卡操作必须满足严格的时序,其时序图为所6所示。复位操作由5个步骤组成,首先在片选信号cs为高电平时,发送至少74个时钟周期;第二片选CS拉低,发送cmd0命令;第三发送一定数量的时钟信号,等待复位成功;第四如果收到01h应答信号,表明复位成功,如果收到的信号始终是ffh信号,表明复位失败,需要重复进行复位操作;第五片选CS拉高并发送8个时钟信号完成整个复位操作。 2.初始化操作。进行spi模式操作前,必须进行spi初始化,初始化命令为cmd1,由0x41,0x00,0x00,0x00,0x0 0,0xff组成。前两位固定为01,命令索引号为000001,32位参数为0,CRC校验为1111111,结束标志为1。初始化时序为图7所示。首先把片选CS拉低,发送cmd1信号;插入一定量的时钟信号,等待sd在spi模式下的复位;如果收到00h的信号表明初始化成功,如果收到的信号始终是ffh,则表明初始化失败,需要重新初始化操作;拉高片选CS,并且发送8位时钟信号,完成整个初始化操作。 3.spi模式下读扇区操作。对sd卡的操作主要是对存储在sd卡的数据进行读写,spi模式下的读扇区操作时序如图8所示。读扇区命令为cmd17,由0x51,32位读地址,0xff组成。前两位固定为01,命令索引号为010001,参数为32位读扇区地址,CRC校验为1111111,结束标志为1。首先把CS拉低,发送cmd17,插入一定量的时钟信号,等待命令发送成功,当收到00h信号后表明命令发送成功,如果始终收到的是FFh则表明发送命令失败,需要重复发送,插入一定量的时钟信号,等待读取扇区数据。当收到0xfe标志后,表示随后的512字节为接收的数据,512个字节后是两字节CRC校验位,但在spi模式下,并不关心这些位的具体数值。操作结束,拉高CS位,并发送8个时钟信号。读取的数据长度可以由cmd16设定,默认值是512个字节。 4.spi模式下写扇区操作。对sd卡的操作主要是对存储在sd卡的数据进行读写,spi模式下的写扇区操作时序如图9所示。写扇区命令为cmd24,由0x58,32位读地址,0xff组成。前两位固定为01,命令索引号为011000,参数为32位写扇区地址,CRC校验为1111111,结束标志为1。 spi模式下,写扇区操作可以分成三部分,第一是写命令cmd24,时序与前面的读扇区相同。CS拉低,写入cmd24,插入一定量的时钟信号,当读回的是00h时,表示命令写入成功,然后再插入一定量的时钟信号,如图中1-4部分。第二是向sd卡写入512字节的数据,同读扇区命令相同,写入的字节数也可由cmd16设定,默认是512字节。首先写入扇区开始标志FFh,紧接着写入512字节的数据,最后是两字节的CRC校验,因为spi模式下并不关心CRC校验的数据,CRC校验的数据可以是两个0xFF。发送完数据后可以连续读sd卡,如果读回的数据的低五位是00101表明写入的512个字节的数据被sd卡所接收,整个过程如图中5-8部分。第三是将数据存入sd卡相应的flash存储单元中,这个过程需要一定时间,在此时间段,sd卡呈现忙状态,读sd卡数据端数据为00h,此时间段需要发送一定量的时钟信号;直到读sd卡的数据端读回的数据是FFh,表示数据写入成功,拉高CS片选,插入8个时钟信号。 结语 sd卡的操作还有很多,比如读内部寄存器CID、CSD等信息,对sd卡的数据的擦除等等,其操作大同小异,只不过使用的命令不同。在sd卡的复位及初始化时期,sd卡时钟信号应该保持低速,否则就可能引起复位及初始化失败。sd卡在spi模式下,通信速率较低,要充分发挥sd卡的优势,sd卡应工作在sd模式下。随着嵌入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论