【學習STM32F4】第五天

                              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])

 

 

 

發佈了29 篇原創文章 · 獲贊 1 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章