【学习STM32F4】第五天

来源:互联网 发布:老电视能看网络电视吗 编辑:程序博客网 时间:2024/05/22 11:51

                              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;

中的CardCapacityuint32_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])

 

 

 

原创粉丝点击