硬汉嵌入式论坛

 找回密码
 立即注册
查看: 894|回复: 2
收起左侧

[FatFs] SD卡挂载问题

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2025-1-16 16:57:36 | 显示全部楼层 |阅读模式
硬件:STM32L431RCT6 ,接线如下


使用配置的CUBEMX:SD 4Bits Wied Bus 使用SDMMC1 DMA收发共用,SDIO时钟频率为32Mhz,2 ,4,8分频都试过。
代码如下:
printf("Micro SD Card Test... \r\n");

  uint8_t status = HAL_SD_Init(&hsd1); /* 初始化 */
  if(status != HAL_OK)
  {
    printf("SD card initialize failed!\n");
  }
  HAL_SD_CardStateTypeDef state = HAL_SD_GetCardState(&hsd1);
  HAL_SD_CardCIDTypeDef SD_CardCID;
  if(state == HAL_SD_CARD_TRANSFER)
  {
    HAL_SD_GetCardCID(&hsd1, &SD_CardCID);
    printf("\nInitialize SD card sucessfully!\r\n");
    printf("\nSD card information\r\n");
    printf("\nCapacity              :%llu\r\n", ((unsigned long long)hsd1.SdCard.BlockSize*hsd1.SdCard.BlockNbr));
    printf("\nBlockSize             :%d\r\n", hsd1.SdCard.BlockSize);
    printf("\nRCA                   :%d\r\n", hsd1.SdCard.RelCardAdd);
    printf("\nCardType              :%d\r\n", hsd1.SdCard.CardType);
    printf("\nManufacturerID        :%d\r\n", SD_CardCID.ManufacturerID);     
  }
  result = f_mount(&fs ,"0:" , 1);    //0:不挂载  1:挂载
  if(result != FR_OK)
  {
    printf("挂载文件系统失败 (%s)\r\n", FR_Table[result]);
  }
  const char* filename = "0:data.csv";
  result = f_open(&file , filename , FA_OPEN_ALWAYS|FA_WRITE); //如果文件存在则打开,如果文件不存在则创建并打开
  if(result != FR_OK)
  {
    printf("打开文件失败 (%s)\r\n", FR_Table[result]);
  }


调试结果如下:

[16:50:46.463]收←◆Micro SD Card Test...

Initialize SD card sucessfully!

SD card information

Capacity              :31266439168

BlockSize             :512

RCA                   :1

CardType              :1

ManufacturerID        :254
挂载文件系统失败 (FR_NOT_READY:物理驱动没有工作)
打开文件失败 (FR_DISK_ERR:底层硬件错误)
写入文件失败 (FR_INVALID_OBJECT:文件或者目录对象无效)
关闭文件失败 (FR_INVALID_OBJECT:文件或者目录对象无效)


即可以读到sd卡信息,但挂载不成功,换过几个sd卡,结果都一样,不知道从哪下手了,

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2025-1-17 07:09:51 | 显示全部楼层
这个是你的底层驱动实现有些问题。CubeMX生成的这个运行有问题的话,下载个STM32CubeL4软件包,里面有FatFS的例子,对比下驱动实现。

然后你的SD卡记得使用SD卡联盟的小软件格式化后再测试
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2025-1-17 08:45:26 | 显示全部楼层
eric2013 发表于 2025-1-17 07:09
这个是你的底层驱动实现有些问题。CubeMX生成的这个运行有问题的话,下载个STM32CubeL4软件包,里面有FatFS ...

好的,谢谢硬汉大佬,我去看看例程的实现方式
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-11 05:19 , Processed in 0.290532 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表