大学毕业论文---基于stm32的sd卡设计.doc
《大学毕业论文---基于stm32的sd卡设计.doc》由会员分享,可在线阅读,更多相关《大学毕业论文---基于stm32的sd卡设计.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、淮南师范学院电子工程学院2013级电子信息科学与技术专业ARM嵌入式系统课程设计 成绩课程论文 题 目: 基于STM32的SD卡设计 课程名称: ARM嵌入式系统 学生姓名: 学生学号: 系 别: 电子工程学院 专 业: 电子信息科学与技术 年 级: 2013级 任课教师: 电子工程学院制2015年10月基于STM32的SD卡设计学生:指导教师:电子工程学院:电子信息科学与技术1概述1.1设计背景21世纪是一信息传递及应用高速的时代,信息在人类社会活动中已经必不可缺,使用嵌入式系统的电子产品已经在人们的日常生活中广泛普及应用。其中人们日常生活中最经常接触使用到的数码相机、手机、MP3、MP4、
2、多媒体播放器等,其信息数据的存储大部分都是使用的SD卡。所以SD卡在嵌入式上应用有着十分大市场空间。 SD卡拥有轻小、高存储容量、高速的传输速率以及很高的安全性,更换和编程也相当方便。根据SD卡胡特性,它已然成为非常多数码产品的外部应用储存的第一选择目标。ALIENTKE MiniSTM32开发板就带有SD卡接口,利用STM32自带的 SPI接口,最大通信速度可达18Mbps,每秒可传输数据 2M 字节以上,对于一般应用足够了。 2硬件设计2.1硬件读写模块SD卡存储模式是Flash。SD卡的卡内智能控制模块包含电源和时钟的管理、协议、算法安全、存取数据、ECC算法、处理缺陷和分析数据。FLA
3、SH每个扇区的写寿命在10万次左右,读的次数是无限制的。SD卡一般支持2种操作模式: 1、SD卡模式; 2、PI模式;SD卡的引脚排序如下图所示:图1 SD卡的引脚排序 SD卡的九个引脚功能:表1:SD卡引脚功能表针脚123456789SD卡模式CD/DAT3CMDVSSVCCCLKVSSDAT0DAT1DAT2SPI模式CSMOSIVSSVCCCLKVSSMIS0NCNCSD卡只能使用3.3V的IO电平,所以,MCU一定要能够支持3.3V的IO端口输出。注意:在SPI模式下,CS/MOSI/MISO/CLK都需要加10100K左右的上拉电阻。在STM32中,开板使用的是SPI的接口模式来进得
4、读写,所以,主要应用的便是SPI的模式。由于SD卡内部的供电电压上升是需要一段时间,大约是64个时钟,而且需要10个时钟与SD卡同步,所以在发送CMD0之前,要发送74个时钟。SD卡与STM32 进行数据交换,要将SD卡外部驱动,将外部储存卡与STM32联系起来。开发板对成为外部储存空间的SD卡进行读写,把读写命令解析并传送到SD卡中,从而实现开发板对外部储存卡的操作与控制。2.2硬件设计模块所需要的硬件资源如下: 1、SD卡。 2、STM32F103ZET6。 3、DS0(外部 LED0)。4、串口 1。 SD卡和STM32的连接:SPI1与安全数码卡通信,如下其引脚的连接定义为: PE3:
5、SPI1-SPI2全双工通讯,低电平作用; PA7:通讯结束后跟随一个CRC校验; PA5:SPI1、SPI2的NSS引脚是断开的; PA6:SPI驱动,NSS引脚由软件设置配置; PC12:MOSI输出,与STM32通信; CLK:时钟信号; CMD:双向命令和响应信号; DAT0-3:双向数据信号; VDD,VSS:电源和地信号;原理图如下:图2 SD卡接口与STM32连接原理图 在SPI模式下,引脚1(DAT3)作为SPI片选线CS用,引脚2(CMD)用作SPI总线的数据输出线MOSI,而引脚7(DAT0)为数据输入线MISO ,NSS由硬件配置, SPI2为主机, SPI1为从机,使
6、SS输出(置位 SPI_ CR2 SSOE位),SPI2 NSS引脚复位 SPI1的 NSS引脚并配置 SPI1为从机。在通讯中使用DMA可以减少代码密度和执行时间,容易接收和发送数据。利用各种硬件设备自身的特点来减小其运转开销,例如减小中断次数、利用DMA传输方式等。安全数码卡传输给STM32,STM32和SD卡进行数据间的互换。3软件设计3.1SD卡初始化SD卡的典型初始化过程如下:(1) 初始化与SD卡连接的硬件条件(MCU的SPI配置,I/O口配置)。(2) 上电延时(74个CLK)(3) 复位卡(CMD0),进入LDLE状态。(4) 发送CMD8,检查是否支持2.0协议。(5) 根据
7、不同协议检查SD卡(命令包括CMD55、CMD41、CMD58和CMD1等)。(6) 取消片选,发多8个CLK,结束初始化。开始发送74个时钟周期发送复位命令CMD0进入SPI总线模式发送激活命令CMD1SD卡响应Bit=0?结束NY图3 流程图(SD卡初始化)3.2读SD卡SD卡读取数据,这里通过CMD17来实现,具体过程如下:(1) 发送CMD17。(2) 接收卡响应R1。(3) 接收数据起始令牌0XFE。(4) 接收数据。(5) 接收2个字节的CRC,如果不使用CRC,两个字节在读取后可以丢掉。(6) 禁止片选之后,发多8个CLK。3.3写SD卡写数据通过CMD24来实现,具体过程如下:
8、(1) 发送CMD24.(2) 接收卡响应R1。(3) 发送写数据起始令牌0XFE。(4) 发送数据。(5) 发送2字节的伪CRC。(6) 禁止片选之后,发多8个CLK。开始SD卡初始化发送命令CMD24接收SD卡响应超时错误发送数据起始标志发送512字节数据发送2字节CRC码接收SD卡响应&0x1F=5?结束返回NYYN开始SD卡初始化发送写命令CMD17应答=0xFE接收512字节数据接收2字节CRC码结束返回NY图4 流程图(读SD卡) 图5 流程图(写SD卡)4软件仿真打开keil5编译运行编写好的程序,没有错误后选择软件仿真(Debug)使用波形仿真。点开Setup设置引脚PORTA
9、.3,PORTA.5,PORTA.6,PORTA.7选择Bit模式。按下KEY0初始化SD卡,SD卡开始发送接收数据。点击Run.仿真情况如下图:5总结SD卡应用使让人越来依赖它,可以说是已经成为人类社会生活中不可或缺的一部分,SD卡具有广阔的发展前景和市场前景。21世纪是一信息传递及应用高速的时代,信息在人类社会活动中已经必不可缺,使用嵌入式系统的电子产品已经在人们的日常生活中广泛普及应用。 通过本次设计实验,让我各方面都有了一个提升。技术上,我更加深入了解STM32和SD卡,学到了以前没有学过的知识。在做这个设计时,也有着各种各样的困难,通过请教老师、同学和查找各种资料克服了一个又一个困难
10、,最终完成了这篇论文。本次设计实验从选题之初到准备材料到编写论文到完成论文,让我深刻的人数到我有很多不足之处,比如书本知识不能学以致用,缺乏综合应用知识的能力,分析问题的能力也比较弱。通过这次的学习和实践,我清楚的认识到自己的知识还很不全面,处理问题等方面都还需要一个更大的提升,做任何都要认真对待、全力以赴。也明白任何事都不像看起来那么简单,只有通过认真学习和动手实践才能克服困难,走向成功。参考文献1张洋,刘军,严汉宇.原子教你玩STM32(库函数版) M.北京航空航天大学出版社,2013. 2邓奕.电子线路CAD实用教程(第2版)M. 华中科技大学出版社.2012 3刘明福. 基于STM32
11、的SD卡设计D.江西科技学院.20124刘同法,肖志刚,彭继卫. ARM Cortex-M3内核微控制器快速入门与应用M北京航空航天大学出版社.2009 5 Cortex-M3 技术参考手册.pdf 6STM32不完全手册_库函数版本_V3.1.pdf7STM32固件库使用手册的中文翻译版.pdf8protel99se不完全使用手册.pdf9喻金钱、喻斌.STM32F系列ARMCortex-M3核微控制器开发与应用M.清华大学出版社.10 百度百科SD卡附录:#include sys.h#include mmc_sd.h#include spi.h#include usart.h u8 SD_
12、Type=0;/SD卡的类型 /移植修改区/移植时候的接口/data:要写入的数据/返回值:读到的数据u8 SD_SPI_ReadWriteByte(u8 data)return SPI1_ReadWriteByte(data); /SD卡初始化的时候,需要低速void SD_SPI_SpeedLow(void) SPI1_SetSpeed(SPI_BaudRatePrescaler_256);/设置到低速模式/SD卡正常工作的时候,可以高速了void SD_SPI_SpeedHigh(void) SPI1_SetSpeed(SPI_BaudRatePrescaler_2);/设置到高速模式/
13、SPI硬件层初始化void SD_SPI_Init(void) /设置硬件上与SD卡相关联的控制引脚输出/禁止其他外设(NRF/W25Q64)对SD卡产生影响GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE ); /PORTA时钟使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;/PA2.3.4 推挽 n_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode
14、= GPIO_Mode_Out_PP ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);/PA2.3.4上拉 SPI1_Init();SD_CS=1;/取消选择,释放SPI总线void SD_DisSelect(void)SD_CS=1; SD_SPI_ReadWriteByte(0xff);/提供额外的8个时钟/选择sd卡,并且等待卡准备OK/返回值:0,成功;
15、1,失败;u8 SD_Select(void)SD_CS=0;if(SD_WaitReady()=0)return 0;/等待成功SD_DisSelect();return 1;/等待失败/等待卡准备好/返回值:0,准备好了;其他,错误代码u8 SD_WaitReady(void)u32 t=0;doif(SD_SPI_ReadWriteByte(0XFF)=0XFF)return 0;/OKt+; while(t0XFFFFFF);/等待 return 1;/等待SD卡回应/Response:要得到的回应值/返回值:0,成功得到了该回应值/ 其他,得到回应值失败u8 SD_GetRespon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学毕业 论文 基于 stm32 sd 设计
限制150内