芯片型号:STM32F427VG

软件版本:Stm32CubeMx 5.6.0

库版本:STM32Cube FW_F4 V1.25.0

配置SDIO:

卡时钟(SDIO_CK ):每个时钟周期在命令和数据线上传输 1 位命令或数据。对于多媒体卡 V3.31 协议,时钟频率可以在 0MHz 至 20MHz 间变化;对于多媒体卡 V4.0/4.2 协议,时钟频率可以在 0MHz 至 48MHz 间变化;对于 SD 或 SD I/O 卡,时钟频率可以在 0MHz 至 25MHz间变化。SDIO适配器时钟( SDIOCLK ):该时钟用于驱动 SDIO 适配器,其频率等于 AHB 总线频率( HCLK ),并用于产生 DIO_CK 时钟。AHB 总线接口时钟( HCLK/2 ):该时钟用于驱动 SDIO 的 AHB 总线接口,其频率为HCLK/2 。前面提到,我们的SD 卡时钟( SDIO_CK ),根据卡的不同,可能有好几个区间,这就涉及到时钟频率的设置, SDIO_CK 与SDIOCLK 的关系为:SDIO_CK=SDIOCLK/(2+CLKDIV)其中,SDIOCLK 为 HCLK ,一般是 72Mhz(F103系列),而 CLKDIV 则是分配系数,可以通过 SDIO的 SDIO_CLKCR 寄存器进行设置(确保 SDIO_CK 不超过卡的最大操作频率)。在SD 卡刚刚初始化的时候,其时钟频率( SDIO_CK )是不能超过 400Khz的,否则可能无法完成初始化。在初始化以后,就可以设置时钟频率到最大了(但不可超过 SD卡的最大操作时钟频率)。注:当配置完发现无法moutSD卡,可以尝试加大CLKDIV值

需要配置DMA,否则后面配置FATFS无法运行,FreeRTOS也强制要求使用DMA

使能SDIO中断,这里的中断优先级默认不是5的,因为我已经配置完FreeRTOS,而FreeRTOS要求优先级从5开始

到这里SDIO就配置完成了

配置FATFS:

Fatfs基本都是使用默认值

到这里就可以先生成工程,测试一下SD卡是否正常,生成工程会有如下警告:

可以忽略的,就是一个SD卡的判断是否有卡插入的引脚配置,我这里硬件不支持,就不配置

生成工程之前还要修改Project Manager->Project->Linker Setting中的最小堆栈大小,堆栈大小根据需求修改,但是太小就会无法挂载SD卡或者读写时失败,基本上默认值都是无法正常运行的

生成工程后,添加如下测试代码:

    // 挂载文件系统    retSD = f_mount(&SDFatFS, SDPath, 1);    if(retSD)    {        printf("mount error : %d ",retSD);        return -1;    }    else    {        printf("mount sucess!!! ");    }    HAL_SD_CardCIDTypeDef CID;    HAL_StatusTypeDef s1 = HAL_SD_GetCardCID(&hsd, &CID);    HAL_SD_CardCSDTypeDef CSD;    HAL_StatusTypeDef s2 = HAL_SD_GetCardCSD(&hsd, &CSD);    HAL_SD_CardStatusTypeDef status;    HAL_StatusTypeDef s3 = HAL_SD_GetCardStatus(&hsd, &status);    HAL_SD_CardInfoTypeDef cardInfo;    HAL_StatusTypeDef s4 = HAL_SD_GetCardInfo(&hsd, &cardInfo);    float fCardSize = 1.0*cardInfo.BlockNbr*cardInfo.BlockSize/1024/1024;    printf("Card Size:%.2f M", fCardSize);

通过配置好的串口可以打印SD卡大小

读写文件的代码这里就不贴上来了

配置FreeRTOS:

基本都是使用默认值,需要增大MINIMAL_STACK_SIZE,这里我使用256,默认值是128,使用默认值会造成f_mount直接卡死在内部

备注:当MINIMAL_STACK_SIZE=128时,通过输出信息,发现卡死在函数osMessageQueueGet里,偶然测试发现在SD_write函数内osMessageQueueGet之前和SD_read函数内osMessageQueueGet之前 添加HAL_Delay(3)后就可以正常运行,不知道为什么会出现这样的现象

配置完成重新生成工程,在StartDefaultTask函数中添加SD卡初始化和读写

cube sdio fatfs 初始化sd卡_Stm32CubeMx配置SDIO+FATFS+FREERTOS相关推荐

  1. cube sdio fatfs 初始化sd卡_SD卡读卡器检测——硬盘检测软件Hard Disk Sentinel Pro介绍

    在本教程中,将介绍如何使用硬盘检测软件Hard Disk Sentinel Pro查看相应的行业标准(微型)SD卡,USB设备的完整状态. 尽管大多数SD / microSD卡不提供状态信息,并且只能 ...

  2. 基于FATFS的SD卡存储

    目录 FATFS介绍 配置流程 SDIO_Init() diskio.c的配置 malloc()与free() 文件操作函数 Simple Demo 注意事项 缓冲队列 FATFS介绍 FAT Fil ...

  3. stm32 SD(SDSC)卡的学习SDIO 模式连接SD卡

    本次的SD卡连接使用的是SDIO模式与之前的SPI模式相对应,都是对stm32 使用SD卡的介绍也为了和后面的FATFS文件系统使用铺垫.就直接上源码,也有看不明白的抢先看上一节的stm32 SD(S ...

  4. SD卡学习(SDIO和SPI模式)

    SD卡学习(SDIO和SPI模式) ** SD卡的操作模式:SD卡模式(SDIO).SPI模式(默认为SD模式). 其中SD卡模式的信号线有:CLK.CMD.DAT0-DAT3,6根线. SPI模式的 ...

  5. STM32CubeMX+SPI+FATFS读写SD卡

    一.软件硬件说明 软件:STM32CubeMX V6.6.1 /KEIL5 V5.29 硬件:正点原子mini开发板,SD卡,通过SPI方式驱动SD卡,用的是SPI1接口 以上内容来源于正点原子min ...

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

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

  7. SD卡 SPI模式操作(1)初始化SD卡

    原文(本人转载):帆登小站-SD卡 SPI模式操作(1)初始化SD卡 作者是初学者,水平有限,本文仅作为个人学习笔记使用,不能保证内容的正确性.部分资料来源于网络,参考了SD卡协议2.0手册等资料,如 ...

  8. stm32 Fatfs 读写SD卡

    源:stm32 Fatfs 读写SD卡 转载于:https://www.cnblogs.com/LittleTiger/p/4864052.html

  9. STM32——SD卡实验(SDIO方式)

    一.SD卡简介 1.什么是SD卡? SD卡(Secure Digital Memory Card)即:安全数码卡.它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛的用 ...

最新文章

  1. 安装openssl-devel
  2. python二进制相加
  3. openresty开发系列30--openresty中使用http模块
  4. 【BZOJ - 1305】dance跳舞(拆点网络流,建图,最大流,残留网络上跑最大流)
  5. 寻找是生命中的另一场迷失
  6. python绘图函数返回_python – Matplotlib返回一个绘图对象
  7. ajax对象的属性和方法
  8. LeetCode 121买卖股票的时机
  9. 英伟达驱动怎么设置显示帧数?
  10. c++基础 STL 第 0 篇:(模板)
  11. SL4A apk 编译生成
  12. mysql字符集校对_MySQL字符集与校对
  13. linux memery dump
  14. 二维图画法入门_手绘的基础(入门)
  15. java显示数据库_java查询数据库中的数据并显示
  16. 无服务器:S3 – S3BucketPermissions –操作不适用于语句中的任何资源
  17. cuda多版本管理和分类、运行时cuda、驱动cuda
  18. 机器人技术与应用笔记
  19. 【附源码】计算机毕业设计JAVA茶店订购管理系统
  20. PhysX SDK 3.2 测试程序一例

热门文章

  1. tornado 学习笔记15 _ServerRequestAdapter分析
  2. 单片机生成随机数的方法总结
  3. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)...
  4. declare handler 声明异常处理的语法
  5. Visual Studio 2010 Express for Windows Phone Key!
  6. 开机时进入 grub rescue>的解决方法
  7. 解决sybase数据库的死锁问题
  8. 关于文件导出(下载)功能不兼容IE浏览器的解决方案
  9. 如何检查Go中是否存在文件?
  10. 如何使用LocalBroadcastManager?