QSPI FLASH与SD卡同时支持fatfs文件系统

简介: QSPI FLASH与SD卡同时支持fatfs文件系统

上一篇我们已经在QSPI FLASH上支持了fatfs文件系统:这次我们继续在该代码上支持SD卡文件系统,ST官方在维护CubeMX上对多个硬件驱动的fatfs兼容性做得非常好,所以还是用STM32CubeMX来配置就可以了:

小熊派上硬件SD卡接口:

640.png

1、SD卡配置

STM32Cube-19 | 使用SDMMC接口读写SD卡数据

640.png

2、SD卡fatfs配置

STM32Cube-20(补充) | 在SD卡上移植FATFS文件系统

由于上一节我们已经配置了fatfs的参数,再加上STM32CubeMX已经对SD卡做了支持,所以我们将这个选项勾上就可以了,其余默认即可,然后直接生成代码工程。


640.png

3、编写同时测试QSPI FLASH以及SD卡fatfs的程序

640.png

很幸运的是,官方已经帮我们把代码都写好了,不需要写一行,直接进入应用编程即可。


由于代码过长,这里不便全部展示,感兴趣的去我的码云上clone工程下载测试。

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
    /* USER CODE BEGIN 1 */
    /* USER CODE END 1 */
    /* MCU Configuration--------------------------------------------------------*/
    /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();
    /* USER CODE BEGIN Init */
    /* USER CODE END Init */
    /* Configure the system clock */
    SystemClock_Config();
    /* USER CODE BEGIN SysInit */
    /* USER CODE END SysInit */
    /* Initialize all configured peripherals */
    MX_GPIO_Init();
    MX_I2C1_Init();
    MX_USART1_UART_Init();
    MX_QUADSPI_Init();
    MX_FATFS_Init();
    MX_SDMMC1_SD_Init();
    /* USER CODE BEGIN 2 */
    Mount_SD_Fatfs();
    Mount_QSPI_FLASH_Fatfs();
    test_get_qspi_cap();
    test_get_sd_card_cap();
    test_sd_card_fatfs();
    test_spi_flash_fatfs();
    /* USER CODE END 2 */
    /* Infinite loop */
    /* USER CODE BEGIN WHILE */
    while (1)
    {
        /* USER CODE END WHILE */
        /* USER CODE BEGIN 3 */
    }
    /* USER CODE END 3 */
}

运行结果:

640.png

获取完整demo:

码云仓库:https://gitee.com/morixinguan/bear-pi/tree/master/20.QSPI_SD_Card_Sync_Mount_Fatfs

640.png

获取方法:

git clone https://gitee.com/morixinguan/bear-pi.git

即可获取本次实验工程全部代码。

往期精彩

一个产品级MCU内存管理方案


嵌入式热敏打印机模块-优库E58T-1玩起来


腾讯云IoT Explorer&小程序腾讯连连接入方案


整理了很久之前在码云/Github/CSDN上收藏的嵌入式产品级项目分享开源

目录
相关文章
|
存储 算法 安全
【Freertos基础入门】队列(queue)的使用
【Freertos基础入门】队列(queue)的使用
937 0
|
9月前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
530 2
无法写入用户设置。请打开用户设置并清除错误或警告,然后重试。
无法写入用户设置。请打开用户设置并清除错误或警告,然后重试。
|
消息中间件 传感器 负载均衡
消息队列 MQ使用问题之如何配置一主一从的同步复制模式
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
消息队列 MQ使用问题之如何配置一主一从的同步复制模式
|
存储 安全 NoSQL
pthread_getspecific和pthread_setspecific详解
pthread_getspecific和pthread_setspecific详解
|
设计模式 前端开发 C语言
【设计模式】 观察者模式介绍及C代码实现
观察者模式(Observer Pattern)是一种常用的设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有观察者都会收到通知并更新自己的状态。观察者模式又称为发布-订阅模式。Subject(主题):被观察的对象,它将所有观察者对象的引用保存在一个集合中,并提供了添加和删除观察者对象的方法。Observer(观察者):观察者接口,定义了更新自己的状态的方法,以便主题在状态发生变化时通知观察者。ConcreteSubject(具体主题)
606 0
【设计模式】 观察者模式介绍及C代码实现
|
API 开发工具 C语言
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
1480 0
|
存储 缓存 API
FATFS函数浅谈 看完学会FATSFS,建议收藏
FATFS函数浅谈 看完学会FATSFS,建议收藏
|
负载均衡 druid 算法
SpringBoot-MybatisPlus-Dynamic(多数据源)
SpringBoot-MybatisPlus-Dynamic(多数据源)
1220 0
SpringBoot-MybatisPlus-Dynamic(多数据源)
|
存储 SQL 缓存
【MySQL数据库原理 零】MySQL数据库原理看这一篇就够了(一)
【MySQL数据库原理 零】MySQL数据库原理看这一篇就够了(一)
539 1