ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:310.56KB ,
资源ID:10750577      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10750577.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(整理stm32Fatfs读写SD卡.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

整理stm32Fatfs读写SD卡.docx

1、整理stm32Fatfs读写SD卡stm32 Fatfs 读写SD卡读写SD是嵌入式系统中一个比较基础的功能,在很多应用中都可以用得上SD卡。折腾了几天,总算移植成功了 最新版Fatfs(Fatfs R0.09) ,成功读写SD卡下文件。 FatFs (http:/elm-chan.org/fsw/ff/00index_e.html)是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 的编写遵循ANSI C,因此不依赖于硬件平台。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM 等等,不需要做任何修改。1. SD卡

2、/TF卡 硬件接口SD卡有两种操作接口,SDIO和SPI。 使用SDIO口的速度比较快,SPI的速度比较慢 。SD卡引脚描述如下: SD卡SPI接法如下:我使用的是正点原子的开发板,所以采用的是SPI接口的模式。TF卡SDIO 模式和SPI模式 引脚定义: 可以发现Micro SD卡只有8个引脚是因为比SD卡少了一个Vss。使用TF转SD的卡套套在Micro SD卡上,这样一来大小就和SD卡一样大,这时候卡套上的9个引脚就和SD卡一样了,你可以完全当做SD卡来操作。2. SD卡底层驱动SD卡的操作比较复杂,需要多看看一些文档 。 这里附上SD底层驱动代码,代码说明详见注释Sd卡SPi操作底层代

3、码 :sdcard.csdcard.h3. Fatfs 移植FatFs 软件包中相关文件:ffconf.h FatFs 模块配置文件ff.h FatFs 和应用模块公用的包含文件ff.c FatFs 模块diskio.h FatFs and disk I/O 模块公用的包含文件integer.h 数据类型定义option 可选的外部功能diskio.c FatFs 与disk I/O 模块接口层文件(不属于 FatFs 需要由用户提供)FatFs 配置,文件系统的配置项都在 ffconf.h 文件之中:(1) _FS_TINY :这个选项在R0.07 版本之中开始出现,在之前的版本都是以独立的

4、文件出现,现在通过一个宏来修改使用起来更方便;(2) _FS_MINIMIZE、_FS_READONLY、_USE_STRFUNC、_USE_MKFS、_USE_FORWARD 这些宏是用来对文件系统进行裁剪(3) _CODE_PAGE :本选项用于设置语言码的类型(4) _USE_LFN :取值为03,主要用于长文件名的支持及缓冲区的动态分配: 0:不支持长文件名; 1:支持长文件名存储的静态分配,一般是存储在BSS 段; 2:支持长文件名存储的动态分配,存储在栈上; 3:支持长文件名存储的动态分配,存储在堆上。(5) _MAX_LFN :可存储长文件的最大长度,其值一般为(12255),但

5、是缓冲区一般占(_MAX_LFN + 1) * 2 bytes;(6) _LFN_UNICODE :为1 时才支持unicode 码;(7) _FS_RPATH :R0.08a 版本改动配置项,取值范围02:0:去除相对路径支持和函数;1:开启相对路径并且开启f_chdrive()和f_chdir()两个函数;2:在1 的基础上添加f_getcwd()函数。(8) _VOLUMES :支持的逻辑设备数目;(9) _MAX_SS :扇区缓冲的最大值,其值一般为512;(10) _MULTI_PARTITION:定义为1 时,支持磁盘多个分区;(11) _USE_ERASE :R0.08a 新加入

6、的配置项,设置为1 时,支持扇区擦除;(12) _WORD_ACCESS :如果定义为1,则可以使用word 访问;(13) _FS_REENTRANT :定义为1 时,文件系统支持重入,但是需要加上跟操作系统信号量相关的几个函数,函数在syscall.c 文件中;(14) _FS_SHARE :文件支持的共享数目。Fatfs 开源文件系统 从R0.07e 之后 版本开始就不再提供底层接口文件 diskio.c 模板,这里附上根据以上SD卡底层驱动对应的 diskio.c 源码:001#include common.h002/*-*/003/* Inidialize a Drive */004

7、005DSTATUS disk_initialize (006BYTEdrv/* Physical drive nmuber (0.) */007)008009u8 state;010011if(drv)012013returnSTA_NOINIT;/仅支持磁盘0的操作014015016state = SD_Init();017if(state = STA_NODISK)018019returnSTA_NODISK;020021elseif(state != 0)022023returnSTA_NOINIT;/其他错误:初始化失败024025else026027return0;/初始化成功02

8、8029030031032033/*-*/034/* Return Disk Status */035036DSTATUS disk_status (037BYTEdrv/* Physical drive nmuber (0.) */038)039040if(drv)041042returnSTA_NOINIT;/仅支持磁盘0操作043044045/检查SD卡是否插入046if(!SD_DET()047048returnSTA_NODISK;049050return0;051052053054055/*-*/056/* Read Sector(s) */057058DRESULT disk_r

9、ead (059BYTEdrv,/* Physical drive nmuber (0.) */060BYTE*buff,/* Data buffer to store read data */061DWORDsector,/* Sector address (LBA) */062BYTEcount/* Number of sectors to read (1.255) */063)064065u8 res=0;066if(drv | !count)067068returnRES_PARERR;/仅支持单磁盘操作,count不能等于0,否则返回参数错误(五)规划环境影响评价的跟踪评价069(1

10、)生产力变动法070if(!SD_DET()3.政府部门规章071072returnRES_NOTRDY;/没有检测到SD卡,报NOT READY错误073疾病成本法和人力资本法将环境污染引起人体健康的经济损失分为直接经济损失和间接经济损失两部分。直接经济损失有:预防和医疗费用、死亡丧葬费;间接经济损失有:影响劳动工时造成的损失(包括病人和非医务人员护理、陪住费)。这种方法一般通常用在对环境有明显毒害作用的特大型项目。正确答案B074C.可能造成较大环境影响的建设项目,应当编制环境影响报告书0753.评估环境影响的价值(最重要的一步):采用环境经济学的环境经济损益分析方法,对量化后的环境功能损

11、害后果进行货币化估价,即对建设项目的环境费用或环境效益进行估价。1.准备阶段076同建设项目安全评价相关但又有不同的还有:地质灾害防治管理办法规定的地质灾害危险性评估,地震安全性评价管理条例中规定的地震安全性评价,中华人民共和国职业病防治法中规定的职业病危害预评价等。077if(count=1)/1个sector的读操作078(3)是否符合区域、流域规划和城市总体规划。079res = SD_ReadSingleBlock(sector, buff);080081else/多个sector的读操作082083res = SD_ReadMultiBlock(sector, buff, count

12、);084085/*086do087088if(SD_ReadSingleBlock(sector, buff)!=0)089090res = 1;091break;092093buff+=512;094while(-count);095*/096/处理返回值,将SPI_SD_driver.c的返回值转成ff.c的返回值097if(res = 0x00)098099returnRES_OK;100101else102103returnRES_ERROR;104105106107108109/*-*/110/* Write Sector(s) */111112#if _READONLY = 01

13、13DRESULT disk_write (114BYTEdrv,/* Physical drive nmuber (0.) */115constBYTE*buff,/* Data to be written */116DWORDsector,/* Sector address (LBA) */117BYTEcount/* Number of sectors to write (1.255) */118)119120u8 res;121122if(drv | !count)123124returnRES_PARERR;/仅支持单磁盘操作,count不能等于0,否则返回参数错误125126if(

14、!SD_DET()127128returnRES_NOTRDY;/没有检测到SD卡,报NOT READY错误129130131/ 读写操作132if(count = 1)133134res = SD_WriteSingleBlock(sector, buff);135136else137138res = SD_WriteMultiBlock(sector, buff, count);139140/ 返回值转换141if(res = 0)142143returnRES_OK;144145else146147returnRES_ERROR;148149150#endif /* _READONLY

15、*/151152153154/*-*/155/* Miscellaneous Functions */156157DRESULT disk_ioctl (158BYTEdrv,/* Physical drive nmuber (0.) */159BYTEctrl,/* Control code */160void*buff/* Buffer to send/receive control data */161)162163DRESULT res;164165166if(drv)167168returnRES_PARERR;/仅支持单磁盘操作,否则返回参数错误169170171/FATFS目前版

16、本仅需处理CTRL_SYNC,GET_SECTOR_COUNT,GET_BLOCK_SIZ三个命令172switch(ctrl)173174caseCTRL_SYNC:175SD_CS_ENABLE();176if(SD_WaitReady()=0)177178res = RES_OK;179180else181182res = RES_ERROR;183184SD_CS_DISABLE();185break;186187caseGET_BLOCK_SIZE:188*(WORD*)buff = 512;189res = RES_OK;190break;191192caseGET_SECTOR_

17、COUNT:193*(DWORD*)buff = SD_GetCapacity();194res = RES_OK;195break;196default:197res = RES_PARERR;198break;199200201returnres;202203204/*-*/205/* User defined function to give a current time to fatfs module */206/* 31-25: Year(0-127 org.1980), 24-21: Month(1-12), 20-16: Day(1-31) */207/* 15-11: Hour(0-23), 10-5: Minute(0-59), 4-0: Second(0-29 *2) */

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1