移植步骤
下载地址http://elm-chan.org/fsw/ff/00index_e.html
1.文件移植
将文件政策放置到USER下,魔术棒添加头文件路径和在keil中添加即可
2.注释或者删除官方的示例
3.定义get_fattime
DWORD get_fattime(void)
{
return 0;
}
4.修改存储介质,替换掉示例的存储介质
disk_status:告知操作哪个存储介质
disk_initialize:初始化存储介质
disk_read
OUT方向是向上传输给ff.c
设备状态返回
没有初始化,不存在设备,设备写保护
5.把FLASH等设备的初始化函数写到disk_initialize之下,以便之后f_mount的调用对引脚进行初始化
6.为了确认初始化正常,要读取FLASH_ID确认初始化成功
可以直接调用disk_status返回状态
disk_status的返回类型
调用初始化函数之后要确保SPI_Flash能正常操作(防止存POWER_DOWN状态),可以调用SPI_Flash_WAKEUP在初始化函数之前;
7.读取状态
选定设备,向上层返回数据,选择开始扇区,扇区数
返回值
通过调用SPI_FLASH_BufferRead();读取状态
因为每个扇区地址相隔4096,所以可以写为
8.写入状态
同读取数据需要调用SPI_FLASH
指针类型不一致需要进行强制转换
9.对FLASH进行格式化
调用disk_ioctl
相关命令
CTRL_SYNC用于同步,即把内存数据保存到硬盘,对于flash来说直接写入,所以不需要同步
MIN_SS和MAX_SS是代指扇区大小,MAX_SS需要改为4096
GET_BLOCK_SIZE每次擦除最小单位
flash有128个block,每个block有16个扇区,共2048个扇区。返回类型要强制转换为DWORD和WORD
时间返回按情况写入