基于CC2530的SDHC卡讀寫設(shè)計(jì)
摘要:提出了將SDHC卡作為CC2530的外部存儲設(shè)備實(shí)現(xiàn)數(shù)據(jù)存儲的方法。SDHC卡具有體積小、存儲容量大的特點(diǎn),通過CC2530組建的無線傳感網(wǎng)絡(luò)適用于工業(yè)監(jiān)測,而將SDHC卡與CC2530相結(jié)合,則能夠長期連續(xù)工作并記錄大量數(shù)據(jù),可以滿足各種長期監(jiān)測狀態(tài)場合的需要。
關(guān)鍵詞:SDHC卡;CC2530;SPI模式;FAT32
0 引言
CC2530是用于IEEE802.15.4、ZigBee和RF4CE應(yīng)用的一個真正的片上系統(tǒng)(SoC)解決方案。SDHC卡的存儲性質(zhì)屬于NAND flash,其容量可達(dá)32 GB,可以有效解決數(shù)據(jù)存儲容量問題,保證數(shù)據(jù)存儲的非易失性。在無線傳感網(wǎng)絡(luò)中,CC2530所組成的每個節(jié)點(diǎn)都配上SDHC卡,可以實(shí)現(xiàn)多點(diǎn)工作并記錄大量數(shù)據(jù),能夠滿足工業(yè)監(jiān)控、森林環(huán)境監(jiān)測、水文檢測、土壤檢測等場合的需要。
1 硬件設(shè)計(jì)
1.1 SDHC卡簡介
SDHC卡有SD總線模式和SPI總線模式。SD總線模式采用四條數(shù)據(jù)線并行傳輸數(shù)據(jù),傳輸效率高,但傳輸協(xié)議復(fù)雜,且不易用軟件模擬;而SPI總線模式工作時只用一條數(shù)據(jù)傳輸線,雖然數(shù)據(jù)傳輸效率低,但很容易用軟件來模擬,而且SPI總線模式傳輸協(xié)議簡單。所以采用SPI總線,由主控制器在每次傳輸時產(chǎn)生8個時鐘脈沖給SDHC卡作為同步時鐘,即可控制數(shù)據(jù)的輸入與輸出。
1.2 CC2530簡介
CC2530集成了一個高性能的RF收發(fā)器和一個低功耗的8051內(nèi)核,其RAM達(dá)8 KB,具有兩個USART、12位ADC和21個通用GPIO。其本身自帶2.4 GHz高性能RF收發(fā)器,配上適合的天線就構(gòu)成了無線通信模塊。CC2530可配備TI的RemoTI、Z-Stack或SimpliciTI等專有或標(biāo)準(zhǔn)兼容的網(wǎng)絡(luò)協(xié)議棧來簡化開發(fā)。
1.3 主控電路接口設(shè)計(jì)
CC2530與SDHC卡的接口連接圖如圖1所示。
CS為SDHC卡使能端,DI為寫命令和寫數(shù)據(jù)端,DO為讀響應(yīng)與讀數(shù)據(jù)端,CLK為SPI時鐘輸入端。CC2530的P0口與SDHC卡的對應(yīng)端口相連,口線之間需要連接上拉電阻。
2 軟件設(shè)計(jì)
2.1 SDHC卡初始化程序設(shè)計(jì)
為完成SDHC卡的上電過程,CC2530必須向SDHC卡發(fā)送至少74個時鐘周期,之后SDHC卡會自動進(jìn)入SD總線模式。若在SD總線模式下,使片選信號CS處于低電平狀態(tài),向SDHC卡發(fā)送復(fù)位命令(CMD0),SDHC卡將進(jìn)入SPI總線模式,否則SDHC卡工作在SD總線模式。SDHC卡進(jìn)入SPI工作模式之后,使用CMD8命令識別卡的版本,然后主機(jī)不斷地向SDHC卡發(fā)送命令A(yù)CMD41(CMD55與CMD41的組合),使卡處于空閑狀態(tài),最后通過CMD58命令區(qū)別是標(biāo)準(zhǔn)容量卡還是大容量卡。SPI模式的一般初始化流程如圖2所示。
CMD指令是6字節(jié)指令,第1字節(jié)高兩位分別為起始位(對應(yīng)0)、傳輸位(對應(yīng)1),剩余6位為命令號,如CMD0的命令號為000000,合起來第1字節(jié)就是40H。因?yàn)镾PI模式是無需CRC校驗(yàn)位的,所以在CMD0與CMD8之后的CMD命令,是無需關(guān)心CRC校驗(yàn)位的。命令的具體內(nèi)容見表1所列。
2.2 SDHC卡的讀寫程序設(shè)計(jì)
SPI模式支持單塊和多塊讀寫操作。當(dāng)初始化完成后,用CMD16命令設(shè)置SDHC卡讀寫長度為單塊512字節(jié)。設(shè)置好之后,向SDHC卡發(fā)送單塊寫命令CMD24,在接收到正確的響應(yīng)信號后,發(fā)送數(shù)據(jù)起始標(biāo)志(0xFE)和512字節(jié)的數(shù)據(jù),并跟兩字節(jié)的CRC校驗(yàn)碼。當(dāng)SDHC卡的回應(yīng)信號為05H時,即表明SDHC卡接收到正確的數(shù)據(jù),若SDHC卡的輸出口變?yōu)榈碗娖?,表明正在向SDHC卡寫數(shù)據(jù),當(dāng)輸出口變?yōu)楦唠娖綍r表明寫操作完成,SDHC卡的單塊寫數(shù)據(jù)軟件流程如圖3所示。單塊讀操作與單塊寫操作類似,也是先接收起始位,然后接收數(shù)據(jù)。
3 結(jié)語
本文給出了CC2530對SDHC卡讀寫操作的方法。通過實(shí)驗(yàn)驗(yàn)證了將體積小、容量大的SDHC卡用于CC2530,能使CC2530適應(yīng)各種需要長期記錄大量數(shù)據(jù)的場合,滿足實(shí)際的需要。