嵌入式系統(tǒng)的SD卡接口技術(shù)分析與研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 SD卡是一種基于半導(dǎo)體快閃記憶器開發(fā)的新一代記憶設(shè)備,被廣泛應(yīng)用于各種便攜裝置上。許多嵌入式設(shè)備也選擇使用SD卡提高系統(tǒng)的穩(wěn)定性、降低成本。文中分析了嵌入式系統(tǒng)的特點(diǎn),然后,就基于嵌入式系統(tǒng)的SD卡接口硬件設(shè)計(jì)和軟件設(shè)計(jì)進(jìn)行了探討。
關(guān)鍵詞 嵌入式系統(tǒng);SD卡;接口硬件設(shè)計(jì)
SD卡是一種基于半導(dǎo)體快閃記憶器開發(fā)的新一代記憶設(shè)備,目前SD卡被廣泛應(yīng)用于各種便攜式裝置上,一般重量約為2 g,擁有較好的安全性、移動(dòng)靈活性、快速數(shù)據(jù)傳輸率和高記憶容量。許多嵌入式設(shè)備都選擇使用SD卡以提高系統(tǒng)的穩(wěn)定性、降低成本。
1 嵌入式系統(tǒng)的特點(diǎn)
因?yàn)榍度胧较到y(tǒng)是一種特殊的計(jì)算機(jī)系統(tǒng),所以它和計(jì)算機(jī)系統(tǒng)一樣,由軟件和硬件構(gòu)成。以PC為代表的通用計(jì)算機(jī)系統(tǒng)和嵌入式系統(tǒng)相比,不同的嵌入式系統(tǒng)有不同的特點(diǎn),但是其主要特點(diǎn)一樣。
(1)嵌入式系統(tǒng)是一種專用計(jì)算機(jī)系統(tǒng)。嵌人式系統(tǒng)的軟件和硬件是針對(duì)特定任務(wù)和應(yīng)用對(duì)象進(jìn)行設(shè)計(jì)的,具有較強(qiáng)的多樣性和專用性。嵌入式系統(tǒng)所能夠提供的功能,均可提前預(yù)知,相對(duì)較為固定。
(2)嵌入式系統(tǒng)需要滿足環(huán)境對(duì)其的要求。因?yàn)榍度胧较到y(tǒng)需要被嵌入到特定的對(duì)象系統(tǒng)之中,所以它必須滿足對(duì)象系統(tǒng)對(duì)嵌入式系統(tǒng)的環(huán)境要求,例如能耗少、成本低以及電氣環(huán)境、物理環(huán)境等特定要求,除此之外還需要滿足對(duì)壓力、濕度、溫度這些自然環(huán)境的要求。
(3)嵌入式系統(tǒng)是集各行業(yè)應(yīng)用和計(jì)算機(jī)技術(shù)為一體的集成系統(tǒng)。嵌入式系統(tǒng)是利用先進(jìn)的電子技術(shù)、半導(dǎo)體技術(shù)、計(jì)算機(jī)技術(shù)與其他各行業(yè)應(yīng)用相結(jié)合后的產(chǎn)物,這個(gè)特定就決定了嵌人式系統(tǒng)是一個(gè)不斷創(chuàng)新、高度分散、資金密集、技術(shù)密集的知識(shí)集成系統(tǒng)。
(4)嵌入式系統(tǒng)與其他產(chǎn)品相比,有很長(zhǎng)的生命周期。嵌入式系統(tǒng)能夠緊密地應(yīng)用于實(shí)際生產(chǎn),它的更新?lián)Q代與實(shí)際的產(chǎn)品同時(shí)進(jìn)行,所以基于嵌入式系統(tǒng)開發(fā)的產(chǎn)品,得具有強(qiáng)大的競(jìng)爭(zhēng)力和很長(zhǎng)的生命周期。
2 基于嵌入式系統(tǒng)的SD卡接口硬件設(shè)計(jì)
SD卡的接口可以支持兩種操作模式:一種是SD卡模式,另一種是SPI模式。SD接口允許1~4線數(shù)據(jù)信號(hào)設(shè)置。加電后,SD卡使用DAT0。初始化后,主機(jī)可以改變線寬。Freescale公司設(shè)計(jì)開發(fā)的MCF51QE128是一款32位低功耗嵌入式微控制器,該嵌入式微控制器采用SPI的模式實(shí)現(xiàn)和SD卡的接口。因?yàn)镸CF51QE128的最佳工作電壓為3.6 V,功耗較低,可以和SD卡的工作電壓進(jìn)行兼容處理,可以無(wú)需利用電平轉(zhuǎn)換電路,可以直接與SD卡連接,這里選用嵌入式微控制器的第2個(gè)SPI口,硬件連接如圖1所示。SD卡的接口主要能支持兩種操作模式:一種是SD卡模式;另一種是SPI模式。主機(jī)系統(tǒng)可以根據(jù)需要,選擇一種模式,SD卡的可以允許4線同時(shí)進(jìn)行數(shù)據(jù)傳輸。接到復(fù)位命令時(shí),低電平有效,
SPI模式啟用。SPI模式可以允許那些簡(jiǎn)單且通用的SPI通道接口,SPI模式與SD模式相比而言,喪失了速度優(yōu)勢(shì)。
3 基于嵌入式系統(tǒng)的SD卡接口軟件設(shè)計(jì)
SD卡接口軟件設(shè)計(jì),就是SD卡與嵌入式設(shè)備接觸時(shí)的接口驅(qū)動(dòng)程序。驅(qū)動(dòng)程序要實(shí)現(xiàn)相應(yīng)XXX_Open(),XXX_Close()等響應(yīng)的流式設(shè)備接口函數(shù),其中XXX為設(shè)備驅(qū)動(dòng)的前綴,應(yīng)用程序可以通過(guò)文件操作來(lái)控制設(shè)備。例如:hDevice=Activate DeviceEx(szRegKey_SDMMC,NU-LL,0,NULL);/*加載SD/MMC卡驅(qū)動(dòng)*/這個(gè)驅(qū)動(dòng)代碼可以判斷SD卡插入事件。同時(shí),SD卡的數(shù)據(jù)傳輸,基本是通過(guò)塊的讀寫實(shí)現(xiàn)。當(dāng)塊進(jìn)行讀取時(shí),可以發(fā)送命令CMD17,接收到的應(yīng)答信號(hào)為0x00。這樣就能夠直接來(lái)接收SD卡數(shù)據(jù),接收到的數(shù)據(jù)的第1 Byte為數(shù)據(jù)令牌0xfe,后面為接收到的數(shù)據(jù),當(dāng)輸出口變?yōu)楦唠娖綍r(shí),表明讀取操作完成,SD卡的讀操作與寫操作相同。
為降低系統(tǒng)功耗,非活躍線程平時(shí)是被掛起的。如果總線上掛有多個(gè)SD卡,就需要用CMD7命令退出當(dāng)前SD卡,選擇其他CD卡操作。CMD7命令為選擇卡或取消卡,在初始化的時(shí)候發(fā)送CMD7命令,SD卡將進(jìn)入數(shù)據(jù)發(fā)送模式,在數(shù)據(jù)模式里發(fā)送CMD7則退出當(dāng)前卡的操作。需要注意的是,在數(shù)據(jù)模式里不同的狀態(tài)只支持特定命令,如在數(shù)據(jù)模式里發(fā)送讀ID指令則無(wú)效。同時(shí),為減少SD Host驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,使其具有較好的可移植性,可以采用Bsquare提供的SD Host DDK,它在Bsquare SD協(xié)議棧的基礎(chǔ)上,提供了平臺(tái)獨(dú)立的總線、客戶端驅(qū)動(dòng)和一組標(biāo)準(zhǔn)化的API供使用。在該體系結(jié)構(gòu)下,SD主控制器驅(qū)動(dòng)負(fù)責(zé)檢查SD卡的插拔狀態(tài),檢測(cè)插入卡的類型,設(shè)置SD主控制器時(shí)鐘等SD接口的硬件操作;SD總線驅(qū)動(dòng)則負(fù)責(zé)上層卡驅(qū)動(dòng)的裝載和移除,維護(hù)每一個(gè)插槽的總線請(qǐng)求隊(duì)列等。該結(jié)構(gòu)的設(shè)計(jì)很大程度上減少了SD Host驅(qū)動(dòng)程序設(shè)計(jì)的復(fù)雜性,使SD Host控制器驅(qū)動(dòng)程序設(shè)計(jì)可以專注于硬件相關(guān)的部分。總線驅(qū)動(dòng)是SD卡客戶端驅(qū)動(dòng)程序和SDHost驅(qū)動(dòng)程序之間的一個(gè)抽象層,它為SD卡客戶端驅(qū)動(dòng)提供平臺(tái)獨(dú)立的服務(wù)接口。SD Host驅(qū)動(dòng)程序需要完成處理器和硬件平臺(tái)相關(guān)的處理,向上層驅(qū)動(dòng)提供統(tǒng)一的服務(wù)接口。
4 結(jié)束語(yǔ)
SD卡是目前廣泛應(yīng)用的可擦除的大容量存儲(chǔ)設(shè)備,其接口設(shè)計(jì)可作為各類嵌入式系統(tǒng)中存儲(chǔ)單元的一般解決方案。