mfkiwl / f767_gps_imu_fatfs_sd Goto Github PK
View Code? Open in Web Editor NEWThis project forked from dawngdy/f767_gps_imu_fatfs_sd
This project forked from dawngdy/f767_gps_imu_fatfs_sd
实验器材: 阿波罗STM32F767开发板 实验目的: 学习FreeRTOS在STM32F767上的移植SD卡,实现100hz IMU + 5hz GPS数据保存在SD卡中 硬件连接: (1)驱动方式:采用 4 位 SDIO 方式驱动,6线制 (2)引脚:SDIO_D0/SDIO_D1/SDIO_D2/SDIO_D3/SDIO_SCK/SDIO_CMD 分别连接在 MCU 的 PC8/PC9/PC10/PC11/PC12/PD2 上面 (3)驱动接口:F767自带的SDMMC接口 文件管理系统: 1、文件系统是什么? (1)负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 (2)即在磁盘上组织文件的方法。方便管理、查看、编辑文件 (3)不需要直接操作底层地址来读写信息了,可以使用文件系统的API函数,效率更高 2、使用文件管理系统Fatfs,来管理SD卡,底层接口函数:6个接口函数,中间层是FATFS模块,应用层编写应用函数就可以了。 项目中遇到的问题: 1、调用SD卡读写函数后,提示硬件错误的问题。 分析原因: Fatfs文件管理系统所用内存较大,而所在任务分配的内存不够用。 解决方法: task2的任务堆栈设置的太小了。改为1024Byte就可以了 #define TASK2_STK_SIZE 1024 另外,系统所有总的堆大小configTOTAL_HEAP_SIZE也改大了 configTOTAL_HEAP_SIZE ((size_t)(128*1024)) //128K 2、问题描述:IMU数据输出频率为100HZ,GPS数据输出频率为5HZ,使用FatFs系统管理SD卡存储,测试发现,数据写入SD卡后,保存的数据有缺失的现象。 问题分析: 多次测试,查看保存的数据,分析数据保存不完整的原因。经过分析得知,原因有二,首先,在多处调用SD卡保存数据的函数,频繁打开、关闭文件会占用较多时间。另一方面,由于IMU数据输出频率变为100HZ,单位时间的数据量更多,SD卡写入文件相比于之前也会增加一些时间,导致这段时间输出的数据没有保存成功。 解决方法: 经查阅资料,得知可以使用环形缓存区的方法来解决该问题。将原来多处数据写入SD卡的地方,改成写入环形缓存区,节省了频繁打开、关闭文件占用的部分时间。另外,每次接收20组IMU数据和1组GPS数据后,将环形缓存区中的数据统一存入SD卡中,这段时间新的数据依然可以写入环形缓存区中,这样便完成了一次数据的存储。周而复始,数据便可以完整保存下来了。 测试结果:经过多次测试,数据保存完好,没有再次出现数据保存不完整的现象 3、在系统初始时,我们创建了FIFO的缓存区,那么这部分空间什么时候释放掉呢? 解决方法: (1)暂时的解决方案: 在停止数据保存到SD卡时,通过串口发送命令“stop save data”;这是单片机解析到该指令后,释放fifo缓存区内存空间。 (2)查阅资料得:复位或者重启后,RAM中数据会清除,故不会产生内存泄露 SRAM掉电会丢失数据 我虽然没有释放掉这些内存,但是我设备用完后会断电,会复位重启,这样也不会造成内存泄漏
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.