求高手指点:在arm7上跑了个fatfs系统 ,格式化TF卡的时候,8G卡,格成了3个多G?? f_mkfs(0, 0, 4096)

2024-12-02 05:16:15
推荐回答(5个)
回答1:

刚好遇到同样的问题,现在把解决方法分享给大家。

typedef struct
{
  SD_CSD SD_csd;
  SD_CID SD_cid;
 
  uint64_t CardCapacity; /*!< Card Capacity */
  uint32_t CardBlockSize; /*!< Card Block Size */
  uint16_t RCA;
  uint8_t CardType;
} SD_CardInfo;
/*将*/
uint32_t CardCapacity; /*!< Card Capacity */
/*改为*/
uint64_t CardCapacity; /*!< Card Capacity */

/*找到SD_Error SD_GetCardInfo(SD_CardInfo *cardinfo)函数,找到
cardinfo->CardCapacity = (cardinfo->SD_csd.DeviceSize + 1) * 512 * 1024;
并将其注释*/
//cardinfo->CardCapacity = (cardinfo->SD_csd.DeviceSize + 1) * 512 * 1024;
/*然后在其后面添加*/
    cardinfo->CardCapacity = (cardinfo->SD_csd.DeviceSize + 1);
    cardinfo->CardCapacity *= 512;
    cardinfo->CardCapacity *= 1024;

 即可

回答2:

数据长度问题,超过32位后最高位溢出,所以容量只剩3个多G

回答3:

格式化有问题。你需要电脑查看TF卡吗?在格式化函数那里修改一下。去掉EXPAND FAT SIZE,扩展FAT尺寸只能是消耗容量。

回答4:

我也跟你一样的问题,不知道你解决了没有?

回答5:

量产