当前位置: 首页 > news >正文

sd卡挂载返回FR_NOT_READY等错误

前言

        本文章主要是例举文件系统挂载sd卡时出现的一下问题总结。本人用的芯片是GDF103系列,最近项目要使用sd进行读取文件,因此查阅了资料进行开发。一开始是使用了SPI方式连接,例程是原子哥的stm32进行改的,但多次调试都是卡死在发送cmd0命令那里,连获取卡信息都没成功,就更不要谈文件系统了。后面重新用sdio进行连线,并且用gd官方的例程进行调试。最终成功获取卡信息并打印,但挂载时一直返回FR_NOT_READY,也就是3号错误。但是我已经能打印卡信息 了,证明初始化是没问题的。我也找了挺多博客,话不多说,下面是链接:

1. 文件系统的FATFS变量是局部或者是全局指针,如果在系统中可能有问题,应该定义为全局变量,挂载时进行取址

fatfs 移植, f_open返回 FR_NOT_ENABLED-OpenEdv-开源电子网


2. 文件系统的ffconf.h头文件挂载数量默认为1个存储器,要同时挂载多个应该修改,并且设立对应的全局变量或者宏定义来调整diskio.c各个函数选项

FATFS 0.13 f_mount(&fs,““,1)挂载失败的原因_mode option 0:do not mount (delayed mount), 1:moun-CSDN博客


3. 挂载时如果失败了,可能是存储介质还没准备好,再次进行挂载即可

FATFS 0.13 f_mount(&fs,““,1)挂载失败的原因_mode option 0:do not mount (delayed mount), 1:moun-CSDN博客


4. 可能是挂载的磁盘大小和扇区数量宏定义设置不对,要根据自己的存储器进行设置

FATFS文件系统异常FR_NOFILESYSTEM_fatfs文件关了重新打开显示无文件系统-CSDN博客

5. 重点,也是本人的最终问题解决:由于初始化后就可以打印卡信息,那么就是连接上了,但是挂载这里没成功,最后发现是文件系统挂载调用的sd卡初始化,返回值是29,在disk_initialize里面判断是如果返回值>=0那么就是错误,而我的初始化返回值是29是ok。所以就搞乌龙了,最后在我的初始化函数里面加一个返回值判断即可。如图:

 diskio.c 文件

sdcard.c文件


总结

      其实在此之前遇到过HardFault_Handler死循环等错误,但是做开发就是这样,永远不可能一帆风顺的完成需求,总会遇到许许多多奇奇怪怪的拦路小妖怪。而发现它,解决它,这个过程就是学习,不过也希望大家都能遇到bug很快将其消灭。最后,送上大佛压阵

//                             _ooOoo_  
//                            o8888888o  
//                              88" . "88  
//                               (| -_- |)  
//                               O\ = /O  
//                         ____/`---'\____  
//                              . ' \\| |// `.  
//                             / \\||| : |||// \  
//                          / _||||| -:- |||||- \  
//                             | | \\\ - /// | |  
//                          | \_| ''\---/'' | |  
//                         \ .-\__ `-` ___/-. /  
//                     ___`. .' /--.--\ `. . __  
//                   ."" '< `.___\_<|>_/___.' >'"".  
//                    | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                   \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖保佑             永无BUG 
//          佛曰:  
//                  写字楼里写字间,写字间里程序员;  
//                  程序人员写程序,又拿程序换酒钱。  
//                  酒醒只在网上坐,酒醉还来网下眠;  
//                  酒醉酒醒日复日,网上网下年复年。  
//                  但愿老死电脑间,不愿鞠躬老板前;  
//                  奔驰宝马贵者趣,公交自行程序员。  
//                  别人笑我忒疯癫,我笑自己命太贱;  
//                  不见满街漂亮妹,哪个归得程序员?
 

http://www.lryc.cn/news/462217.html

相关文章:

  • 推荐一款超级实用的浏览器扩展程序!实时翻译网页,支持多种语言(带私活源码)
  • manjaro kde 24 应该如何设置才能上网(2024-10-13亲测)
  • 2024软件测试面试大全(答案+文档)
  • unity动态批处理
  • faust,一个神奇的 Python 库!
  • electron本地OCR实现
  • RK3588的demo板学习
  • 基于springboot驾校管理系统
  • 关于Vue脚手架
  • MySQL 指定字段排序
  • Mysql—高可用集群MHA
  • MeshGS: Adaptive Mesh-Aligned GaussianSplatting for High-Quality Rendering 论文解读
  • JDK-23与JavaFX的安装
  • LeetCode讲解篇之2266. 统计打字方案数
  • 2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现
  • Vue 3 的不同版本总结
  • 在wpf 中 用mvvm 的方式 绑定 鼠标事件
  • TELEDYNE DALSA相机连接编码器
  • 每天一个数据分析题(五百零八)- 机器学习模型
  • leetcode栈与队列(一)-有效的括号
  • 鸿蒙NEXT开发-知乎评论小案例(基于最新api12稳定版)
  • 重学SpringBoot3-集成Redis(十一)之地理位置数据存储
  • Docker-compose 单节点管理、consul 注册中心、registrator、template
  • 制药企业MES与TMS的数据库改造如何兼顾安全与效率双提升
  • Spring Boot比Spring多哪些注解
  • 985研一学习日记 - 2024.10.17
  • 牛客SQL29详解 计算用户的平均次日留存率
  • Redis --- 第四讲 --- 常用数据结构 --- 其他类型stream、bitmap……。补充内容scan命令。
  • Java多线程--实现跑马小游戏
  • 扫雷(C 语言)