完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
看着原子的代码瞎折腾了段时间,FATFS移植的是最新版的R0.11部分函数API有所改变。但还是很好移植的。
首先是ffconf.h: 此文件用于系统的配置,主要配置一下几个地方即可应用。 #define _FS_tiNY 0 选择使用tiny版 一般tiny用于8051等小型系统中 STM32选择0配置成普通模式即可。 #define _FS_READONLY 0 只读的配置 要读写配置成0 只读配置为1。 #define _FS_MINIMIZE 0 系统部分功能基本函数,如获取剩余空间的函数等 0是全部使能,其他见注释即可。 #define _USE_MKFS 1 使能格式化函数。 #define _USE_STRFUNC 1 使能字符串类的操作比如 f_putc, f_puts。 #define _USE_FASTSEEK 1 使能快速定位 #define _CODE_PAGE 936 这个是对简体中文的的支持 可配置成其他语言。 #define _USE_LFN 3 选择支持长文件名,0为不支持,1-3为支持,其区别是存储的地方不一样。1为存储在代码段中,2为存储在栈中,3为存储在堆中,需要使用malloc来分配。 #define _VOLUMES 2 设置可挂载的设备数目 ,2即最大2个设备。 #define _MIN_SS 512 //扇区缓存最小值 #define _MAX_SS 4096 //扇区缓存最大值 我使用外部flash定义扇区为4K,当最大值和最小值不相等需要在disk_ioctl();添加GET_SECTOR_SIZE命令的功能。 其他的本人都没怎么修改了。 然后是diskio.c文件: 此文件是用于底层驱动的接口。做设备初始化,读写等操作与FATFS应用层衔接。 #define SD_CARD 0 //SD卡,卷标为0 #define EX_FLASH 1 //外部flash 主要定义一下卷标。 #define FLASH_SECTOR_SIZE 4096 #define FLASH_BLOCK_SIZE 8 //每个块8个扇区 u16 FLASH_SECTOR_COUNT = 512*6; //6M给文件系统使用 定义外部flash的扇区大小。 其他的接口函数按照原有的结构进行编写即可。 这样就基本完成FATFS的移植工作了,接下来就是直接使用文件系统提供的函数即可完成功能。 需要注意的是:当扇区改变是需要进行格式化操作才能完成设备的挂载。不然若扇区于上次的不同,挂载会出现错误:13 没有可用的FAT。 sta = f_mkfs("1:",1,4096); //对外部flash格式化 使用SFD MODE 用于移动磁盘 软盘 ,FDIS MODE 用于硬盘等设备。 4096为扇区的大小。 最新版的挂载函数为: sta = f_mount(fs[1],"1:/",1); 或 sta = f_mount(fs[1],"1:",1); 如果只有一个设备sta = f_mount(fs[1],"",1);也可。 多个设备必须指定驱动号。 最后一个参数为1,是立即执行挂载操作,0则是延迟挂载(不管出现什么情况都会返回成功)。 到这里,读写就比较简单了。 若有错误,多谢指正! 最后附上本次测试的代码。
|
|
608 浏览 0 评论
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
1149 浏览 0 评论
2526 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2308 浏览 3 评论
4955 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-4 11:18 , Processed in 0.544850 second(s), Total 68, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号