在线时间234 小时
UID3301905
注册时间2017-1-8
NXP金币147
TA的每日心情 | 开心 2018-4-20 15:04 |
---|
签到天数: 8 天 连续签到: 1 天 [LV.3]偶尔看看II
金牌会员
 
- 积分
- 3240
- 最后登录
- 2023-7-24
|
【LPC54114学习笔记(结帖后继续探索)】SPI总线SD卡文件系统&文件读写
LPC54114板子自带了SPI总线的SD卡接口,因此可以进行FATFS文件系统的学习。
在官方例程中对于文件系统初始化部分是注释掉的,不知道官方把文件读写操作注释掉用意为何?
把官方例程的注释去掉之后我们便可以对文件系统有初步的认识:
1.启动文件系统采用f_mount(&fatfs,driverNumberBuffer,1)函数,其中fatfs为文件系统指针,driverNumberBuffer为初始化路径,按照FATFS文件系统官方规定,0:/为RAM DISK即内存区,1:/为USB DISK即U盘或USB-OTG,2:/为SD DISK即SDIO接口的SD卡,3:/为MMC DISK即SDMMC接口的SD卡,4:/为SDSPI DISK即SDSPI接口的SD卡,这里我们可以看到光是挂载SD卡的文件系统就有三种方式,这是因为业界对SD卡接口的标准没有统一,而这三种SD卡接口规范又不尽相同,因此FATFS文件系统就为这三种接口都单独做了三个路径。
2.创建文件、打开文件均采用f_open(&fd,"4:/LPC54114.txt",FA_CREATE_ALWAYS|FA_WRITE)函数,其中第一个参数fd为FIL文件指针,第二个参数为文件名,第三个参数为打开文件的行为方式,方式有FA_CREATE_NEW,仅仅创建新文件,若存在同名文件,则f_open()函数返回1,报错;FA_CREATE_ALWAYS 创建新文件并覆盖同名文件;FA_WRITE,允许修改文件;FA_READ,只允许读文件。
3.修改文件采用f_write(&fd,write_buff,strlen(write_buff),&ret)函数,write_buff为要写入的文件的内容,strlen(write_buff)为要写入的文件的内容的长度,ret无意义。注意,若f_open()函数的最后一个参数为FA_CREATE_NEW或FA_CREATE_ALWAYS,则后面必须紧跟f_write()函数,否则文件系统会出错。
4.文件读取采用f_read(&fd,read_buff,100,&ret)函数,read_buff为当前文件的内容。
5.注意,f_open()函数到最后必须额外紧跟f_close()函数,否则对文件的修改无法保存,一个f_open()函数要有一个f_close()跟上,多个f_open()函数也必须带有数量相同的f_close()。
6.f_write()和f_read()都只支持文件的ASCII码形式读写,即记事本方式读写,即如果文件是可以用记事本打开那一类的,如.c .h .html .txt .cpp这种就可以用这个方式。
文件系统代码写好之后可以从LED指示灯中看到结果:若文件系统初始化成功,LD7亮;若文件创建打开成功,LD6亮;若文件写入成功,LD5亮;若文件读取成功,LD4亮。
上传工程文件。
工程文件.zip
(9.36 MB, 下载次数: 44)
|
|