RT-Thread Studio驱动SD卡

  • 前言
  • 一、创建基本工程
    • 1、创建Bootloader
    • 2、创建项目工程
  • 二、配置RT-Thread Settings
  • 三、代码分析
  • 四、效果验证
  • 总结

前言

硬件平台:RT-Thread ART-Pi STM32H750XBH6开发板 H750开发板
开发软件:RT-Thread Studio
相关组件:elm FatFs虚拟文件系统、SPI驱动、SD设备驱动和SDIO
参考博客:RT-Thread Studio使用SDIO驱动SD卡挂载文件系统
官方资料:虚拟文件系统
实验目的:使用开发板上的SD卡接口,实现对SD卡数据的读和写。


一、创建基本工程

1、创建Bootloader

 打开RT-Thread Studio,按 “文件 -> 新建 -> RT-Thread项目” 路径新建Bootloader工程。
具体配置如下所示:

 点击完成后即可得到一个Bootloader程序。

  • 打开该程序点击编译
  • 编译完成后再带点击下载。、

 BootLoader主要用于使用外挂Falsh存储代码时 初始化外挂的Flash、映射物理地址及地址跳转。ART - Pi使用QSPI连接8M的W25Q64。

2、创建项目工程

 打开RT-Thread Studio,按 “文件 -> 新建 -> RT-Thread项目” 路径新建led工程。
具体配置如下所示:

  点击完成后即可得到一个led闪烁程序。

  • 打开该程序点击编译
  • 编译完成后再带点击下载。、
  • 效果演示:


二、配置RT-Thread Settings

 双击左侧项目资源管理器下led工程的“RT-Thread Settings”打开可视化配置。

 打开后如下图所示。

 鼠标左键单击打开Fatfs、SDIO组件,Ctrl + s保存。

 直接编译发现有报错,没有打开BSP_USING_SDIOx。

 既然没打开,那就打开它就好了。SDIO属于芯片外围硬件,所以应打开硬件配置。

 使能SDIO,选择SDIO1。

 为什么是SDIO1而不是SDIO2呢?看开发板的原理图就能确定,SD卡接入了SDIO1中。

 重新保存配置并编译,发现没有报错。但是到这里只是成功配置组件,要实现对SD卡数据的读写还需要先挂载文件系统。

 因为sd卡使用的dfs属于部件,因此使用”部件自动初始化“函数对其完成注册。在终端输入”list_device“指令可以查看已经挂载的设备。

 挂载文件系统代码:

#include "dfs_fs.h"int sd_init(void)
{rt_thread_mdelay(100);//这段延时必须加上,系统上电过程中存在延时,否则会出现先挂载后注册块设备sd0的情况//mkfs("elm","sd0");//挂在前需格式化if(dfs_mount("sd0","/","elm",0,0)==0) //挂载文件系统,参数:块设备名称、挂载目录、文件系统类型、读写标志、私有数据0{rt_kprintf("dfs mount success\r\n");}else{rt_kprintf("dfs mount failed\r\n");}return 0;
}
INIT_COMPONENT_EXPORT(sd_init);

 读写SD卡数据

 读写数据代码:

#include "dfs_posix.h"void SD_RW(void)
{char wbuf[] = "hello world!", rbuf[30] = {0};int rsize = 0;int fd = 0;                                 //文件描述符//写入数据fd = open("/a.txt", O_WRONLY | O_CREAT);    //打开文件,如果不存在就新建一个if(fd>0){write(fd, wbuf, sizeof(wbuf));close(fd);rt_kprintf("write success\r\n");}//读取数据fd = open("/a.txt", O_RDONLY);              //使用只读格式打开if(fd>0){rsize = read(fd, rbuf, 100);close(fd);if(rsize>0){rt_kprintf("READ(%d): %s",rsize,rbuf);}}
}

 (tips:如果要将数据追加在文件末尾而非覆盖数据,打开文件时按位或上 O_APPEND 参数)


三、代码分析

 因为选用的硬件平台是RT-Thread官方发布的,所以组件包对硬件已经做好了兼容无需自己去配置板上资源。
 若是使用其他硬件平台,可在 ”HAL_SD_MspInit“ 中配置具体使用到的GPIO和模式配置。(可使用CubeMx配置后替换)

 ART-Pi SDMMC1的IO分配:


四、效果验证

  • 插到电脑上直接看

  • 在终端输入”cat + 文件名“


总结

 当前只是实现了最基本SD卡数据的读和写,后续再继续研究文件目录的相关操作并把log存到SD卡中。

RT-Thread Studio驱动SD卡相关推荐

  1. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  2. xpt 2046的触摸屏 rt thread设备驱动框架

    1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...

  3. 模拟SPI驱动SD卡

    使用新唐的SDIO例子修改为SDH1始终驱动不了SD卡,所以使用模拟的方式驱动SD卡 头文件: #ifndef __SD_H #define __SD_H#include "NuMicro. ...

  4. stm32驱动sd卡(1)

    Stm32驱动sd卡知识总结(1) 1.Stm32支持SDIO接口,可以用来接入一张不超过32G的SD卡 2.CID寄存器长度为128bit,用来标记SD卡的全球唯一身份识别号 3.支持单线和四线传输 ...

  5. RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程

    (1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...

  6. RT Thread Studio 配置IIC并读取AS5600角度

    RT Thread Studio 配置IIC并读取AS5600角度 一.RT Thread Studio 配置IIC 1.在RT Thread Seting 中开启IIC功能 并保存 一定要保存才能更 ...

  7. STM32F407ZGT6使用SDIO方式驱动SD卡

    原文地址::STM32F407ZGT6使用SDIO方式驱动SD卡 - JavaShuo 相关文章 1.[STM32] STM32官方标准固件库概述----[STM32] STM32官方标准固件库概述_ ...

  8. STM32——SPI驱动SD卡

    文末有工程链接(FATFS文件系统也移植了) VCC:5V GND:GND MISO:PA6 MOSI:PA7 SCK:PA5 CS:PA4 /*外设驱动*/ /*.c*/ /*以下是SPI1口初始化 ...

  9. android studio关于sd卡的问题

    android studio在写音乐播放器的时候,sd卡中已经存储音乐,那么下次再启动程序时,要不要再存储一次?

最新文章

  1. JavaScript-学习一全局变量
  2. R多变量正态性检验(Multivariate Normality Tests)
  3. 用java写一个折半查找_用Java写一个折半查找。
  4. Unity 2017 Game Optimization 读书笔记 Scripting Strategies Part 5
  5. 使用 Visual Studio 编译 wget 为库文件
  6. go linux 源码编译环境,修改并编译golang源码
  7. Java 设计模式 Day3 之面向抽象原则:什么是面向抽象编程?面向抽象编程如何应用?
  8. js 1000+简写为K,10000+简写为W
  9. DB2数据库安全的12条军规
  10. Apache Solrj EmbeddedSolrServer使用
  11. VS、C#配置R语言开发环境
  12. 基地保留节目--塔防游戏
  13. html5shiv_深入探讨:HTML5 Shiv和Polyfills
  14. python selenium清除缓存_SeleniumPython:无法清除chrome浏览器缓存
  15. 计算机管理的事件id,事件查看器7035是什么意思_windows事件查看器常见ID代码含义详解...
  16. 最新IOS开发学习资料整理(进阶必备)
  17. 我的世界服务器怎么做无限的弓,我的世界无限弓箭怎么做?
  18. ios 故事版 设定UIImageRenderingMode的方式
  19. 硬件设计过程FPGA时钟引脚注意事项
  20. 七牛云发送短信验证码

热门文章

  1. template模板的写法
  2. 磁盘分区MBR和GPT
  3. matlab 异步电机发电,[原创]Matlab双馈异步风力发电机建模s函数
  4. oracle获取系统时间上一个月
  5. android bitmap 色温,3A之自动白平衡(AWB)篇
  6. qq云输入法也支持五笔了,太适合我了,特别是在ubuntu下有时候输入法
  7. centos8挂载exfat格式的u盘,u盘ntfs和exfat
  8. Ubuntu 14.04 安装 QQ2013
  9. 机器学习两周学习成果
  10. UCenter中上传头像功能的剥离