第十三節(jié)通過spi讀取sd卡_第1頁
第十三節(jié)通過spi讀取sd卡_第2頁
第十三節(jié)通過spi讀取sd卡_第3頁
第十三節(jié)通過spi讀取sd卡_第4頁
第十三節(jié)通過spi讀取sd卡_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2.2SPISD作者 青,SDSD卡了,它不僅容量可以做到很大(32Gb以上SPI接口,方便移動,有幾種體積的尺寸可供選擇(SDTF卡尺寸,能滿足不同應用的要求。只需要4個IO口,就可以外擴一個最大達32GB以上的外部器,容量選擇尺度很大,更換也很方便,而且方便移動,編程也比較簡單,是單片機大容量外部器的首選。SD卡(SecureDigitalMemoryCard)中文翻譯為安全數(shù)碼卡,是一種基于半導體快閃器的新一代設備,它被廣泛地于便攜式裝置上使用,例如數(shù)碼相機、個人數(shù)碼助理(PDA)和多器等。Sd卡的通口這里采用的是SPI,SPI接口的使SPISD卡,從軟硬件兩個方面來學SD_SCK:sd卡的時鐘管腳SD_DIN:sd卡的spi輸入管腳。SD_OUT:sdspi輸出管腳。intmain{ //LCD_Clear(ORANGE);//POINT_COLORBLACKBACK_COLOR //Status=SD_Init();

SD { LCD_ShowString(20,20,"SD_InitisStatus=

{}

}

"SD_Initis函數(shù)首先對SD卡進行了初始化,調用了sd卡初始化代碼SD_Init(),然 SD_Error{uint32_ti=/*!<SD_SPI/*SD/*!<發(fā)送無效字節(jié) CS至高10for(i=0;i<=9;{/*!<Senddummybyte0xFF}/*------------PutSDinSPI /*!<SDinitializedandsettoSPImodeproperlyreturn}SD卡的初始化,首先要對SD卡的硬件接口進行設置,SD卡采用SPI2,接口為void{ /*SDIO RCC_AHBPeriphClockCmd(SD_CS_GPIO_CLK|SD_SPI_MOSI_GPIO_CLK|SD_SPI_MISO_GPIO_CLK|SD_SPI_SCK_GPIO_CLK,ENABLE);/*SD_SPI/*!<SD_SPI管腳SCK =/*!<SD_SPI管腳MISO/*!<SD_SPI管腳MOSI/*!<SD_SPI_CS_PIN管腳SDCardCSpin /*SD_SPI103.SPI_InitStructure.SPI_CRCPolynomial=7;SPI_Init(SD_SPI,&SPI_InitStructure);SPI_Cmd(SD_SPI,ENABLE);/*!<SD_SPIenableSDsd* * cardinfo:pointertoaSD_CardInfostructurethatcontainsall card*@retvalTheSD {SD_Errorstatus=/*!<Returnsthereponsereturn124.typedef125.SD_CSD /*!<SD_CID /*!<卡標識數(shù)據(jù)uint32_t /*!<卡片容量uint32_tCardBlockSize*!<}這個結構體中的成員SD_CSDSD_csd,SD_CIDSD_cid我們也寫成結構體的類型,SD卡的幾個重要信息。其詳細定義可以在文件《SD卡協(xié)議(物理層#define /*!<CMD0=0x40#define /*!<CMD1=0x41#define /*!<CMD9=0x49#define /*!<CMD10=0x4A#define /*!<CMD12=0x4C#define /*!<CMD13=0x4D#define /*!<CMD16=0x50#define /*!<CMD17=0x51#define /*!<CMD18=0x52#define /*!<CMD23=0x57#define /*!<CMD24=0x58#define /*!<CMD25=0x59#define /*!<CMD27=0x5B#define /*!<CMD28=0x5C#define /*!<CMD29=0x5D#define /*!<CMD30=0x5E#define /*!<CMD32=0x60#define /*!<CMD33=0x61#define /*!<CMD34=0x62#define /*!<CMD35=0x63#define /*!<CMD36=0x64#define /*!<CMD37=0x65#define /*!<CMD38=0x66SD卡的操作函數(shù)了。根據(jù)《SD卡協(xié)議(物理層》文件中的說明,SD卡的操作可以分為下面三種類型:/*!<SDSD_ErrorSD_ErrorSD_ReadMultiBlocks(uint8_t*pBuffer,uint32_tReadAddr,uint16_tBlockSize,uint32_tSD_ErrorSD_WriteMultiBlocks(uint8_t*pBuffer,uint32_tWriteAddr,uint16_tBlockSize,uint32_t/*!<SDuint8_tSD_Error/*!<SDuint8_t下面我們來舉其中一個例子,從SD卡 塊數(shù)據(jù),首先我們需要詳細閱讀《SD卡 首先要發(fā)送命令,sd卡應答無錯誤后開始傳輸數(shù)據(jù),數(shù)據(jù)傳輸結束后再返回結束應答?;揪瓦@3步。首先看看發(fā)送命令,文件中表示結構48bit如下圖所示:{193.uint32_ti=uint8_tFrame[0]=(Cmd|0x40);/*!<Constructbyte1*/Frame[1]=(uint8_t)(Arg>>24);/*!<Constructbyte2*/Frame[2]=(uint8_t)(Arg>>16);/*!<Constructbyte3*/Frame[3]=(uint8_t)(Arg>>8);/*!<Constructbyte4*/Frame[4]=(uint8_t)(Arg);/*!<Constructbyte5*/Frame[5]=(Crc);/*!<ConstructCRC:byte6*/for(i=0;i<6;{}* 從SD卡塊數(shù)據(jù)* * * *@retvalTheSD {uint32_ti=SD_Errorrvalue=/*SD片選置低/*!<發(fā)送命令CMD17(SD_CMD_READ_SINGLE_BLOCK) 一個塊/*!<SD卡識別讀塊命令R1response0x00noerrors)if{/*!<if{ SD卡塊數(shù)據(jù)for(i=0;i<BlockSize;{*pBuffer= /*!<GetCRCbytes(notreallyneededbyus,butrequiredbySD)/*!<設置相應成功rvalue= /*SD/*!<發(fā)送空字節(jié)8/*!<返回相應return242. intmain{ //LCD_Clear(ORANGE);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論