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

挂载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 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真