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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4887|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[零基礎(chǔ)學(xué)習(xí)STM32]第十三講:SDIO實(shí)驗(yàn)—讀取SD卡信息

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:278743 發(fā)表于 2018-4-19 11:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
一、概述
    1.SDIO的定義
       SDIO在SD標(biāo)準(zhǔn)上定義了一種外設(shè)接口。目前,SDIO主要有兩類應(yīng)用——可移動(dòng)和不可移動(dòng)。可移動(dòng)設(shè)備作為Palm和Windows Mobile的擴(kuò)展設(shè)備,用來(lái)增加藍(lán)牙、照相機(jī)、GPS和802.11b功能。不可移動(dòng)設(shè)備遵循相同的電氣標(biāo)準(zhǔn),但不要求符合物理標(biāo)準(zhǔn)。某些手機(jī)內(nèi)包含通過(guò)SDIO連接CPU的802.11芯片。此舉將“珍貴”的I/ O管腳資源用于更重要的功能。
       藍(lán)牙、照相機(jī)、GPS802.11b設(shè)備有專為它們定義的應(yīng)用規(guī)范。這些應(yīng)用規(guī)范與為PCIUSB設(shè)備定義的類規(guī)范很相像。它們?cè)试S任何宿主設(shè)備與任意外設(shè)通話,只要它們都支持應(yīng)用規(guī)范。
      SDIOSD卡規(guī)范間的一個(gè)重要區(qū)別是增加了低速標(biāo)準(zhǔn)。SDIO卡只需要SPI1SD傳輸模式。低速卡的目標(biāo)應(yīng)用是以最小的硬件開支支持低速I/ O能力。低速卡支持類似調(diào)制解調(diào)器、條碼掃描儀和GPS接受器等應(yīng)用。對(duì)組合(存儲(chǔ)器+ SDIO)而言,全速和4位操作對(duì)卡內(nèi)存儲(chǔ)器和SDIO部分都是強(qiáng)制要求的。
    2.SDIO的功能
       轉(zhuǎn)換設(shè)備的能力 SD標(biāo)準(zhǔn)有很大的彈性,比方說(shuō),SD插槽不僅能插入內(nèi)存卡。SDIO卡是一種界面,即由使用標(biāo)準(zhǔn)SD卡插槽來(lái)擴(kuò)展設(shè)備的功能,讓設(shè)備擁有新的功能。
      新功能列舉如下:GPS 相機(jī) Wi-Fi 調(diào)頻廣播 以太網(wǎng) 條形碼讀卡器 藍(lán)牙; 將與SD memory card同樣的終端形狀的卡槽利用于擴(kuò)張卡的規(guī)格。把對(duì)應(yīng)SDIO卡槽(插口)稱為SDIO卡,擴(kuò)張卡稱為SDIO卡。
      是為了在個(gè)人電腦和PDA等中添加功能而使用SD卡的規(guī)格,由于可以使用比PC卡形狀還小的卡和插槽,相比于筆記本電腦,更多采用于小巧的PDA中。主要銷售的產(chǎn)品有,面向PDAPHS通訊卡和藍(lán)牙通訊卡,無(wú)線網(wǎng)卡,小型數(shù)碼相機(jī)等。
      為了使用SDIO,必須要有對(duì)應(yīng)的插槽,數(shù)碼相機(jī)memory card的專用縫兒插槽不對(duì)應(yīng)SDIO卡。SDIO插槽中能夠插入SD memory card來(lái)讀寫。
      SD/SDIO MMC卡主機(jī)接口(SDIO)提供APB2外設(shè)總線與多媒體卡(MMC)、SD卡、SDIO卡以及CE-ATA設(shè)備之間的接口。
   3.SDIO具有如下主要特性:
  •      完全兼容多媒體卡系統(tǒng)規(guī)范版本4.2。卡支持三種不同數(shù)據(jù)總線模式:1位(默認(rèn))、4位和8位。
  •      完全兼容先前版本的多媒體卡(向前兼容性)。
  •      完全兼容SD存儲(chǔ)卡規(guī)范版本2.0。
  •      完全兼容SDI/O卡規(guī)范版本2.0:卡支持兩種不同數(shù)據(jù)總線模式:1位(默認(rèn))和4位。
  •      完全支持CE-ATA功能(完全符合CE-ATA數(shù)字協(xié)議版本1.1)。
  •      對(duì)于8位模式,數(shù)據(jù)傳輸高達(dá)48MHz。
  •      數(shù)據(jù)和命令輸出使能信號(hào),控制外部雙向驅(qū)動(dòng)程序。

   4.SD卡識(shí)別過(guò)程:
       多媒體卡和SD卡的卡識(shí)別過(guò)程有所不同。對(duì)于多媒體,識(shí)別過(guò)程是以時(shí)鐘速率開始。SDIO_CMD線輸出驅(qū)動(dòng)器是開樓引腳,在此識(shí)別過(guò)程中允許并行的卡操作。對(duì)準(zhǔn)過(guò)程以如下方式完成:
(1)激活總線。
(2)SDIO卡主機(jī)廣播SEND_OP_COND(CMD1)以接收運(yùn)行條件。
(3)卡以其運(yùn)行條件寄存器的內(nèi)容進(jìn)行響應(yīng)。
(4)不兼容的卡將被置于無(wú)效狀態(tài)。
(5)SDIO卡主機(jī)向所有有效廣播ALL_SEND_CID(CMD2)。
(6)這些卡將發(fā)回其唯一的卡識(shí)別號(hào)(CID)并進(jìn)入識(shí)別狀態(tài)。
(7)SDIO卡主機(jī)向某個(gè)地址的有效卡發(fā)出SET_RELATIVE_ADDR(CMD3)。這一新地址稱為相對(duì)卡地址(RCA);它比CID更短,可對(duì)卡進(jìn)行尋址。分配的卡變?yōu)榇龣C(jī)狀態(tài)。SDIO卡主機(jī)可以重新發(fā)出此命令以更改RCA。卡的RCA是最后分配的值。
(8)SDIO卡主機(jī)對(duì)所有有效卡重復(fù)步驟5到7。
二、硬件電路

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

                 圖13_1  實(shí)驗(yàn)原理圖
四、源代碼
1.     主函數(shù)
  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");             //設(shè)置字體終端為綠色
  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卡的參數(shù)
  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. }
復(fù)制代碼
2.SDIO配置結(jié)構(gòu)體
  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);
復(fù)制代碼
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.   }
復(fù)制代碼
五、實(shí)驗(yàn)現(xiàn)象
      在終端顯示屏上可以看到Micro SD卡的信息,如下圖:

               圖13_2  實(shí)驗(yàn)現(xiàn)象顯示圖
六 、代碼包下載
       網(wǎng)盤:http://pan.baidu.com/s/1hqM787E

iCore3_12_TIMER.rar

851.49 KB, 下載次數(shù): 13, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久草视频网站 | 涩涩视频网站在线观看 | 黄色精品 | 不卡视频在线 | 天堂一区在线 | 中文字幕免费视频 | 九九热这里只有精品6 | 亚洲一区二区三区高清 | 懂色av一区二区三区在线播放 | 四虎影院新地址 | 国产精品亚洲第一区在线暖暖韩国 | 久久国产精品一区二区三区 | 欧美日韩一区精品 | av网址在线| 综合久久网 | 美女久久| 久久久免费 | 狠狠爱网址 | 精品久久久久一区二区国产 | 久久久91精品国产一区二区三区 | 欧美二级| 91精品国产乱码久久久久久久久 | 欧美五月婷婷 | 亚洲视频一区在线观看 | 中文字幕四虎 | 国产一区二区三区视频 | 亚洲人成人一区二区在线观看 | 免费看一级毛片 | 影音先锋男 | 欧美午夜精品久久久久久浪潮 | 国产99视频精品免费视频7 | 国产成人精品一区二区三区在线 | 成人精品鲁一区一区二区 | 国产精品久久av | 五月婷婷激情网 | 在线视频国产一区 | jizz在线看片 | 国产精品永久 | 国产精品久久久久久亚洲调教 | 国产精品久久久久久久久久久久久 | 三级av在线|