大鼻子JOJO 2023-03-23 11:58 采纳率: 75%
浏览 449
已结题

挂载FatFs时格式化硬盘使用函数f_mkfs出错

stm32 挂载FatFs时格式化硬盘使用函数f_mkfs出错

在f_mkfs之前已调用f_mout函数返回无文件系统正常,但是格式化SD卡时调用f_mkfs返回1,请问一下这可能是什么导致的?

typedef enum {
    FR_OK = 0,                /* (0) Succeeded */
    FR_DISK_ERR,            /* (1) A hard error occurred in the low level disk I/O layer */
    FR_INT_ERR,                /* (2) Assertion failed */
    FR_NOT_READY,            /* (3) The physical drive cannot work */
    FR_NO_FILE,                /* (4) Could not find the file */
    FR_NO_PATH,                /* (5) Could not find the path */
    FR_INVALID_NAME,        /* (6) The path name format is invalid */
    FR_DENIED,                /* (7) Access denied due to prohibited access or directory full */
    FR_EXIST,                /* (8) Access denied due to prohibited access */
    FR_INVALID_OBJECT,        /* (9) The file/directory object is invalid */
    FR_WRITE_PROTECTED,        /* (10) The physical drive is write protected */
    FR_INVALID_DRIVE,        /* (11) The logical drive number is invalid */
    FR_NOT_ENABLED,            /* (12) The volume has no work area */
    FR_NO_FILESYSTEM,        /* (13) There is no valid FAT volume */
    FR_MKFS_ABORTED,        /* (14) The f_mkfs() aborted due to any parameter error */
    FR_TIMEOUT,                /* (15) Could not get a grant to access the volume within defined period */
    FR_LOCKED,                /* (16) The operation is rejected according to the file sharing policy */
    FR_NOT_ENOUGH_CORE,        /* (17) LFN working buffer could not be allocated */
    FR_TOO_MANY_OPEN_FILES,    /* (18) Number of open files > _FS_LOCK */
    FR_INVALID_PARAMETER    /* (19) Given parameter is invalid */
} FRESULT;

按照这个说法应该是底层IO硬件错误,但是前面SD卡初始化已经正常了呀,问题可能出在哪里呢

  • 写回答

2条回答 默认 最新

  • 丘比特惩罚陆 2023-03-23 13:05
    关注

    即使 SD 卡初始化成功,但是在格式化时仍然有可能出现底层 IO 硬件的问题。可能是因为在格式化时需要对 SD 卡进行更复杂的读写操作,而初始化只是简单的读取 SD 卡的信息。因此,即使初始化成功,仍然可能在格式化时遇到底层 IO 硬件的问题。

    除了硬件问题之外,还有一些其它的可能原因,比如使用的 FATFS 版本不兼容或者使用的 SD 卡不支持某些特定的格式化方式等。您可以先检查一下 SD 卡的规格和 FATFS 版本是否兼容,以及格式化时的参数是否正确设置。

    你看看下面这几个你试着来排查:
    1、硬件:错误码 FR_DISK_ERR 表示底层的 IO 硬件存在问题,可能是由于SD卡损坏或其它原因导致的。可以换SD卡或换另一个 SD 卡槽。
    2、参数错误:错误码 FR_MKFS_ABORTED 表示格式化过程被中止了,可能是因为输入参数不正确。检查你的调用 f_mkfs 函数时的参数是否对了没有;
    3、访问权限问题:错误码 FR_DENIED 表示访问权限受到了限制。检查 SD 卡的访问权限是否正确设置。
    4、写保护问题:错误码 FR_WRITE_PROTECTED 表示 SD 卡处于写保护状态,可能需要关闭写保护才能格式化。都试试吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢
  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?
  • ¥15 已知速度v关于位置s的等式,怎么转化为已知位置求速度v的等式
  • ¥15 我有个餐饮系统,用wampserver把环境配置好了,但是后端的网页却进去,是为什么,能不能帮远程一下?
  • ¥15 R运行没有名称为"species"的插槽对于此对象类"SDMmodelCV"