皮皮网
皮皮网

【软件源码交付好处】【泛微源码】【vr全景源码】fatfs 源码讲解

时间:2024-12-27 15:18:12 来源:绝密kdj源码

1.FatFS入门——文件系统移植实验
2.STM32F4DiscoverySTM32F4DISCOVERY扩展板
3.STM32F207的DevKit1207的主要特点
4.关于STM32H743配置SDIO接口驱动并移植FATFS
5.STM32CubeMX系列 | FATFS文件系统

fatfs 源码讲解

FatFS入门——文件系统移植实验

       介绍SPI存储数据的码讲局限性,指出需要管理方案进行数据操作,码讲FatFS文件系统应运而生。码讲

       FatFS提供封装的码讲数据文件状态管理,通过调用API即可便捷操作文件,码讲类比Windows操作系统高度封装的码讲软件源码交付好处文件系统。

       裸机上挂载文件系统前需格式化,码讲擦除原有数据并创建文件和目录索引,码讲便于记录数据存储状态。码讲

       FatFS结构为面向小型嵌入式系统的码讲通用FAT文件系统,使用ANSI C语言编写,码讲独立于底层I/O介质,码讲易于移植。码讲

       使用SPI与WQ芯片通讯,码讲将FatFS移植到WQ芯片,码讲通过a版本的源码,包含doc和src两个文件夹。

       src文件夹重点分析,option文件夹包含各语言所需文件,history.txt和readme.txt文件说明版本历史及系统介绍。

       阅读源码可从integer.h、diskio.c、ff.c顺序进行,泛微源码了解FatFS、用户程序与底层程序配合。

       FatFS源码中,ff.c、ff.h、integer.h、diskio.h及cc.c文件不需修改,只需调整diskio.c及ffconf.h文件。

       在SPI读写flash实验基础上移植FatFS,对diskio.c和ffconf.h进行修改与配置。

       diskio.c文件中函数调用底层驱动函数控制flash读写操作,通过宏定义实现不同物理设备操作。

       盘状态函数执行设备ID获取与初始化,根据设备ID判断是否初始化完成。

       分配空间给FatFS使用,调整所有地址偏移量,进行扇区擦除与写入操作。

       ffconf.h文件定义FatFS功能配置的宏,修改相关配置以适应具体环境。

       完成移植后,进行编译测试,执行格式化设备、vr全景源码挂载FatFS文件系统、读写测试。

       挂载文件系统使用f_mount()和f_mkfs()函数,读写测试使用f_open()、f_write()、f_close()、f_read()函数。

       移植并测试完成后,FatFS文件系统成功部署于WQ芯片,实现数据管理功能,后续文章将详细讲解基础功能使用。

STMF4DiscoverySTMF4DISCOVERY扩展板

       DM-F4BB扩展模块配置:基于ST原厂STMF4DISCOVERY推出的高性能扩展板,支持3.5寸工业级LCD触摸屏与万像素OV Camera模块,配备多达6路串口、CAN、IIC、SPI、以太网口、USB2.0 FS OTG/device/host、TF卡等接口,支持操作系统如uC/OS-Ⅱ_v2. & uC/GUI_v3.a,并提供BSP源码,鱼儿飞源码支持文件系统如FatFs_vR0.a与协议栈LwIP_v1.3.2。

       DM-STF4BB:深圳市英蓓特科技有限公司推出的基于STMF4DISCOVERY的扩展板,基于ARM -bit Cortex-M4的STMFVGT6处理器,最高运行频率MHz,提供丰富的外设接口,包括Camera模块输出、3.5寸工业级LCD触摸屏,支持操作系统如uC/OS-Ⅱ与提供BSP源码包。

       DM-STF4BB与STMF4DISCOVERY共同构成Embest的Devkit评估板,完善了功能,拓展了主芯片的功能,帮助客户体验更多外设功能,内置ST-LINK/V2调试器,采用USB供电,是面向广大ST电子爱好者的低成本开发套件。

       STMF4DISCOVERY是ST公司推出的基于STMF4xx系列芯片的评估套件,主控芯片为STMFVGT6,提供处理器、存储器、传输接口、输入输出接口、调试接口、飞天侠源码运动传感、Camera接口、音频接口、液晶触摸屏接口、扩展接口,支持操作如uC/OS-II操作系统、文件系统与网络协议栈,提供开发环境支持与调试工具支持,适合医疗产品、网络终端、电机控制、工业控制、智能仪器仪表、家庭/楼宇自动化、数据采集分析等领域。

STMF的DevKit的主要特点

       ***配置3.5寸工业级LCD触摸屏,支持4线触摸。

       ***1è·¯USB2.0 OTG Full-Speed,1è·¯USB2.0 OTG High-Speed。

       ***G-Sensor三轴加速度传感器。

       ***IEEE v2的/ Mbps以太网接口。

       ***支持UCOS II_v2. & UCGUI_v3.a,并提供BSP源码。

       ***支持FatFs_vR0.a 文件系统(用于U盘,SD卡的文件系统)。

       ***支持LwIP_v1.3.2协议栈。

       ***工业级的器件选型。从实际应用的角度考虑,所选型器件的货源以

       åŠä¾›è´§å‘¨æœŸéƒ½æœ‰è¶³å¤Ÿçš„市场保障。 处理器

       STMFIGT6,ARM -bit Cortex-M3,最高运行频率为MHz

       å†…部集成1 MBFlash memory,+4KB SRAM

       æ”¯æŒç‰‡å¤–Flash, SRAM, PSRAM, NOR及NAND Flash

       LCD 并行接口,/ 模式

       USB 2.0 Full-speed/High-speed Device/Host/OTG

       / Ethernet MAC.,支持硬件IEEE v2(MII/RMII)

       2è·¯CAN2.0B,4è·¯UART,2路全双工I2S,3è·¯I2C,3è·¯SPI最高Mbit

       8到 bit 并行摄像头接口,最高达Mbyte/s

       1/4/8bit SD/MMC/SDIO主机接口,最高容量可支持GB

       é«˜è¾¾ä¸ªI/O口,最高频率MHz

       ä¸ªå®šæ—¶å™¨ï¼ˆå…¶ä¸­2个为位),最高计数频率为MHz

       3è·¯-bit 高达2M的 A/D、2è·¯-bit D/A

       æ¨¡æ‹Ÿéšæœºæ•°ç”Ÿæˆå™¨

       è¶…低功耗,支持睡眠、停机、待机三种模式

       æ”¯æŒFlash、系统内存和SRAM三种启动方式

       æ”¯æŒISP及IAP编程

       å­˜å‚¨å™¨

       æ¿è½½I2C接口的2Kbits EEPROM

       å¤–扩Micro SD卡存储

       éŸ³é¢‘接口

       ä¸€è·¯ç«‹ä½“声音频HeadPhone输出接口 一路扬声器输出接口

       ä¸€è·¯éŸ³é¢‘DAC输出接口

       æ¶²æ™¶è§¦æ‘¸å±æŽ¥å£

       åˆ†è¾¨çŽ‡ï¼š (W) x (H) dots

       RGB: colors

       bit 并行接口

       4线触摸屏

       äº®åº¦å¯è°ƒï¼ˆPWM控制)

       ä¼ è¾“接口

       1è·¯5线串口,RS电平

       USB接口: 1 x USB2.0 OTG/device/host,High-speed,Mbps

       1 x USB2.0 OTG/device/host,Full-speed,Mbps

       1è·¯TFCARD接口

       ç½‘络接口:硬件IEEE v2的/Mbps以太网接口,标准RJ 连接器

       1è·¯CAN2.0B接口

       1è·¯IrDA收发器

       è¾“入接口

       1è·¯AD转换接口(电位器可调电阻模拟输入) 2个用户按键,1个复位按键,1个唤醒按键

       pin标准JTAG调试接口

       RTC

       ä¸€è·¯RTC插座

       LED指示灯

       1个电源指示灯

       2个USB OTG FS指示灯

       2个USB OTG HS指示灯

       4个用户自定义灯

       ç”µæ°”特性

       æ“ä½œæ¸©åº¦ : - ℃ ~ ℃

       æ“ä½œæ¹¿åº¦ : % ~ %

        系统特性

       æ”¯æŒuCOS-II_v2.以及FreeRTOS_v6.1.0实时操作系统

       æ”¯æŒUCGUI_v3.a

       æ”¯æŒFatFs_vR0.a 文件系统

       æ”¯æŒLWIP _v1.3.2协议栈

       é©±åŠ¨ç¨‹åº&应用层范例:(下载DevKit评估套件概述,可了解更多)

       DevKit评估套件提供完善的驱动支持以及丰富的应用范例。帮助客户快速进入产品的二次开发,节省开发时间。主要内容如下:

       åŸºæœ¬é©±åŠ¨ä¾‹ç¨‹ï¼šADC, CAN, CRC, DAC, DMA, EXTI, FLASH, GPIO, I2C, I2S, IWDG, LCD-Touch, Lib_DEBUG, NVIC, PWR, RCC, RNG, RTC, SDIO, SysTick, TIM, USART, WWDG

       IRDA红外驱动例程

       I2S语音播放驱动例程

       G-Sensor(三轴加速度计)应用例程

       SD卡支持FatFs_vR0.a文件系统应用例程

       USB Host/Device/OTG应用例程

       Ethernet应用例程

       uCOS-II_V2. & UCGUI_v3.a操作系统移植例程 医疗产品

       å·¥ä¸šè‡ªåŠ¨åŒ–

       æ™ºèƒ½ä»ªè¡¨

       æ¶ˆè´¹ç”µå­

       æ¥¼å®‡å®‰é˜²

关于STMH配置SDIO接口驱动并移植FATFS

       在配置 STMH 的 SDIO 接口驱动并移植 FATFS 时,首先应关注 SDMMC1 的 CUBEMX 配置。根据原理图,对 SDMMC1 的时钟树进行配置,确保时钟频率不超过 MHz。在 SDMMC 配置选项中,时钟分频系数 div 应选择为 5,以确保读写时钟不超过 MHz,此时频率为 /5=MHz,符合要求。配置过程中无需添加 DMA,可暂时采用轮询读写方式。

       接下来,将 FATFS 最新版本的源代码添加至项目中。需要编写 SD 卡读写函数,对接 diskio.c 文件中的读写操作。该文件内主要实现对 SD 卡插槽状态的 GPIO 状态读取。底层读写函数包括轮询方式和 DMA 方式,具体使用哪种方式取决于在 diskio.c 文件的操作函数中选择。

       在 CUBEMX 自动生成的初始化代码中,调用 HAL_SD_Init() 函数初始化,这可能导致错误:在初始化时未插入卡,造成卡死。建议注释掉此段代码,并在 sdcard_driver.c 文件中进行初始化操作。初始化前先检测 SD 卡是否存在,避免在无卡时进行初始化。

       对于 diskio.c 文件,主要实现的函数包括 disk_status()、disk_initialize()、disk_read()、disk_write() 和 disk_ioctl()。此阶段需进行 FATFS 的裁剪,通过配置 ffconf.h 文件完成,确保除常规配置外,启用 exFAT 支持以兼容大于 G 的大容量卡。

       编写测试程序,挂载 SD 卡,尝试打开文件。若文件不存在,创建并写入字符串,关闭文件后再次打开并读取内容,结果应显示于终端。最终,通过上述步骤完成 STMH 的 SDIO 接口驱动配置与 FATFS 移植。

       如需获取同款开发板,可在闲鱼搜索用户名阿达和阿文,并获取技术咨询。

STMCubeMX系列 | FATFS文件系统

       FATFS文件系统是为小型嵌入式系统设计的FAT(文件分配表)文件系统模块,是操作系统中用于明确存储设备或分区上的文件的方法和数据结构。FATFS文件系统支持FAT、FAT、FAT格式,允许在多个存储媒介上使用,并且具备独立的缓冲区,支持多个文件同时读写操作。它的设计遵循ANSI C标准,与磁盘I/O层分离,具有高度的灵活性和可移植性,同时兼容Windows文件系统。

       FATFS文件系统的结构层次包括应用层、FATFS模块层和底层接口。应用层是用户与FATFS模块交互的接口,它提供了一系列应用接口函数,如f_open、f_read、f_write和f_close等,使得用户可以像在PC上操作文件一样简单。FATFS模块层是文件系统的实现层,它实现了FAT文件读写协议,提供ff.c和ff.h文件供用户使用。底层接口是FATFS与存储介质交互的部分,包括存储介质读写接口和提供文件创建、修改时间的实时时钟。移植FATFS模块时,通常只需修改两个文件:ffconf.h和diskio.c。

       FATFS的移植过程包括数据类型定义、配置和函数编写三个步骤。在数据类型定义中,用户需要在integer.h文件中设置数据类型。配置步骤通过ffconf.h文件完成,用户可以在这里配置FATFS的相关功能。最后的函数编写则涉及到在diskio.c文件中实现底层驱动,包括disk_initialize、disk_status、disk_read、disk_write、disk_ioctl和get_fattime等六个接口函数。

       在使用FATFS文件系统时,STMCubeMX可以简化这一过程。通过STMCubeMX配置FATFS,用户仅需简单设置即可完成数据类型定义、配置和函数编写等步骤。STMCubeMX的底层实现框图展示了FATFS与硬件的交互,以及如何通过软件接口实现SD卡的读写操作。

       硬件设计中,D1指示灯用于指示系统运行状态,串口1则用于打印调试信息。软件设计部分,首先需要通过STMCubeMX进行设置,然后使用MDK-ARM进行编程。在进行编程时,需要确保使用的是支持FATFS文件系统的SD卡,并且在电脑上进行格式化,建立FAT文件系统。

       下载验证阶段,用户需要编译源代码并将其下载到开发板上。在开发板运行后,D1指示灯将不断闪烁,串口会打印出调试信息。将SD卡插入电脑后,用户会发现SD卡中已建立两个文件:Sensor.csv和STMcube.txt。打开这些文件后,用户可以看到写入的数据。

更多内容请点击【综合】专栏