云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > ARM课程设计

ARM课程设计

  • 62 次阅读
  • 3 次下载
  • 2025/6/15 12:40:19

淮南师范学院电子工程学院2013级电子信息科学与技术专业《ARM嵌入式系统》课程设计 参考文献

[1]张洋,刘军,严汉宇.原子教你玩STM32(库函数版) [M].北京航空航天大学出版社,2013. [2]邓奕.电子线路CAD实用教程(第2版)[M]. 华中科技大学出版社.2012 [3]刘明福. 基于STM32的SD卡设计[D].江西科技学院.2012

[4]刘同法,肖志刚,彭继卫. ARM Cortex-M3内核微控制器快速入门与应用.[M]北京航空航天大学出版社.2009

[5] Cortex-M3 技术参考手册.pdf [6]STM32不完全手册_库函数版本_V3.1.pdf [7]STM32固件库使用手册的中文翻译版.pdf [8]protel99se不完全使用手册.pdf

[9]喻金钱、喻斌.STM32F系列ARM Cortex-M3核微控制器开发与应用[M].清华大学出版社. [10] 百度百科SD卡

http://baike.http://m.njliaohua.com//link?url=DgRftLuAiKBwz2Lmng4lZQB5AcOXDAlk_kP1A3oXGBBxXeT3CGhtCez1GEkyR45NosBOeacPnIbVwKhzAqeECa

附录:

#include \

#include \sd.h\#include \#include \

u8 SD_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);//设置到高速模式

- 8 -

淮南师范学院电子工程学院2013级电子信息科学与技术专业《ARM嵌入式系统》课程设计 }

//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 = 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,成功;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; do { if(SD_SPI_ReadWriteByte(0XFF)==0XFF)return 0;//OK t++;

- 9 -

推挽

淮南师范学院电子工程学院2013级电子信息科学与技术专业《ARM嵌入式系统》课程设计 }while(t<0XFFFFFF);//等待 return 1; }

//等待SD卡回应

//Response:要得到的回应值 //返回值:0,成功得到了该回应值 // 其他,得到回应值失败

u8 SD_GetResponse(u8 Response) { u16 Count=0xFFFF;//等待次数 while ((SD_SPI_ReadWriteByte(0XFF)!=Response)&&Count)Count--;//等待得到准确的回应 if (Count==0)return MSD_RESPONSE_FAILURE;//得到回应失败 else return MSD_RESPONSE_NO_ERROR;//正确回应 }

//从sd卡读取一个数据包的内容 //buf:数据缓存区

//len:要读取的数据长度. //返回值:0,成功;其他,失败; u8 SD_RecvData(u8*buf,u16 len) { if(SD_GetResponse(0xFE))return 1;//等待SD卡发回数据起始令牌0xFE while(len--)//开始接收数据 {

*buf=SPI1_ReadWriteByte(0xFF); buf++; }

//下面是2个伪CRC(dummy CRC) SD_SPI_ReadWriteByte(0xFF); SD_SPI_ReadWriteByte(0xFF);

return 0;//读取成功 }

//向sd卡写入一个数据包的内容 512字节 //buf:数据缓存区 //cmd:指令

//返回值:0,成功;其他,失败;

u8 SD_SendBlock(u8*buf,u8 cmd) { u16 t; if(SD_WaitReady())return 1;//等待准备失效 SD_SPI_ReadWriteByte(cmd); if(cmd!=0XFD)//不是结束指令 {

- 10 -

淮南师范学院电子工程学院2013级电子信息科学与技术专业《ARM嵌入式系统》课程设计 for(t=0;t<512;t++)SPI1_ReadWriteByte(buf[t]);//提高速度,减少函数传参时间 SD_SPI_ReadWriteByte(0xFF);//忽略crc SD_SPI_ReadWriteByte(0xFF); t=SD_SPI_ReadWriteByte(0xFF);//接收响应 if((t&0x1F)!=0x05)return 2;//响应错误 }

return 0;//写入成功 }

//向SD卡发送一个命令 //输入: u8 cmd 命令 // u32 arg 命令参数 // u8 crc crc校验值 //返回值:SD卡返回的响应 u8 SD_SendCmd(u8 cmd, u32 arg, u8 crc) {

u8 r1; u8 Retry=0; SD_DisSelect();//取消上次片选 if(SD_Select())return 0XFF;//片选失效 //发送

SD_SPI_ReadWriteByte(cmd | 0x40);//分别写入命令 SD_SPI_ReadWriteByte(arg >> 24); SD_SPI_ReadWriteByte(arg >> 16); SD_SPI_ReadWriteByte(arg >> 8); SD_SPI_ReadWriteByte(arg); SD_SPI_ReadWriteByte(crc); if(cmd==CMD12)SD_SPI_ReadWriteByte(0xff);//Skip a stuff byte when stop reading //等待响应,或超时退出 Retry=0X1F; do { r1=SD_SPI_ReadWriteByte(0xFF); }while((r1&0X80) && Retry--); //返回状态值 return r1; } //获取SD卡的CID信息,包括制造商信息

//输入: u8 *cid_data(存放CID的内存,至少16Byte) //返回值:0:NO_ERR // 1:错误 u8 SD_GetCID(u8 *cid_data)

- 11 -

搜索更多关于: ARM课程设计 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

淮南师范学院电子工程学院2013级电子信息科学与技术专业《ARM嵌入式系统》课程设计 参考文献 [1]张洋,刘军,严汉宇.原子教你玩STM32(库函数版) [M].北京航空航天大学出版社,2013. [2]邓奕.电子线路CAD实用教程(第2版)[M]. 华中科技大学出版社.2012 [3]刘明福. 基于STM32的SD卡设计[D].江西科技学院.2012 [4]刘同法,肖志刚,彭继卫. ARM Cortex-M3内核微控制器快速入门与应用.[M]北京航空航天大学出版社.2009 [5] Cortex-M3 技术参考手册.pdf [6]STM32不完全手册_库函数版本_V3.1.pdf [7]STM32固件库使用手册的中文翻译版.pdf [8]protel99se不完全使用手册.pdf [9]喻金钱、喻斌.STM32F系

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com