STM32写入SD卡数据覆盖
STM32写入SD卡数据覆盖
更多
在STM32中实现SD卡数据覆盖写入,通常需要以下步骤(以FatFS文件系统库为例):
核心步骤
- 初始化SD卡
- 打开文件(使用
FA_OPEN_ALWAYS | FA_WRITE模式) - 定位写入位置(覆盖关键步骤)
- 写入数据
- 关闭文件
示例代码(使用FatFS)
#include "fatfs.h"
FATFS fs; // 文件系统对象
FIL fil; // 文件对象
FRESULT fr; // 操作结果
void write_to_sd_card(const char* path, uint32_t offset, const uint8_t* data, uint32_t size) {
// 1. 挂载文件系统
f_mount(&fs, "", 1);
// 2. 打开文件(如果不存在则创建)
fr = f_open(&fil, path, FA_OPEN_ALWAYS | FA_WRITE);
if (fr != FR_OK) return;
// 3. 关键:定位到覆盖位置
f_lseek(&fil, offset); // 指定覆盖起始位置
// 4. 写入数据(覆盖旧数据)
UINT bytes_written;
f_write(&fil, data, size, &bytes_written);
// 5. 关闭文件
f_close(&fil);
f_mount(NULL, "", 0); // 卸载
}
关键点说明
-
覆盖原理:
f_lseek()将文件指针移动到指定位置(字节偏移量)- 后续写入会从该位置开始覆盖原有数据
- 新数据长度可以小于/等于/大于原数据(文件会自动扩展)
-
打开模式:
FA_OPEN_ALWAYS | FA_WRITE // 打开现有文件或创建新文件替代方案:
FA_CREATE_ALWAYS: 总是创建新文件(会删除旧文件)FA_OPEN_EXISTING: 必须文件已存在
-
注意事项:
- SD卡初始化:确保硬件SPI/SDMMC和FATFS已正确配置
- 写入对齐:建议512字节对齐提升速度
- 错误处理:检查
fr返回值(参见ff.h中的错误码) - 缓存刷新:重要数据后可用
f_sync()立即写入物理介质
典型场景
// 覆盖文件前100字节
uint8_t new_data[50] = {0xAA, 0xBB, ...};
write_to_sd_card("data.log", 0, new_data, sizeof(new_data));
// 在文件末尾追加数据
f_close(&fil);
fr = f_open(&fil, "data.log", FA_OPEN_APPEND | FA_WRITE);
常见问题解决
-
写入失败:
- 检查接线(SD卡模块的CS/CLK/MISO/MOSI)
- 确保调用
FATFS_LinkDriver()正确挂载磁盘 - 使用
f_getfree()检查存储空间
-
性能优化:
- 启用
FF_USE_FASTSEEK配置 - 使用多块写入
f_write(&fil, data, BLOCK_SIZE*N, ...) - 减少
f_open/f_close调用次数
- 启用
提示:使用STM32CubeMX配置FatFS时,在
Middleware/FATFS中启用:
Use writtingUser-defined function(可选)- 在
ffconf.h中调整_FS_EXFAT等选项适配SD卡容量
【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙贴片SD卡)
、CSNP4GCR01-DPW SD卡以及数据传输模块。STM32F10
2025-05-09 16:11:48
STM32&SD卡实现USB虚拟U盘
下载源码请关注公众号之前的文章中介绍过STM32读写SD卡和FatFS文件系统相关的知识。今天将在这基础上介绍
资料下载
李鸿洋
2021-12-28 19:54:08
STM32单片机基础19——使用SDMMC接口读写SD卡数据
本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SDMMC外设读取SD
资料下载
佚名
2021-11-19 09:06:02
SD卡数据写入
SD卡数据写入
¥100.00
梦翼师兄
开发板的SD卡驱动程序不能写入和读出sd卡的内容
我现在测试MSD_WriteBuffer和MSD_ReadBuffer 是否能读写buffer ,函数返回正常值0,但是不能写入和读出sd卡的内
2019-07-01 04:35:08
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览