SDIO
官方已经提供了详细的SDIO驱动,可以直接拿来使用,但是不能支持大于4GB的卡, file:stm324xg_eval_sdio_sd.c(version V1.0.2)
修改SD_Error SD_GetCardInfo(SD_CardInfo *cardinfo)函数
cardinfo->CardCapacity = (cardinfo->SD_csd.DeviceSize + 1) * 512 * 1024;
变成下面的句子
cardinfo->CardCapacity = ((uint64_t)cardinfo->SD_csd.DeviceSize + 1) * 512 * 1024;
因为SD_csd.DeviceSize是32位整型变量,
然后需要将
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;
中的CardCapacity由uint32_t变为uint64_t
我的一张8GB的卡在修改前后的情况:
fatfs文件系统http://elm-chan.org/fsw/ff/00index_e.html
FATFS fs;
FRESULT res;
DIR dirs;
FILINFO finfo;
disk_initialize (0);//初始化硬件
res=f_mount(0, &fs);//挂载文件系统
res=f_opendir(&dirs, "0:/");//打开根目录
res=f_readdir(&dirs, &finfo);//读取目录
判断目录是否读取完
while((f_readdir(&dirs, &finfo) == FR_OK )&& finfo.fname[0])