Fatfs文件系统,f_open函数返回值为FR_DISK_ERR解决方法

2023-05-16

最近在操作TF卡,芯片stm32f103c8t6,编译环境KEIL,金士顿32G卡,用Fatfs文件系统向卡中写入数据。

出现的问题:f_open函数返回值为FR_DISK_ERR

FR_DISK_ERR,               /* (1) A hard error occurred in the low level disk I/O layer */

低级磁盘I/O层中发生硬错误

主要原因:重点检查diskio.c文件中的disk_initialize()、disk_status()、disk_read()、disk_write()这几个函数

解决方法总结:

1 改写扇区函数

2 每次写了之后都加一个小延时,等待一段时在查看f_open的返回值

3 单次的传输是不是太大?  传输字节几百的话是没有问题的,现在传输的每次是4000多字节 就会出现这种错误的情况

4 看看频率最多支持多少,从底往上都要看。SDIO有频率,CPU有主频,速度过快也不行啊,你最好折中速度,比如试试2000,再试试1000,或者3000等等。

5 重点检查diskio.c文件中的disk_initialize()、disk_status()、disk_read()、disk_write()这几个函数

6  将 FIL fil; 从函数外拿出,定义为全局变量,即可解决。

7 确保f_mount已经挂载上了,返回值是正确的。确保硬件初始化完成了。

8 每次插入usb都会进行枚举,我们要等到可执行用户程序的时候才进行f_open

9 一开始时候低速,查询卡信息发现是"SD V2HC",然后将主频从400k提高10MBit时候经常出现FR_DISK_ERR,慢慢降低到1.7MBit时候就FR_OK了

10 f_write 一直失败  FR_DISK_ERR,回来发现在 在diskio 的 disk_write 操作里要加上卡的状态等待。对的,根据你这个方法能解决FR_DISK_ERR错误,必须要等到SD卡处于TRANSFER的状态才行

11 FF.C文件,移植时,TF卡程序一些列要配套,我这次解决问题的方法是重新更新了下ff.c   ff.h   diskio.c  diskio.h  文件,问题解决了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fatfs文件系统,f_open函数返回值为FR_DISK_ERR解决方法 的相关文章

随机推荐

  • Mysql5.6安装以及修改默认存储路径

    安装流程 1 获取rpm包 rpm Uvh http dev mysql com get mysql community release el7 5 noarch rpm 2 安装 yum y install mysql community
  • Nacos在derby模式下如何更改密码?

    1 下载管理工具 下载官方管理工具 Apache Derby 10 14 2 0 Release 下载完成后 xff0c 上传至服务器 xff0c 并解压 xff0c 就可以使用 ij 这个客户端连接工具了 2 连接derby 注意 xff
  • 异常:CategoryInfo : SecurityError: (:) [],PSSecurityException + FullyQualifiedErrorId :

    执行yarn install yarn 无法加载文件 C Users Administrator AppData Roaming npm yarn ps1 xff0c 因为在此系统上禁止运行脚本 有关详细信息 xff0c 请参阅 https
  • left join查询优化

    SQL查询优化 LEFT JOIN和INNER JOIN 1 连接了八个数据库表 xff0c 而且全部使用LEFT JOIN xff0c 如下所示 xff1a Resource Resources A LEFT JOIN Resource
  • DB2 修改表字段长度

    ALTER table table alter column column set data type VARCHAR 50 reorg table table
  • maven用命令怎么更新依赖包

    maven mvn clean install e U e详细异常 xff0c U强制更新 mvn archetype generate DgroupId 61 damocles autocredit DartifactId 61 damo
  • db2取前n条记录

    select a from table a where id 61 370 fetch first n rows only
  • 批量执行某个文件夹下所有的 .sql脚本

    copy sql all ren all all sql sqlplus aa bb 64 all 在windows下我用dir b sqlfile gt sql txt 然后用UE的列编辑模式 xff0c 给行头都加上 64 xff0c
  • FreeRTOS-Task

    Task FreeRTOS中Task为调度单位 xff0c 是独立的运行实例 xff0c 具有自己的堆栈空 间 Task通常是无限循环执行 xff0c 不允许以任何方式退出实现函数 xff08 return 语句或者运行结束 xff09 如
  • 面试必看!一线互联网公司技术面试的流程以及注意事项

    企业一般通过几轮技术面试来考察大家的各项能力 xff0c 一般流程如下 一面机试 xff1a 一般会考选择题和编程题二面基础算法面 xff1a 就是基础的算法都是该专栏要讲的三面综合技术面 xff1a 会考察编程语言 xff0c 计算机基础
  • 去哪儿2017校园招聘笔试题

    span class hljs keyword import span java util Scanner span class hljs javadoc filename extension 时间限制 xff1a C C 43 43 语言
  • 日志文件xml

    lt xml version 61 34 1 0 34 encoding 61 34 UTF 8 34 gt lt ConsoleAppender 控制台输出日志 gt lt appender name 61 34 STDOUT 34 cl
  • STM32输出PWM波形错误解析

    一 背景 项目中需要用STM32F407输出4路PWM波形控制两个A4950模块 xff0c 从而驱动2个直流电机 使用TIM1的在PE9 PE11 PE13 PE14上分别产生4路PWM波形 xff0c 前两路 xff08 记作pwm1
  • Kubernetes 1.20:最优秀、美妙、酷的版本

    你填了吗 xff1f 2020年CNCF中国云原生问卷 问卷链接 xff08 https www wjx cn jq 97146486 aspx xff09 作者 xff1a Kubernetes 1 20发布团队 我们很高兴地宣布Kube
  • C++常见问题总结

    C 43 43 问题总结模块 编程之路总是路漫漫其修远兮 xff0c 吾将上下而求索 1 no matching function for call to 借用CSDN某位的文章 xff0c 成功修改错误 大概截图如下 源代码 xff1a
  • 字符串函数strchr 、 strrchr 、strrstr的实现

    include lt stdio h gt include lt stdlib h gt include lt assert h gt char my strchr const char dst char c 由于我们只是查找 xff0c
  • cadence常见问题一

    1 在画元件库时 xff0c 双击编辑一个引脚 xff0c 编辑好了点了OK xff0c 引脚就从左边跑到了右边 xff1f xff1f xff1f 居然不是固定的 xff1f 我在user properties设置下引脚名字可视化 xff
  • keil,stm32,watch窗口,正确的串口数据后面还出现ASCII字符?

    这个问题不知道如何解决 xff0c 串口调试助手数据显示都是准确的 xff0c watch窗口看就不正确 不知道正确数据后面的是什么 xff1f
  • MS5611气压计数据测试报告

    气压计测得气压和温度值为模拟量 xff0c ms5611气压计会自动将模拟量转换成数字量 xff0c 对于不同的精度 xff0c 转换时间也不相同 本测试选用的精度为最高的OSR 61 4096 xff0c 如下表所示 xff0c 转换时间
  • Fatfs文件系统,f_open函数返回值为FR_DISK_ERR解决方法

    最近在操作TF卡 xff0c 芯片stm32f103c8t6 xff0c 编译环境KEIL xff0c 金士顿32G卡 xff0c 用Fatfs文件系统向卡中写入数据 出现的问题 xff1a f open函数返回值为FR DISK ERR