dsPIC33F系列DSC的SD存儲卡接口設(shè)計(jì)_第1頁
dsPIC33F系列DSC的SD存儲卡接口設(shè)計(jì)_第2頁
dsPIC33F系列DSC的SD存儲卡接口設(shè)計(jì)_第3頁
dsPIC33F系列DSC的SD存儲卡接口設(shè)計(jì)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、dsPIC33F系歹U DSC勺SD存儲卡接口設(shè)計(jì)引言SD存儲卡(Secure Digital Memory Card) 由SD聯(lián)盟(松下、東芝及美國 SanDisk 公司 )于 1999年8 月共同開發(fā)研制,是一種基于半導(dǎo)體快閃存儲器的新一代存儲設(shè)備,被廣泛地使用在便攜式裝置上,例如數(shù)碼相機(jī)、PDA®多媒體播放器等。大小猶如一張郵票的 SD存儲卡,重量只有2g,卻擁有高存儲 容量、快速數(shù)據(jù)傳輸率、極大的移動靈活性以及很好的安全性。SD卡支持SD和SPI兩種傳輸模式,主機(jī)系統(tǒng)可以選擇其中任意一種模 式。SD模式允許4線的高速數(shù)據(jù)傳輸。SPI模式使用通用的SPI接口。這種模 式相對于S

2、D模式的不足之處是喪失了速度,但是卻有著接口簡單易于實(shí)現(xiàn)的優(yōu) 點(diǎn)。SD卡的SPI模式使得SD卡可以和市場上大部分微控制器進(jìn)行通信。Microchip公司的dsPIC33F系歹通用DSC數(shù)字信號控制器),是在16 位MC物構(gòu)基礎(chǔ)之上添加了 DSP引擎,從而具有數(shù)字信號處理功能的微控制器 產(chǎn)品。該系列DSC#成了 DCI(數(shù)據(jù)轉(zhuǎn)換器)接口,尤其適用于語音和音頻的應(yīng) 用。本文首先簡要介紹SD卡的相關(guān)規(guī)范,之后利用dsPIC33FJ64GP706s用 DS酸計(jì)了 S嚇接口電路,最后通過 SPI模式實(shí)現(xiàn)了對SD卡的基本操作。本 設(shè)計(jì)可以使SD存儲卡成為類似嵌入式系統(tǒng)產(chǎn)品的數(shù)據(jù)存儲器。1 SD卡相關(guān)規(guī)范簡

3、介SD聯(lián)盟在2000年聯(lián)合發(fā)布了 SD卡規(guī)范1. O版本,包括3個部分:物 理層規(guī)范,文件系統(tǒng)規(guī)范以及安全規(guī)范。SD卡規(guī)范V1. 0采用FAT的文件系統(tǒng),因此最大存儲容量可以達(dá)到 2 GB。2006年,S嚇規(guī)范V2. 0發(fā)布。新規(guī) 范根據(jù)容量定義了兩種卡,即標(biāo)準(zhǔn)容量 SD卡和大容量SD卡。前者和1.。版本 保持兼容,后者由于采用了 FAT32文件系統(tǒng),存儲容量突破了 2 GB的限制。新 規(guī)范定義的最大容量為32 GB。但是由于成本的原因,標(biāo)準(zhǔn)容量 SD卡仍然是市 場的主流產(chǎn)品。在以微控制器為核心的嵌入式系統(tǒng)中,主要使用SD卡的SPI。模式進(jìn)行通信,這使得標(biāo)準(zhǔn)容量的 SD卡更為合適。本設(shè)計(jì)適用于

4、2GB以下任意 容量的SD卡。 1 1 概 述SD存儲卡在2. 73. 6 V電壓下正常工作,工作頻率為 025MHz圖 1是普通SD卡的外形和引腳排列。在 SPI模式時,第8和第9腳不使用。表1 列出了各引腳在SPI 模式時的定義和功能描述。圖中的WP一個機(jī)械滑片,通過滑動到不同的位置來對 SD卡進(jìn)行寫保 護(hù)。SD卡內(nèi)部有6個和接口相關(guān)的寄存器: OCR CID、CSD RCA DSRffi SCR它們只能通過各自對應(yīng)的指令來訪問。 OCR CID、CSDffi SCR»帶SDW 的規(guī)范信息,RCAF口 DSR乍為配置寄存器裝載了 SD#的配置參數(shù)。2 2 SPI 協(xié)議系統(tǒng)上電之后

5、,如果主機(jī)在將 CS線聲明為低電平的同時發(fā)送復(fù)位指令 (CMDO)則SPI模式啟用。SD卡在SPI模式下按字節(jié)進(jìn)行通信,每一個指令和數(shù)據(jù)塊都由數(shù)個字節(jié)組成并與 CS信號對齊(也就是長度為8個時鐘周期的整數(shù) 倍)。主機(jī)和SD卡之間是通過指令與響應(yīng)來實(shí)現(xiàn)交互的。圖 2 給出了 SPI 模式下基本的指令與響應(yīng)的時序。圖中一個方格代表一個字節(jié),H為邏輯全“1”,L為邏輯全“O' , X 代表未知,Z為高阻態(tài)。NCS NECf口 NCRO是包含N個8時鐘周期,具體N的 取值范圍在SD卡規(guī)范中給出了詳細(xì)的說明。SD卡所有的指令,長度都是6字節(jié)。表2列出了指令格式。在有效接收到主機(jī)發(fā)來的指令之后,S

6、嚇將會把對應(yīng)的響應(yīng)數(shù)據(jù)段放 在總線上,主機(jī)根據(jù)響應(yīng)的內(nèi)容判斷 SD卡的狀態(tài)。所有的響應(yīng)都是 MSBffi先傳 輸。SD卡有4種類型的響應(yīng)格式,分別為 R1、R1b> R2、R3除了 SEND_STATUSREAD_OCR令外,其他指令的響應(yīng)者B是格式 R1。格式 R1 的長度為 1 字節(jié),并且最高位總是0。其余每位均是錯誤指示,在指令接收過程中發(fā)生了什么樣的錯誤,對應(yīng)的錯誤位就會是“1”。R1b和R1具有相同的格式,它將伴隨一個附加的 busy 信號。 busy 信號的長度可以是任意個字節(jié)。全零表示卡處在“忙”的狀態(tài)。格式R2 的長度為2 字節(jié),它是指令SEND_STATUS響應(yīng)。它的高

7、字節(jié)和 R1相同,低字節(jié)同樣作為狀態(tài)指示。當(dāng)接 收到了 READ_OCR令時,SD卡將會產(chǎn)生格式R3的響應(yīng),該響應(yīng)的長度為5字 節(jié)。最高字節(jié)和R1相同,其余的4字節(jié)將包含SD卡的OCRS存器信息。在SD卡規(guī)范中詳細(xì)描述了每條指令的格式內(nèi)容及作用,并給出了各條指令所對應(yīng)的響應(yīng)。對于每種響應(yīng)的信息也有詳細(xì)的說明,具體信息參閱參考文獻(xiàn)。3 SD 卡接口電路設(shè)計(jì)16位的dsPIC33F系歹DSCM有高達(dá)40 MIPS的指令周期,繼承了 Microchip公司之前8位和16位MCU品的優(yōu)點(diǎn),并保持著對以往低成本開發(fā) 系統(tǒng)的兼容性。dsPIC33FJ64GP7061其中一款64引腳的通用產(chǎn)品,擁有高達(dá) 6

8、4 KB 的 Flash 程序存儲器和16 KB 的數(shù)據(jù)存儲器。該芯片集成了 2個通用 SPI接口,本設(shè)計(jì)使用SPI2模塊來建立和SD存儲卡的通信。圖3所示為dsPIC33FJ64GP706f SD卡座的接口電路。為了防止在無卡接入或卡驅(qū)動器呈高阻態(tài)時總線懸空,在每根信號線上要接一個上拉電阻,根據(jù)SD卡規(guī)范(見參考文獻(xiàn),第6章),電阻的阻值可以取1090kQ??ㄗ腃D 引腳是SD卡檢測信號引腳,當(dāng)有卡插入時,該引腳對地短路。WP1寫保護(hù)信號引腳,在卡插入且沒有寫保護(hù)時,該引腳對地短路;如果SD卡寫保護(hù)或沒有卡插入,該引腳通過上拉電阻接到電源正極。4 SD 卡接口的實(shí)現(xiàn)3. 1選才? SD卡的

9、SPI模式并初始化SDW在上電之后,主機(jī)開始發(fā)送時鐘信號,此時的時鐘頻率不能超過400kHz。主機(jī)要連續(xù)發(fā)送至少74個時鐘周期的“ 1”才能使SD卡準(zhǔn)備好通信,然 后選擇SPI模式。S嚇進(jìn)入SPI模式之后,就可以接收來自主機(jī)的操作指令 了。這時候主機(jī)發(fā)送SEND_OP_COW,激活卡的初始化過程。在得到正確的 響應(yīng)之后,主機(jī)再發(fā)送SEND_CSD令讀取CSDU存器的內(nèi)容。正確響應(yīng)之后, 將SPI總線時鐘頻率提高到10 MHz,初始化過程結(jié)束3 2 指令和響應(yīng)交互過程的軟件實(shí)現(xiàn)typSD_CMD!自定義的結(jié)構(gòu)類型,包含指令索引、CRCffi響應(yīng)格式。最后一個字節(jié)數(shù)M用來說明該指令有無后續(xù)數(shù)據(jù)塊,

10、例如 READ_SINGLE_BLOCK( 數(shù)據(jù)塊讀指令),它需要SD卡發(fā)送一個數(shù)據(jù)塊的數(shù)據(jù),因此其后市數(shù)據(jù)為“ 1 ”。對于指令索引,是把開始位和傳輸位與6 位索引值包含在一起的數(shù)據(jù)。例如G0_IDLE_STAT的索弓|值是二進(jìn)制“ 000000',力口上開始位" O'和傳輸位 “1”,成為 “ 01000000',即 “Ox40',READ_SINGLE_BLOCK弓I值是 “010001”,加上開始位和傳輸位,成為“01010001”即 "0x51 ”。定義發(fā)送指令函數(shù)為SendSDCmd()返回值為從總線上讀取的響應(yīng)數(shù)據(jù)。 ( 具體函

11、數(shù)略編者注 ) 函數(shù)的第一個參數(shù)是指令列表數(shù)組中相應(yīng)指令元素的序號,函數(shù)會根據(jù)它的值在指令表中查到對應(yīng)的信息,第二個參數(shù)是指令的附加內(nèi)容。函數(shù)中CMD_PACKET5指令格式(見表2)定義的聯(lián)合類型,程序 通過查表的方式將指令的內(nèi)容裝載到該類型定義的變量中,并通過函數(shù)Write_sd()發(fā)送出去。write_sd()的作用是把一個字節(jié)的數(shù)據(jù)放到 SPI2模塊的 burfer里,完成一個字節(jié)的公送。函數(shù) ReadSd()用來讀取SPI2接收的一個字 節(jié)數(shù)據(jù)。如果接收的數(shù)據(jù)是0xff ,則不是響應(yīng)數(shù)據(jù);如果接收到的響應(yīng)不為全零,則說明有錯誤發(fā)生。以上程序按照圖 2 所示時序執(zhí)行,來實(shí)現(xiàn)一次指令和響

12、應(yīng)數(shù)據(jù)的交互。當(dāng)某條指令有后續(xù)數(shù)據(jù)時,按照規(guī)范中的時序發(fā)送或者讀取數(shù)據(jù)。4 3 讀寫操作的實(shí)現(xiàn)READ_SINGLE_BLOCK數(shù)據(jù)塊讀指令,在接收到有效的讀指令后 SD 卡將會送出一個響應(yīng)。卻著是一個帶 16位CRCK驗(yàn)后綴的數(shù)據(jù)塊,數(shù)據(jù)塊的 長度要在之前由SET_BLOCKEN(CMD6泠定義,一般為512字節(jié),正好一個扇 區(qū)的大小。數(shù)據(jù)塊的開始是1字節(jié)的開始令牌,值為" 0xFE',結(jié)束是2字節(jié) 的CRC該操作的通信過程如圖4所示。WRITE_SINGLE_BLOCW數(shù)據(jù)寫操作指令,在接收到主機(jī)傳來的數(shù)據(jù) 后,SD卡會發(fā)送一個值為0x5的數(shù)據(jù)響應(yīng),之后進(jìn)入busy狀態(tài)。該操作的通 信過程如圖 5 所示。按照以上通信過程編寫程序,單數(shù)據(jù)塊讀和寫的程序流程如圖 6 所示。5 結(jié)果驗(yàn)證將容量為1 GB的SD卡插入SD讀卡器,再將讀卡器插入PC機(jī)的USBg口中,此時系統(tǒng)出現(xiàn)“可移動磁盤(H: )”根目錄。打開winhex 軟件,點(diǎn)擊“工具”下拉菜單中的“打開磁盤”,選擇“物理磁盤”中的“RM:l CenericSTORAGE DEVICE(C9G, USB)',單擊“確定”按鈕,得到該 SD卡第一個物理 扇區(qū)的數(shù)據(jù)。該SD卡在偏移量從446開始的16個字節(jié)有數(shù)據(jù)“ 00 03 3D 00 06 OD ED DB F9 00 00 O

溫馨提示

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

評論

0/150

提交評論