15.28、 SD卡访问实验.pdf

上传人:紫竹语嫣 文档编号:5514774 上传时间:2020-05-27 格式:PDF 页数:15 大小:737.38KB
返回 下载 相关 举报
15.28、 SD卡访问实验.pdf_第1页
第1页 / 共15页
15.28、 SD卡访问实验.pdf_第2页
第2页 / 共15页
15.28、 SD卡访问实验.pdf_第3页
第3页 / 共15页
15.28、 SD卡访问实验.pdf_第4页
第4页 / 共15页
15.28、 SD卡访问实验.pdf_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《15.28、 SD卡访问实验.pdf》由会员分享,可在线阅读,更多相关《15.28、 SD卡访问实验.pdf(15页珍藏版)》请在三一文库上搜索。

1、 SD卡访问实验卡访问实验 ? 意义与作用意义与作用 神舟IV号开发板资源丰富,本节将介绍如何通过SPI协议访问神舟IV号上插入的SD卡, 实验测试可以识别1G到16G的SD卡。通过本实验,我们还可以对SD卡有一个深入的了解。 ? 实验原理实验原理 SD卡支持两种接口访问模式,SDIO模式和SPI模式。本次实验我们采用SPI模式,首先 程序运行后,初始化实验需要使用的到串口和LCD显示接口,然后初始化访问SD卡要使用 的SPI接口,按照协议要求初始化SD卡,读取SD的信息包括规范标准的版本、卡的容量、 卡生产日期等信息,最后串口打印SD的的起始扇区(MBR)数据。 ? 硬件设计硬件设计 SD卡

2、读卡器实验要用到的硬件资源有: ? 串口 1:串口 1 在本实验中打印程序运行过程中的提示信息。 ? LED 指示灯:LED 指示灯主要用于指示程序运行状态。 ? SD 卡座:神舟 IV 号最大支持 2G 的 SD 卡 SD 卡座卡座 神舟IV号开发板载有标准的SD卡接口, 有了这个接口, 我们就可以外扩大容量存储设备, 可以用来记录数据。其原理图如下: 图表 1 SD 卡接口原理图 SD卡我们使用的是SPI模式通信, SD卡的SPI接口连接到STM32的SPI1上, SD_CS接在PD11 上, 神舟IV号开发板上的SPI1由SD卡和W25X16共用, 他们通过不同的CS片选信号来分时复用。

3、 SD 卡介绍卡介绍 SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪 记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理 (PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开 发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传 输率、极大的移动灵活性以及很好的安全性。 SD卡一般支持2种操作模式: 1,SD卡模式; 2,SPI模式; 主机可以选择以上任意一种模式同SD卡通信,SD卡模式允许4线的高速数据传输。SPI 模式允许简单的通

4、过SPI接口来和SD卡通信。 在神舟在神舟IV号中,是使用号中,是使用SPI接口来访问接口来访问SD卡,即所说的卡,即所说的SPI模式模式。 SD卡的引脚排序如下图所示: SD卡引脚功能描述如下表所示: SD卡只支持3.3V的IO电平,所以,MCU一定要能够支持3.3V的IO端口输出。 SD卡要进入SPI模式很简单, 就是在SD卡收到复位命令 (CMD0) 时, CS为有效电平 (低 电平)则SPI模式被启用。不过在发送CMD0之前,要发送74个时钟,这是因为SD卡内部 有个供电电压上升时间,大概为64个CLK,剩下的10个CLK用于SD卡同步,之后才能开始 CMD0的操作,在卡初始化的时候,

5、CLK时钟最大不能超过400Khz!。 首先介绍SPI模式下几个重要的操作命令,如下表所示: 命令 参数 回应 描述 CMD0(0X00) NONE R1 复位SD卡 CMD9(0X09) NONE R1 读取卡特定数据寄存器 CMD10(0X0A) NONE R1 读取卡标志数据寄存器 CMD16(0X10) 块大小 R1 设置块大小(字节数) CMD17(0X11) 地址 R1 读取一个块的数据 CMD24(0X18) 地址 R1 写入一个块的数据 CMD41(0X29) NONE R1 引用命令的前命令 CMD55(0X37) NONE R1 开始卡的初始化 CMD59(0X3B) 仅最

6、后一位有效 R1 设置CRC开启(1)或关闭(0) SD卡应答数据r1格式如下所示: SD卡的初始化过程如下: 1、初始化与SD卡连接的硬件条件(处理器的SPI初始化); 2、上电延时(74个CLK); 3、发送复位卡命令(CMD0); 4、发送SEND_IF_COND命令(CMD8)识别卡的协议版本,并根据协议激活卡; 5、激活卡,内部初始化并获取卡类型(CMD1(用于MMC卡)、CMD55、CMD41); 6.、查询OCR,获取供电状况(CMD58); 7、是否使用CRC(CMD59); 8、设置读写块数据长度(CMD16); 9、读取CSD,获取存储卡的其他信息(CMD9); 10、发送

7、8CLK后,禁止片选; 这样我们就完成了对SD卡的初始化,这里面我们一般设置读写块数据长度为512个字 节,并禁止使用CRC。在完成了初始化之后,就可以开始读写数据了。 SD卡读取数据,这里通过CMD17(SD_CMD_READ_SINGLE_BLOCK)来实现,具体 过程如下: 1、发送SD_CMD_READ_SINGLE_BLOCK(CMD17); 2、接收卡响应R1; 3、接收数据起始令牌0XFE; 4、接收数据; 5、接收2个字节的CRC,如果没有开启CRC,这两个字节在读取后可以丢掉。 6、禁止片选之后再发送8CLK; 以上就是一个典型的读取SD卡数据过程,SD卡的写于读数据差不多,

8、写数据通过 CMD24来实现,具体过程如下: 1、发送CMD24; 2、接收卡响应R1; 3、发送写数据起始令牌0XFE; 4、发送数据; 5、发送2字节的伪CRC,如果没有开启CRC,也要发送16个时钟(写入任意两个字节)。 6、禁止片选之后再发送8CLK; 以上就是一个典型的写SD卡过程。关于SD卡更详细的介绍请参考SD卡的参考资料。 ? 软件设计软件设计 GPIO 与串口初始化与串口初始化 在SD卡读卡器实验中使用了神舟IV号的LED灯指示程序运行状态,而串口则输出提供信 息。这些硬件资源前面已经详细讲解过,这里只是简单的介绍他们的初始化程序。 串口串口1初始化初始化 初始化LCD显示屏

9、,输出提示信息 MAL(媒体接入层)初始化(媒体接入层)初始化 位于位于 stm32_eval_spi_sd.c 文件中文件中 MAL初始化函数MAL_Init(uint8_t lun)主要实现SD接口的初始化,获取SD卡的信息等。 其中包含其中包含 SPI 的初始化配置的初始化配置 SD_LowLevel_Init() 函数位于以下文件中函数位于以下文件中 STM32F10x_StdPeriph_Lib_V3.3.0UtilitiesSTM32_EVALSTM3210C_EVAL stm3210c_eval.c SD 卡在初始化的时候需要低速时钟,初始化完成后可以高速时钟访问,所以时钟设置函

10、数 如下: 卡在初始化的时候需要低速时钟,初始化完成后可以高速时钟访问,所以时钟设置函数 如下: 在完成了初始化之后,就可以开始读写数据了。SPI的底层写函数为 SPI的底层读函数为 SD卡发送命令的函数为:卡发送命令的函数为: 获得获得SD卡状态的函数如下:卡状态的函数如下: SD 卡数据读写卡数据读写 SD卡部分,最重要的就是2个函数,一个MSD_WriteBuffer函数,用于向SD卡写入数据, 当你要COPY文件到SD卡的时候,就是由这个函数完成的。另外一个是MSD_ReadBuffer函 数,该函数用于读取SD卡上面的数据。 SD卡读取数据,具体过程如下: ? 发送CMD17 (SD

11、_CMD_READ_SINGLE_BLOCK); ? 接收卡响应R1 response; ? 等待接收数据起始令牌0XFE; ? 接收数据; ? 接收2个字节的CRC,如果没有开启CRC,这两个字节在读取后可以丢掉。 ? 禁止片选之后再发送8CLK; SD卡的写于读数据差不多,写数据通过CMD24来实现,具体过程如下: ? 发送CMD24 (SD_CMD_WRITE_SINGLE_BLOCK); ? 接收卡响应R1 response; ? 发送写数据起始令牌0XFE; ? 发送数据; ? 发送2字节的伪CRC;如果没有开启CRC,也要发送16个时钟(写入任意两个字节) ? 禁止片选之后再发送8

12、CLK; Main函数最后是重复输出SD卡MBR扇区的数据,每次打印之后改变LED指示灯的状态: ? 下载与验证下载与验证 神舟IV号光盘源码目录包含本实验的工程源码,在神舟IV号光盘源码 28、神舟IV号 SD卡访问实验.rarProject28、SD卡访问实验EWARMv5STM32F107VC-ARMJISHUExe目录 下的ARMJISHU_SD卡访问实验.hex文件即为前面我们分析的SD卡访问实验.编译好的固件, 我们可以直接将固件下载到神舟IV号开发板中,插入SD卡观察运行效果。 如果使用JLINK下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找

13、到引用源。下载固件 到神舟IV号开发板小节进行操作。 如果使用USB下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行操 作。 如果使用串口下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行 操作。 如果在IAR开发环境中, 下载编译好的固件或者在线调试, 请按错误! 未找到引用源。错误! 未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 如果在MDK开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。错误!未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 ? 实验现象实验现象 正常情况下,神舟IV号串口2将打印如下信息: 可以看出测试时使用的卡容量为4GB。 最后重复输出SD卡MBR区的数据内容, 其中最后两个字节为55AA表示卡的文件系统分区有 效。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料


经营许可证编号:宁ICP备18001539号-1