刚好遇到同样的问题,现在把解决方法分享给大家。
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;
即可
数据长度问题,超过32位后最高位溢出,所以容量只剩3个多G
格式化有问题。你需要电脑查看TF卡吗?在格式化函数那里修改一下。去掉EXPAND FAT SIZE,扩展FAT尺寸只能是消耗容量。
我也跟你一样的问题,不知道你解决了没有?
量产