上位机图像处理和嵌入式模块部署(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正常了,

相关推荐
JJRainbow8 分钟前
SN75176 芯片设计RS-232 转 RS-485 通信模块设计原理图
stm32·单片机·嵌入式硬件·fpga开发·硬件工程
花月mmc21 分钟前
CanMV K230 波形识别——整体部署(4)
人工智能·python·嵌入式硬件·深度学习·信号处理
宁静致远202139 分钟前
STM32模拟IIC读取PCF8563
stm32·单片机·嵌入式硬件
三佛科技-134163842121 小时前
宠物洗澡打泡机方案,宠物泡泡机MCU方案开发设计分享
单片机·嵌入式硬件·物联网·智能家居·pcb工艺·宠物
芯岭技术1 小时前
低成本315/433M接收芯片 XL420 SOP8封装,支持 1527 等常见 OOK编码
单片机·嵌入式硬件
Wangshanjie_981 小时前
【通讯协议】-01、Modbus协议
单片机·信息与通信
听风吹雨yu1 小时前
STM32F407-MD5码计算/Digest认证计算
stm32·单片机·嵌入式硬件
yugi9878382 小时前
RN8302B电表芯片驱动开发指南(基于SPI通信)
驱动开发·单片机·嵌入式硬件
youcans_2 小时前
【STM32-MBD】(15)Simulink 模型开发之三相互补 PWM
stm32·单片机·嵌入式硬件·matlab·foc
Funing73 小时前
硬件实战项目——纯硬件寻迹小车
嵌入式硬件·电机·电路·智能车