上位机图像处理和嵌入式模块部署(f407 mcu中fatfs中间件使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

前面我们已经实现了spi norflash的驱动,理论上这已经可以实现数据的持久化保存了。为什么还需要一个文件系统呢?主要原因还是不方便。如果没有文件系统的话,我们访问文件都需要知道确切文件的sector地址和大小,这样很麻烦。此外,写入、读取文件的时候,还要提前规划好文件的大小,防止不同的文件之间相互覆盖。而有了fatfs之后,使用上就不需要这么小心翼翼了。

另外,今天我们还提出了一个中间件的概念。什么叫中间件呢,其实就是说这部分代码本身处于系统中间的位置。对上,它提供调用接口;对下,它需要具体硬件的适配。所以,只有这样的代码才称之为中间件。

1、除了fatfs之外,还有哪些中间件

广义的中间件还是蛮多的。比如说图形界面的lvgl,网络协议栈的lwip,实时操作系统rtos严格意义上也可以看成是中间件,毕竟它下面对着cpu,上面提供os接口。

2、fatfs需要适配哪些接口

目前来说,fatfs需要适配这么几个接口函数,

disk_status
disk_initialize
disk_read
disk_write
disk_ioctl
get_fattime

其中disk_status一般就是判断一下硬件的状态。disk_initialize代表硬件初始化,norflash的初始化话就在这里。disk_read代表读取数据。disk_write代表写入数据。disk_ioctl主要就是回复一些硬件属性,比如sector多大,整个硬件容量多大等等。get_fattime获取系统时间。

这几个接口都是在diskio.c文件里面,还是很好辨认的。

3、fatfs支持哪些硬件

理论上fatfs支持任何的硬件,只要按照它的要求做好底层适配就好了。不过目前为止,用的比较多的还是norflash和tf卡。norflash一般是固化在开发板的,往里面存文件不太方便。这个时候如果有一个可插拔的tf卡,直接通过fatfs,把文件从tf卡copy到norflash,那就很方便了。

4、fatfs给上层提供的接口

fatfs对外提供的接口其实和大多数文件系统都差不多,一般就是这些接口,大家不用全部掌握,用的什么学什么就可以了,

f_mount
f_mkfs
f_open
f_write
f_read
f_close

5、配置fatfs

fatfs自身也是可以配置的,比如我们希望对fatfs进行功能裁剪的话,直接配置ffconf.h文件就可以了。

6、测试方案

fatfs的测试还是比较容易的。首先对norflash进行fatfs加载,如果发现不能加载,那么先进行格式化操作,格式化完了再加载。接着就是写入数据、读取数据。判断一下写入的数据和读取的数据是不是吻合。最后就是卸载fatfs了。

7、调试

本身作者给出了完整的项目代码,和之前norflash相比较,其实就多了fatfs三个文件,

编译、烧入后,我们发现fatfs执行是失败的。进一步调试,发现在disk_status状态确认的时候,返回值是错误的。单步后发现,还是flashid判断的问题,重新调整修改一下代码,

	  if(SPI_FLASH_ReadID() == 0x684016)
      {
        status &= ~STA_NOINIT;
      }
      else
      {
        status = STA_NOINIT;;
      }

至此,我们可以看到在上位机串口打印上,一切ok正常了,

相关推荐
想要成为糕手。4 分钟前
stm32-RTC时实时钟
stm32·嵌入式硬件·实时音视频
Czzzzlq2 小时前
STM32基础教程——对射式红外传感器计数实验
c语言·stm32·单片机·嵌入式硬件·mcu
集大周杰伦2 小时前
ARM Cortex-M 内存映射详解:如何基于寄存器直接读写 寄存器映射方式编码程序 直接操作硬件寄存器来控制 MCU
arm开发·stm32·单片机·内存映射·arm cortex-m·地址映射·寄存器编码
最爱是生活2 小时前
STM32之软件SPI
stm32·单片机·嵌入式硬件
summer__77772 小时前
3.3.2 用仿真图实现点灯效果
单片机·proteus
辰哥单片机设计5 小时前
STM32项目分享:STM32智能窗户
单片机·嵌入式硬件
雷门大师姐11 小时前
14.DS18B20温度传感器
单片机·嵌入式硬件
触角0101000113 小时前
OLED屏幕开发全解析:从硬件设计到物联网显示实战 | 零基础入门STM32第五十二步
驱动开发·stm32·单片机·嵌入式硬件·物联网
蓑衣客VS索尼克13 小时前
无感方波开环强拖总结
经验分享·单片机·学习
傍晚冰川15 小时前
【江协科技STM32】ADC数模转换器-学习笔记
笔记·科技·stm32·单片机·嵌入式硬件·学习