久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: [零基礎學習STM32]第十三講:SDIO實驗—讀取SD卡信息 [打印本頁]

作者: kkhkbb    時間: 2018-4-19 11:12
標題: [零基礎學習STM32]第十三講:SDIO實驗—讀取SD卡信息
一、概述
    1.SDIO的定義
       SDIO在SD標準上定義了一種外設接口。目前,SDIO主要有兩類應用——可移動和不可移動。可移動設備作為Palm和Windows Mobile的擴展設備,用來增加藍牙、照相機、GPS和802.11b功能。不可移動設備遵循相同的電氣標準,但不要求符合物理標準。某些手機內包含通過SDIO連接CPU的802.11芯片。此舉將“珍貴”的I/ O管腳資源用于更重要的功能。
       藍牙、照相機、GPS802.11b設備有專為它們定義的應用規范。這些應用規范與為PCIUSB設備定義的類規范很相像。它們允許任何宿主設備與任意外設通話,只要它們都支持應用規范。
      SDIOSD卡規范間的一個重要區別是增加了低速標準。SDIO卡只需要SPI1SD傳輸模式。低速卡的目標應用是以最小的硬件開支支持低速I/ O能力。低速卡支持類似調制解調器、條碼掃描儀和GPS接受器等應用。對組合(存儲器+ SDIO)而言,全速和4位操作對卡內存儲器和SDIO部分都是強制要求的。
    2.SDIO的功能
       轉換設備的能力 SD標準有很大的彈性,比方說,SD插槽不僅能插入內存卡。SDIO卡是一種界面,即由使用標準SD卡插槽來擴展設備的功能,讓設備擁有新的功能。
      新功能列舉如下:GPS 相機 Wi-Fi 調頻廣播 以太網 條形碼讀卡器 藍牙; 將與SD memory card同樣的終端形狀的卡槽利用于擴張卡的規格。把對應SDIO卡槽(插口)稱為SDIO卡,擴張卡稱為SDIO卡。
      是為了在個人電腦和PDA等中添加功能而使用SD卡的規格,由于可以使用比PC卡形狀還小的卡和插槽,相比于筆記本電腦,更多采用于小巧的PDA中。主要銷售的產品有,面向PDAPHS通訊卡和藍牙通訊卡,無線網卡,小型數碼相機等。
      為了使用SDIO,必須要有對應的插槽,數碼相機memory card的專用縫兒插槽不對應SDIO卡。SDIO插槽中能夠插入SD memory card來讀寫。
      SD/SDIO MMC卡主機接口(SDIO)提供APB2外設總線與多媒體卡(MMC)、SD卡、SDIO卡以及CE-ATA設備之間的接口。
   3.SDIO具有如下主要特性:
   4.SD卡識別過程:
       多媒體卡和SD卡的卡識別過程有所不同。對于多媒體,識別過程是以時鐘速率開始。SDIO_CMD線輸出驅動器是開樓引腳,在此識別過程中允許并行的卡操作。對準過程以如下方式完成:
(1)激活總線。
(2)SDIO卡主機廣播SEND_OP_COND(CMD1)以接收運行條件。
(3)卡以其運行條件寄存器的內容進行響應。
(4)不兼容的卡將被置于無效狀態。
(5)SDIO卡主機向所有有效廣播ALL_SEND_CID(CMD2)。
(6)這些卡將發回其唯一的卡識別號(CID)并進入識別狀態。
(7)SDIO卡主機向某個地址的有效卡發出SET_RELATIVE_ADDR(CMD3)。這一新地址稱為相對卡地址(RCA);它比CID更短,可對卡進行尋址。分配的卡變為待機狀態。SDIO卡主機可以重新發出此命令以更改RCA。卡的RCA是最后分配的值。
(8)SDIO卡主機對所有有效卡重復步驟5到7。
二、硬件電路

                  圖13_0 SD卡槽電路圖
三、實驗原理
      STM32F407上帶有SDIO控制器,iCore3核心板上將SDIO連接到TF卡座上。本實驗將Micro SD卡插入TF卡座上即可。硬件連接示意圖如下:

                 圖13_1  實驗原理圖
四、源代碼
1.     主函數
  1. /*
  2. * Name                : main
  3. * Description         : ---
  4. * Author              : ysloveivy.
  5. *
  6. * History
  7. * --------------------
  8. * Rev                 : 0.00
  9. * Date                : 12/01/2015
  10. *  
  11. * create.
  12. * --------------------
  13. */int main(void)
  14. {
  15.         int i;
  16.         led.initialize();
  17.         usart4.initialize(115200);

  18.         usart4.printf("\x0c");                        //清屏        
  19.         usart4.printf("\033[1;32;40m");             //設置字體終端為綠色
  20.         usart4.printf("\r\n\r\nhello! I am iCore3!\r\n\r\n\r\n");
  21.         //判斷SD卡是否初始化
  22.         if(SD_Init() != 0){
  23.                 usart4.printf("SD ERROR!\r\n");
  24.                 while(1){
  25.                         for(i = 0;i < 10000000;i++);
  26.                         LED_RED_ON;
  27.                         for(i = 0;i < 10000000;i++);
  28.                         LED_RED_OFF;
  29.                 }
  30.         }
  31. //輸出SD卡的類型
  32. switch(SDCardInfo.CardType){
  33.         case SDIO_STD_CAPACITY_SD_CARD_V1_1:
  34.           usart4.printf("SDCardType\t\t:SDIO_STD_CAPACITY_SD_CARD_V1_1\r\n");
  35.                         break;
  36. case SDIO_STD_CAPACITY_SD_CARD_V2_0:
  37.         usart4.printf("SDCardType\t\t:SDIO_STD_CAPACITY_SD_CARD_V2_0\r\n");
  38.                         break;
  39. case SDIO_HIGH_CAPACITY_SD_CARD:
  40.                 usart4.printf("SDCardType\t\t:SDIO_HIGH_CAPACITY_SD_CARD\r\n");
  41.                         break;
  42.         case SDIO_MULTIMEDIA_CARD:
  43.                 usart4.printf("SD CardType\t:SDIO_MULTIMEDIA_CARD\r\n");
  44.                         break;
  45.         }
  46. //輸出SD卡的參數
  47.         usart4.printf("SD CardCapacity\t\t: %dMB\r\n",(unsigned long int)(SDCardInfo.CardCapacity >> 20));
  48.         usart4.printf("SDCardBlockSize\t: %dByte\r\n",SDCardInfo.CardBlockSize);
  49. usart4.printf("SD RCA \t\t\t: %d\r\n",SDCardInfo.RCA);
  50.         usart4.printf("SDManufacturerID\t: %d\r\n",SDCardInfo.SD_cid.ManufacturerID);
  51.         while(1){
  52.                         for(i = 0;i < 10000000;i++);
  53.                         LED_GREEN_ON;
  54.                         for(i = 0;i < 10000000;i++);
  55.                         LED_GREEN_OFF;
  56.         }
  57. }
復制代碼
2.SDIO配置結構體
  1.   SDIO_InitStructure.SDIO_ClockDiv = SDIO_TRANSFER_CLK_DIV + 2;
  2.   SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising;
  3.   SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable;
  4.   SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable;
  5.   SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_1b;
  6.   SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable;
  7.   SDIO_Init(&SDIO_InitStructure);
復制代碼
3.SD卡初始化程序
  1. SD_Error SD_Init(void)
  2. {
  3.   __IO SD_Error errorstatus = SD_OK;

  4. NVIC_InitTypeDef NVIC_InitStructure;

  5. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  6. // SDIO Interrupt ENABLE
  7. NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
  8. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  9. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  10. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  11. NVIC_Init(&NVIC_InitStructure);
  12. // DMA2 STREAMx Interrupt ENABLE
  13. NVIC_InitStructure.NVIC_IRQChannel = SD_SDIO_DMA_IRQn;
  14. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  15. NVIC_Init(&NVIC_InitStructure);
  16.   /* SDIO Peripheral Low Level Init */
  17.   SD_LowLevel_Init();
  18.   SDIO_DeInit();
  19.   errorstatus = SD_PowerON();
  20.   if (errorstatus != SD_OK)
  21.   {
  22.     /*!< CMD Response TimeOut (wait for CMDSENT flag) */
  23.     return(errorstatus);
  24.   }
  25.   errorstatus = SD_InitializeCards();
  26.   if (errorstatus != SD_OK)
  27.   {
  28.     /*!< CMD Response TimeOut (wait for CMDSENT flag) */
  29.     return(errorstatus);
  30.   }
復制代碼
五、實驗現象
      在終端顯示屏上可以看到Micro SD卡的信息,如下圖:

               圖13_2  實驗現象顯示圖
六 、代碼包下載
       網盤:http://pan.baidu.com/s/1hqM787E

iCore3_12_TIMER.rar

851.49 KB, 下載次數: 13, 下載積分: 黑幣 -5






歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本不卡一区二区三区在线观看 | 国产欧美精品一区 | 免费艹逼视频 | 国产精品99久久久久久久vr | 久久网亚洲 | 精品久久1| 精品国产乱码久久久 | 一区二区精品 | 欧美二区三区 | 亚洲男人天堂 | 亚洲精品久久久 | 亚洲日韩中文字幕一区 | 欧美精品久久 | 国产精品福利网站 | 女人毛片a毛片久久人人 | 国产精品日韩欧美一区二区三区 | 亚洲精品在线视频 | 久久伊人一区二区 | 一级毛片免费看 | 欧美在线日韩 | 青青草在线播放 | 国产一区二区 | 国产精品伦理一区 | 国产成人在线视频播放 | 日本一区二区视频 | 国产精品一区二区三区在线 | 91精品国产高清久久久久久久久 | 久久久久一区二区 | 黄色片在线 | 久久最新 | 2020亚洲天堂 | 亚洲精品乱码久久久久久9色 | 波多野结衣精品 | 6080yy精品一区二区三区 | 久久久久久久久久久久亚洲 | 美女黄网站视频免费 | 国产亚洲精品精品国产亚洲综合 | 911精品国产 | 蜜臀久久99精品久久久久久宅男 | 毛片视频免费 | 2020亚洲天堂|