c语言查询sd卡mount位置,STM32F103C8T6 读写SD卡 f_mount()返回错误,求助

在使用正点原子代码进行STM32F103C8T6的SD卡读写时,遇到f_mount()返回FR_DISK_ERR的问题。经过调试发现,问题出现在check_fs()函数中,由于disk_read()返回1导致move_window()失败,进一步跟踪发现SD_ReadDisk()返回127,可能与SPI通信或SD卡命令发送有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本帖最后由 benclee 于 2020-4-24 10:06 编辑

用的正点原子的代码

执行f_mount(fs[0],"0:",1)时返回FR_DISK_ERR

跟进去,res = find_volume(&fs, &path, 0),这里返回1

再跟进去fmt = check_fs(fs, bsect);/* 加载0扇区并检查fat是否是 sfd 引导扇区 */这里返回3

static

BYTE check_fs (        /* 0:FAT boor sector, 1:Valid boor sector but not FAT, 2:Not a boot sector, 3:Disk error */

FATFS* fs,        /* File system object */

DWORD sect        /* Sector# (lba) to check if it is an FAT boot record or not */

)

{

fs->wflag = 0; fs->winsect = 0xFFFFFFFF;        /* Invaidate window */

if (move_window(fs, sect) != FR_OK)                        /* Load boot record */

printf("move_win%d\r\n",(move_window(fs,sect)));//******************************************

return 3;

if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)        /* Check boot record signature (always placed at offset 510 even if the sector size is >512) */

return 2;

if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146)                /* Check "FAT" string */

return 0;

if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146)   &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值