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