OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4888|回复: 3

F401 HAL库SD卡使用SPI方式读写

[复制链接]

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2016-11-19
在线时间
31 小时
发表于 2022-10-18 10:18:31 | 显示全部楼层 |阅读模式
最近在用F401CCU6的板子做SD卡,SD卡使用F103板子测试过可以正常读写,移植到F401上面之后就移植卡在“stat = disk.drv[pdrv]->disk_initialize(disk.lun[pdrv]);”出不来,初始化成功,挂载出不来,不知道哪里的问题,各位大佬帮忙帮忙看下是代码需要修改哪里还是哪里的问题,谢谢!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2016-11-19
在线时间
31 小时
 楼主| 发表于 2022-10-18 10:23:46 | 显示全部楼层
  1. void Get_SDCard_Capacity(void)
  2. {
  3.         FRESULT result;
  4.         FATFS FS;
  5.         FATFS *fs;
  6.         DWORD fre_clust,AvailableSize,UsedSize;  
  7.         uint16_t TotalSpace;
  8.         uint8_t res;
  9.        
  10.         res = SD_init();                //SD卡初始化
  11.         printf ("SD_TYPE:%d \n",SD_TYPE);
  12.         if(res == 1)
  13.         {
  14.                 printf("SD卡初始化失败! \r\n");               
  15.         }
  16.         else
  17.         {
  18.                 printf("SD卡初始化成功! \r\n");               
  19.         }
  20.        
  21.         /* 挂载 */
  22.         res=f_mount(&FS,"0:",1);                //挂载
  23.         if (res != FR_OK)
  24.         {
  25.                 printf("FileSystem Mounted Failed (%d)\r\n", result);
  26.         }

  27.         res = f_getfree("0:", &fre_clust, &fs);  /* 根目录 */
  28.         if ( res == FR_OK )
  29.         {
  30.                 TotalSpace=(uint16_t)(((fs->n_fatent - 2) * fs->csize ) / 2 /1024);
  31.                 AvailableSize=(uint16_t)((fre_clust * fs->csize) / 2 /1024);
  32.                 UsedSize=TotalSpace-AvailableSize;              
  33.                 /* Print free space in unit of MB (assuming 512 bytes/sector) */
  34.                 printf("\r\n%d MB total drive space.\r\n""%d MB available.\r\n""%d MB  used.\r\n",TotalSpace, AvailableSize,UsedSize);
  35.         }
  36.         else
  37.         {
  38.                 printf("Get SDCard Capacity Failed (%d)\r\n", result);
  39.         }               
  40. }
  41. 初始化输出成功,SD_TYPE:4
  42. res=f_mount(&FS,"0:",1);                //挂载    出不来
复制代码
回复 支持 反对

使用道具 举报

7

主题

480

帖子

0

精华

高级会员

Rank: 4

积分
780
金钱
780
注册时间
2021-4-15
在线时间
305 小时
发表于 2022-10-18 17:41:37 | 显示全部楼层
驱动一般不用改!要修改 SPI接口的初始化 有一点点区别,其他的应该不需要改的,用逻辑分析仪抓一下看看
日常敲键--头秃一片
回复 支持 反对

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
242
金钱
242
注册时间
2016-11-19
在线时间
31 小时
 楼主| 发表于 2022-10-21 17:58:35 | 显示全部楼层
日渐秃兀 发表于 2022-10-18 17:41
驱动一般不用改!要修改 SPI接口的初始化 有一点点区别,其他的应该不需要改的,用逻辑分析仪抓一下看看

用原子的例程移植成功了,可能是之前的diskco文件里面配置不一样
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 10:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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