[STM32F4] STM32F446VET6 SD卡问题

[复制链接]
448|10
我的牙白 发表于 2025-9-24 23:15 | 显示全部楼层 |阅读模式
使用CubeMX和CubeIDE。在sTM32 F446VET开发板上的SD卡遇到问题。
if(f_mount(&SDFatFS, (TCHAR const*)SDPath, 0) != FR_OK)
      {
          Error_Handler();
      }
      else
      {
              /*DWORD fre_clust,tot_sect,fre_sect;
              FATFS *fs;
              f_getfree("1:",&fre_clust,&fs );
              //if (res) die(res);
                 /* Get total sectors and free sectors */
                 //tot_sect = (fs->n_fatent - 2) * fs->csize;
                // fre_sect = fre_clust * fs->csize;

                 /* Print the free space (assuming 512 bytes/sector)
                // printf("%10lu KiB total drive space.\n%10lu KiB available.\n", tot_sect / 2, fre_sect / 2);*/

          res=f_mkfs((TCHAR const*)SDPath, FM_ANY, 0, rtext, sizeof(rtext));
          if(res != FR_OK)
          {
             Error_Handler();
          }
          else
          {
              //Open file for writing (Create)
              if(f_open(&SDFile, "STM32.TXT", FA_CREATE_ALWAYS | FA_WRITE) != FR_OK)
              {
                  Error_Handler();
              }
              else
              {
                  //Write to the text file
                  res = f_write(&SDFile, wtext, strlen((char *)wtext), (void *)&byteswritten);
                  if((byteswritten == 0) || (res != FR_OK))
                  {
                      Error_Handler();
                  }
                  else
                  {
                      f_close(&SDFile);
                  }
              }
          }
      }
      f_mount(&SDFatFS, (TCHAR const*)NULL, 0);
错误出现在f_mkfs()函数,它返回FR_NOT_READY错误。相同的代码在NUCLEO F446RE和STM32F746G-DISCO开发板上测试均正常工作,能够创建并写入文本文件。
使用逻辑分析仪连接SD卡时,时钟信号显示正常,但SDIO_CMD和SDIO_D0引脚完全没有信号。
是否可能和电阻有关?Discovery开发板的SDIO线路上使用了47K或4.7K电阻。
8460668d40afb7324e.png

麻花油条 发表于 2025-9-25 15:27 | 显示全部楼层
添加上拉电阻
classroom 发表于 2025-9-25 16:27 | 显示全部楼层
开发板可能缺少上拉电阻或阻值不当。
cr315 发表于 2025-9-25 17:28 | 显示全部楼层
检查走线长度,SDIO信号线应尽可能短且等长。
duo点 发表于 2025-9-25 17:29 | 显示全部楼层
必要时增加地线隔离高频信号。
elephant00 发表于 2025-9-25 15:29 | 显示全部楼层
电源噪声引起的?
flycamelaaa 发表于 2025-9-25 19:30 | 显示全部楼层
SDIO时钟与引脚配置有误?
jcky001 发表于 2025-9-25 19:51 | 显示全部楼层
在CubeMX中关闭SDIO的DMA模式,改用轮询方式,避免DMA配置错误导致通信失败。
onlycook 发表于 2025-9-25 20:31 | 显示全部楼层
简化测试,直接调用HAL_SD_Init(),绕过FatFS排查问题。
stormwind123 发表于 2025-9-25 21:32 | 显示全部楼层
检查电源,确保SD卡供电稳定
probedog 发表于 2025-9-25 22:32 | 显示全部楼层
可能是开发板PCB布局问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

54

主题

54

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部