RT-Thread 5.0.2版本基于STM32F407处理器SPI接口挂载SD卡

1、概述

        本人开发了一款基于STM32F407ZG处理器的8路步进电机控制器,使用SPI3端口板载了SD卡,既然已经有了SD卡,自然要编写驱动代码挂载文件系统,下面是完整的SD卡文件系统挂载的过程。

2、STM32F407处理器SPI接口挂载SD卡过程记录

        第1步,启动一个可以正常工作的软件工程

        点击CubeMX Setting启动STM32CubeMX配置工具。

        稍等片刻,CubeMX启动中。

        CubeMX启动成功。

        第2步,配置SPI接口。

        根据原理图配置好SPI3接口。

        点击GENERATE CODE生成代码,然后关闭CubeMX。

        CubeMX Setting工具会在在后台生成软件工程配置信息。

        第3步,使用RT-Thread Setting工具配置软件工程。

        双击RT-Thread Setting启动配置工具。

        在配置界面中移动鼠标至SPI图标,在出现的浮动菜单中点击configs菜单。

        打开SD卡驱动选项,打开SPI驱动选项,打开SPI接口使用SD卡选项。

         配置好虚拟文件系统选项。然后点击RT-Thread Studio左上角的保存软件工程配置。

        第4步,更改board.h文件,打开SPI3的相关宏定义。

        打开board.h文件,找到SPI3的宏定义,去掉注释打开宏定义。

        第5步,编译软件工程。

        代码编译成功。

        第6步,下载固件到目标板中运行。

        代码下载成功并运行至main()函数断点处。

        点击全速运行代码。

        PC端打开Putty,选择合适的串口连接到目标板,在MSH窗口中运行命令:list device后,已经可以见到一个SPI3设备。

        第7步,编写挂载SD卡的代码。

        在软件工程的bsp目录下创建一个bsp_sd_card.c文件,在文件中输入以下代码:

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2024-01-03     hubo       the first version
 */
/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author            Notes
 * 2018-8-23      SummerGift        the first version
 */

#include <rtthread.h>
#include <rtdevice.h>
#include "drv_spi.h"
#include "spi_msd.h"
#include <dfs_fs.h>
#include "drv_spi.h"

#define DBG_TAG "sdcard"
#define DBG_LVL DBG_ERROR
#include <rtdbg.h>

#ifdef BSP_USING_TF_CARD

static int rt_hw_spi3_tfcard(void)
{
    rt_hw_spi_device_attach("spi3", "spi30", GPIOC, GPIO_PIN_9);
    return msd_init("sd0", "spi30");
}
INIT_COMPONENT_EXPORT(rt_hw_spi3_tfcard);

#ifdef RT_USING_FINSH
#include <finsh.h>

#ifdef FINSH_USING_MSH

int sdcard_mount(void)
{

#ifdef BSP_USING_TF_CARD
    /* 挂载 TF 卡中的文件系统,参数 elm 表示挂载的文件系统类型为 elm-fat 文件系统*/
    if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
    {
        LOG_I("Filesystem initialized!");
    }
    else
    {
        LOG_E("Failed to initialize filesystem!");
    }
#endif /*BSP_USING_TF_CARD*/
    return 0;
}
MSH_CMD_EXPORT(sdcard_mount, sdcard_mount);

#endif
#endif
#endif /*BSP_USING_TF_CARD*/

        打开board.h文件,添加一个宏用于打开SD卡:

                #define BSP_USING_TF_CARD

        第8步,编译代码,下载运行。   

        首先给开发板断电,然后插入一张格式化成FAT32的SD卡,在卡上放置一些文件。  

        运行代码后,从PC启动Putty进入MSH界面,运行命令:help后,已经可见sdcard_mount命令,然后运行以下命令:

                sdcard_mount  

                ls

        查看运行结果:

         已经可以看到SD卡上的一个文件。

        至此,挂载SD卡的过程就全部完成了。

  • 20
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值