當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]dsPIC33F系列DSC的 SD存儲(chǔ)卡接口設(shè)計(jì)

引 言
    SD存儲(chǔ)卡(Secure Digital Memory Card)由SD聯(lián)盟(松下、東芝及美國(guó)SanDisk公司)于1999年8月共同開(kāi)發(fā)研制,是一種基于半導(dǎo)體快閃存儲(chǔ)器的新一代存儲(chǔ)設(shè)備,被廣泛地使用在便攜式裝置上,例如數(shù)碼相機(jī)、PDA和多媒體播放器等。大小猶如一張郵票的SD存儲(chǔ)卡,重量只有2g,卻擁有高存儲(chǔ)容量、快速數(shù)據(jù)傳輸率、極大的移動(dòng)靈活性以及很好的安全性。
    SD卡支持SD和SPI兩種傳輸模式,主機(jī)系統(tǒng)可以選擇其中任意一種模式。SD模式允許4線的高速數(shù)據(jù)傳輸。SPI模式使用通用的SPI接口。這種模式相對(duì)于SD模式的不足之處是喪失了速度,但是卻有著接口簡(jiǎn)單易于實(shí)現(xiàn)的優(yōu)點(diǎn)。SD卡的SPI模式使得SD卡可以和市場(chǎng)上大部分微控制器進(jìn)行通信。
    Microchip公司的dsPIC33F系列通用DSC(數(shù)字信號(hào)控制器),是在16位MCU架構(gòu)基礎(chǔ)之上添加了DSP引擎,從而具有數(shù)字信號(hào)處理功能的微控制器產(chǎn)品。該系列DSC集成了DCI(數(shù)據(jù)轉(zhuǎn)換器)接口,尤其適用于語(yǔ)音和音頻的應(yīng)用。
    本文首先簡(jiǎn)要介紹SD卡的相關(guān)規(guī)范,之后利用dsPIC33FJ64GP706通用DSC設(shè)計(jì)了SD卡接口電路,最后通過(guò)SPI模式實(shí)現(xiàn)了對(duì)SD卡的基本操作。本設(shè)計(jì)可以使SD存儲(chǔ)卡成為類似嵌入式系統(tǒng)產(chǎn)品的數(shù)據(jù)存儲(chǔ)器。


1 SD卡相關(guān)規(guī)范簡(jiǎn)介
    SD聯(lián)盟在2000年聯(lián)合發(fā)布了SD卡規(guī)范1.O版本,包括3個(gè)部分:物理層規(guī)范,文件系統(tǒng)規(guī)范以及安全規(guī)范。SD卡規(guī)范V1.0采用FAT的文件系統(tǒng),因此最大存儲(chǔ)容量可以達(dá)到2 GB。2006年,SD卡規(guī)范V2.0發(fā)布。新規(guī)范根據(jù)容量定義了兩種卡,即標(biāo)準(zhǔn)容量SD卡和大容量SD卡。前者和1.O版本保持兼容,后者由于采用了FAT32文件系統(tǒng),存儲(chǔ)容量突破了2 GB的限制。新規(guī)范定義的最大容量為32 GB。但是由于成本的原因,標(biāo)準(zhǔn)容量SD卡仍然是市場(chǎng)的主流產(chǎn)品。在以微控制器為核心的嵌入式系統(tǒng)中,主要使用SD卡的SPI。模式進(jìn)行通信,這使得標(biāo)準(zhǔn)容量的SD卡更為合適。本設(shè)計(jì)適用于2GB以下任意容量的SD卡。
1.1 概 述
    SD存儲(chǔ)卡在2.7~3.6 V電壓下正常工作,工作頻率為0~25MHz。圖1是普通SD卡的外形和引腳排列。在SPI模式時(shí),第8和第9腳不使用。表1列出了各引腳在SPI模式時(shí)的定義和功能描述。

    圖中的WP是一個(gè)機(jī)械滑片,通過(guò)滑動(dòng)到不同的位置來(lái)對(duì)SD卡進(jìn)行寫保護(hù)。
    SD卡內(nèi)部有6個(gè)和接口相關(guān)的寄存器:OCR、CID、CSD、RCA、DSR和SCR。它們只能通過(guò)各自對(duì)應(yīng)的指令來(lái)訪問(wèn)。OCR、CID、CSD和SCR攜帶SD卡的規(guī)范信息,RCA和DSR作為配置寄存器裝載了SD卡的配置參數(shù)。
1.2 SPI協(xié)議
   
系統(tǒng)上電之后,如果主機(jī)在將CS線聲明為低電平的同時(shí)發(fā)送復(fù)位指令(CMDO),則SPI模式啟用。SD卡在SPI模式下按字節(jié)進(jìn)行通信,每一個(gè)指令和數(shù)據(jù)塊都由數(shù)個(gè)字節(jié)組成并與CS信號(hào)對(duì)齊(也就是長(zhǎng)度為8個(gè)時(shí)鐘周期的整數(shù)倍)。
    主機(jī)和SD卡之間是通過(guò)指令與響應(yīng)來(lái)實(shí)現(xiàn)交互的。
    圖2給出了SPI模式下基本的指令與響應(yīng)的時(shí)序。

    圖中一個(gè)方格代表一個(gè)字節(jié),H為邏輯全“1”,L為邏輯全“O”,X代表未知,Z為高阻態(tài)。NCS、NEC和NCR都是包含N個(gè)8時(shí)鐘周期,具體N的取值范圍在SD卡規(guī)范中給出了詳細(xì)的說(shuō)明。
    SD卡所有的指令,長(zhǎng)度都是6字節(jié)。表2列出了指令格式。

    在有效接收到主機(jī)發(fā)來(lái)的指令之后,SD卡將會(huì)把對(duì)應(yīng)的響應(yīng)數(shù)據(jù)段放在總線上,主機(jī)根據(jù)響應(yīng)的內(nèi)容判斷SD卡的狀態(tài)。所有的響應(yīng)都是MSB優(yōu)先傳輸。SD卡有4種類型的響應(yīng)格式,分別為R1、R1b、R2、R3。
    除了SEND_STATUS和READ_OCR指令外,其他指令的響應(yīng)都是格式R1。格式R1的長(zhǎng)度為1字節(jié),并且最高位總是0。其余每位均是錯(cuò)誤指示,在指令接收過(guò)程中發(fā)生了什么樣的錯(cuò)誤,對(duì)應(yīng)的錯(cuò)誤位就會(huì)是“1”。R1b和R1具有相同的格式,它將伴隨一個(gè)附加的busy信號(hào)。busy信號(hào)的長(zhǎng)度可以是任意個(gè)字節(jié)。全零表示卡處在“忙”的狀態(tài)。格式R2的長(zhǎng)度為2字節(jié),它是指令SEND_STATUS的響應(yīng)。它的高字節(jié)和R1相同,低字節(jié)同樣作為狀態(tài)指示。當(dāng)接收到了READ_OCR指令時(shí),SD卡將會(huì)產(chǎn)生格式R3的響應(yīng),該響應(yīng)的長(zhǎng)度為5字節(jié)。最高字節(jié)和R1相同,其余的4字節(jié)將包含SD卡的OCR寄存器信息。
    在SD卡規(guī)范中詳細(xì)描述了每條指令的格式內(nèi)容及作用,并給出了各條指令所對(duì)應(yīng)的響應(yīng)。對(duì)于每種響應(yīng)的信息也有詳細(xì)的說(shuō)明,具體信息參閱參考文獻(xiàn)。

2 SD卡接口電路設(shè)計(jì)
    16位的dsPIC33F系列DSC具有高達(dá)40 MIPS的指令周期,繼承了Microchip公司之前8位和16位MCU產(chǎn)品的優(yōu)點(diǎn),并保持著對(duì)以往低成本開(kāi)發(fā)系統(tǒng)的兼容性。dsPIC33FJ64GP706是其中一款64引腳的通用產(chǎn)品,擁有高達(dá)64 KB的Flash程序存儲(chǔ)器和16 KB的數(shù)據(jù)存儲(chǔ)器。該芯片集成了2個(gè)通用SPI接口,本設(shè)計(jì)使用SPI2模塊來(lái)建立和SD存儲(chǔ)卡的通信。
    圖3所示為dsPIC33FJ64GP706與SD卡座的接口電路。為了防止在無(wú)卡接入或卡驅(qū)動(dòng)器呈高阻態(tài)時(shí)總線懸空,在每根信號(hào)線上要接一個(gè)上拉電阻,根據(jù)SD卡規(guī)范(見(jiàn)參考文獻(xiàn),第6章),電阻的阻值可以取10~90kΩ??ㄗ腃D引腳是SD卡檢測(cè)信號(hào)引腳,當(dāng)有卡插入時(shí),該引腳對(duì)地短路。WP是寫保護(hù)信號(hào)引腳,在卡插入且沒(méi)有寫保護(hù)時(shí),該引腳對(duì)地短路;如果SD卡寫保護(hù)或沒(méi)有卡插入,該引腳通過(guò)上拉電阻接到電源正極。

3 SD卡接口的實(shí)現(xiàn)
3.1 選擇SD卡的SPI模式并初始化SD卡

    在上電之后,主機(jī)開(kāi)始發(fā)送時(shí)鐘信號(hào),此時(shí)的時(shí)鐘頻率不能超過(guò)400 kHz。主機(jī)要連續(xù)發(fā)送至少74個(gè)時(shí)鐘周期的“1”才能使SD卡準(zhǔn)備好通信,然后選擇SPI模式。SD卡進(jìn)入SPI模式之后,就可以接收來(lái)自主機(jī)的操作指令了。這時(shí)候主機(jī)發(fā)送SEND_OP_COND指令,激活卡的初始化過(guò)程。在得到正確的響應(yīng)之后,主機(jī)再發(fā)送SEND_CSD指令讀取CSD寄存器的內(nèi)容。正確響應(yīng)之后,將SPI總線時(shí)鐘頻率提高到10 MHz,初始化過(guò)程結(jié)束。
3.2 指令和響應(yīng)交互過(guò)程的軟件實(shí)現(xiàn)


    typSD_CMD是自定義的結(jié)構(gòu)類型,包含指令索引、CRC和響應(yīng)格式。最后一個(gè)字節(jié)數(shù)據(jù)用來(lái)說(shuō)明該指令有無(wú)后續(xù)數(shù)據(jù)塊,例如READ_SINGLE_BLOCK(單數(shù)據(jù)塊讀指令),它需要SD卡發(fā)送一個(gè)數(shù)據(jù)塊的數(shù)據(jù),因此其后的數(shù)據(jù)為“1”。對(duì)于指令索引,是把開(kāi)始位和傳輸位與6位索引值包含在一起的數(shù)據(jù)。例如G0_IDLE_STATE的索引值是二進(jìn)制“000000”,加上開(kāi)始位“O”和傳輸位“1”,成為“01000000”,即“Ox40”,READ_SINGLE_BLOCK的索引值是“010001”,加上開(kāi)始位和傳輸位,成為“01010001”即"0x51”。
    定義發(fā)送指令函數(shù)為SendSDCmd(),返回值為從總線上讀取的響應(yīng)數(shù)據(jù)。(具體函數(shù)略——編者注)函數(shù)的第一個(gè)參數(shù)是指令列表數(shù)組中相應(yīng)指令元素的序號(hào),函數(shù)會(huì)根據(jù)它的值在指令表中查到對(duì)應(yīng)的信息,第二個(gè)參數(shù)是指令的附加內(nèi)容。函數(shù)中CMD_PACKET是按指令格式(見(jiàn)表2)定義的聯(lián)合類型,程序通過(guò)查表的方式將指令的內(nèi)容裝載到該類型定義的變量中,并通過(guò)函數(shù)Write_sd()發(fā)送出去。write_sd()的作用是把一個(gè)字節(jié)的數(shù)據(jù)放到SPI2模塊的burfer里,完成一個(gè)字節(jié)的發(fā)送。函數(shù)ReadSd()用來(lái)讀取SPI2接收的一個(gè)字節(jié)數(shù)據(jù)。如果接收的數(shù)據(jù)是0xff,則不是響應(yīng)數(shù)據(jù);如果接收到的響應(yīng)不為全零,則說(shuō)明有錯(cuò)誤發(fā)生。
    以上程序按照?qǐng)D2所示時(shí)序執(zhí)行,來(lái)實(shí)現(xiàn)一次指令和響應(yīng)數(shù)據(jù)的交互。當(dāng)某條指令有后續(xù)數(shù)據(jù)時(shí),按照規(guī)范中的時(shí)序發(fā)送或者讀取數(shù)據(jù)。
3.3 讀寫操作的實(shí)現(xiàn)
    READ_SINGLE_BLOCK是單數(shù)據(jù)塊讀指令,在接收到有效的讀指令后SD卡將會(huì)送出一個(gè)響應(yīng)。緊接著是一個(gè)帶16位CRC校驗(yàn)后綴的數(shù)據(jù)塊,數(shù)據(jù)塊的長(zhǎng)度要在之前由SET_BLOCKEN(CMDl6)指令定義,一般為512字節(jié),正好一個(gè)扇區(qū)的大小。數(shù)據(jù)塊的開(kāi)始是1字節(jié)的開(kāi)始令牌,值為“0xFE”,結(jié)束是2字節(jié)的CRC。該操作的通信過(guò)程如圖4所示。

    WRITE_SINGLE_BLOCK是單數(shù)據(jù)寫操作指令,在接收到主機(jī)傳來(lái)的數(shù)據(jù)后,SD卡會(huì)發(fā)送一個(gè)值為0x5的數(shù)據(jù)響應(yīng),之后進(jìn)入busy狀態(tài)。該操作的通信過(guò)程如圖5所示。

    按照以上通信過(guò)程編寫程序,單數(shù)據(jù)塊讀和寫的程序流程如圖6所示。

4 結(jié)果驗(yàn)證
    將容量為1 GB的SD卡插入SD讀卡器,再將讀卡器插入PC機(jī)的USB接口中,此時(shí)系統(tǒng)出現(xiàn)“可移動(dòng)磁盤(H:)”根目錄。打開(kāi)winhex軟件,點(diǎn)擊“工具”下拉菜單中的“打開(kāi)磁盤”,選擇“物理磁盤”中的“RMl:Ceneric STORAGE DEVICE(O.9G,USB)”,單擊“確定”按鈕,得到該SD卡第一個(gè)物理扇區(qū)的數(shù)據(jù)。該SD卡在偏移量從446開(kāi)始的16個(gè)字節(jié)有數(shù)據(jù)“00 03 3D 00 06 OD ED DB F9 00 00 OO 07 5F 1E 00”,該扇區(qū)結(jié)束的兩個(gè)字節(jié)為“55AA”,其余部分?jǐn)?shù)據(jù)均為“00”。
    將SD卡取出,插入本設(shè)計(jì)電路的SD卡座中,用示波器連接D0、CLK和DI線,接通電源,測(cè)量SPI總線上的波形。
    本設(shè)計(jì)利用dsPIC33FJ64GP706的SPI接口實(shí)現(xiàn)了對(duì)SD存儲(chǔ)卡的操作,可以把SD卡和dsPIC33F系列DSC兩方面的優(yōu)點(diǎn)集中到一個(gè)嵌入式系統(tǒng)中,有較高的利用價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉