基于MSP430F12x2的SPI進行大容量數(shù)據(jù)存儲器擴展
1 引 言
如今隨著信息產(chǎn)業(yè)的飛速發(fā)展,以微處理器為核心的嵌入式系統(tǒng)正在智能化儀表、實時控制系統(tǒng)等方面發(fā)揮著巨大的作用。在許多實際應用中經(jīng)常面臨的問題是需要支持大容量的數(shù)據(jù)存儲功能。
但是采用常規(guī)擴展外部數(shù)據(jù)存儲器的方法,需要大量的地址總線和數(shù)據(jù)總線引腳,因而在訪問外部數(shù)據(jù)存儲器時,其容量受到微處理器地址總線和數(shù)據(jù)總線數(shù)量的極大限制。由于單片機的引腳數(shù)都相對較少,沒有足夠多的引腳用作外部數(shù)據(jù)存儲器的地址總線,為了解決這一矛盾,本文以MSP430F12X2[1]單片機和AT45DB081[2]芯片為例,介紹了一種利用串行外設接口(SPI)擴展大容量數(shù)據(jù)存儲器的方法。并給出初始化以及數(shù)據(jù)讀寫操作子程序。
2 硬件簡介
MSP43 F12X20是一款超低功耗的混合信號控制器,具有16位RISC結(jié)構(gòu),有著豐富的片內(nèi)外設,主要包括有看門狗、定時器、比較器、硬件乘法器、液晶驅(qū)動器、ADC、I/O端口、串口(USART)等,還集成有64 kB的FLASHROM和2 kB的RAM。其功能強大,應用場合廣泛。特別適合應用于智能儀表、智能化家用電器、電池供電的便攜式設備等產(chǎn)品中。相對于其他單片機MSP430 F12X2還具有以下特點:
(1)MSP430F12X2內(nèi)部預設了JTAG模塊,他使得每一個單片機芯片都具有完整的在線調(diào)試功能,而不必使用較復雜的仿真調(diào)試工具;
(2)MSP430F12X2中的FLASH在線編程技術可以完成除了采用外部編程器進行燒寫外,用戶可以利用自己的程序修改FLASH內(nèi)容,且不需要外加編程電壓;
(3)MSP430F12X2中的BOOTSTRAP技術使芯片具有片內(nèi)的BOOT ROM,可以實現(xiàn)程序代碼的下載和上載。
AT45DB081是Atreel公司推出的工作電壓為2.7~3.6 v,可在系統(tǒng)可重復擦寫并兼容SPI的FLASH數(shù)據(jù)存儲器。內(nèi)部有4 096頁、每頁264個字節(jié),共計8 MB的主存儲器容量以及2個264字節(jié)的SRAM數(shù)據(jù)緩存器。支持在系統(tǒng)重復編程,不需要較高的編程電壓,只需要芯片的工作電壓2.7~3.6 V就可以完成對FLASH的讀寫操作。AT45DB081通過一個三線接口(包含串行輸入SI、串行輸出SO、串行時鐘SCK)在片選信號的配合下進行訪問。這種串行接口FLAS[{存儲器十分適用于要求存儲量大而引腳資源較少、電源電壓低和低功耗的應用領域。
3 硬件原理圖
MSP430F12X2與AT45DB081的硬件連接原理圖如圖1所示。
圖1中將MSP430F12X2的P3.1,P3.2和P3.3引腳配置為SPI的MOSI(主出從人)、MISO(主出從入)CLK(串行時鐘)和信號線,分別與AT、45DB081的串行輸入、串行輸出和時鐘引腳相連。將P2.0,P2.1,P2.2與AT45DB081的芯片片選、復位和忙閑狀態(tài)引腳相連。由于RDY/BUSY為漏極開路,因而需加上拉電阻輸出[2]。
4 AT45DB081的操作及操作碼
對AT45DB021B的操作是由主機發(fā)出的指令控制,一個有效的指令在 的下降沿開始,包括一個8位的操作碼和要進行操作的頁地址和緩沖區(qū)地址的位置。表1列出了AT45DB021B的主要的操作方式和對應的操作碼。
(1) 狀態(tài)存儲器
他是AT45DB021B內(nèi)的一個8位的只讀存儲器,用于指示其工作狀況,如表2所示,BIT7用于顯示AT45DB021B的狀態(tài),BIT7位=1時,說明AT45DB021B不忙,可以對其進行指令操作,BIT7位=0時,指示AT45DB021B忙,可以通過檢測BIT7位實時了解AT45DB021B的狀態(tài)。BIT6 COMP用于顯示主存儲器頁面與緩存器進行數(shù)據(jù)比較的結(jié)果,當比較結(jié)果匹配COMP=0,否則COMP=1。
(2) 通過緩沖存儲器對主存儲器寫操作
命令碼為:操作碼5位保留碼10位頁地址碼9位頁內(nèi)起始地址碼,其中操作碼為82H時,數(shù)據(jù)通過緩沖存儲器1向主存儲器寫,為85H時,數(shù)據(jù)通過緩沖存儲器2向主存儲器寫操作。
(3) 主存儲器頁讀
主存儲器頁讀指令可以對1024頁中的任意頁進行讀操作,命令碼為:8位操作碼,5位保留碼,10位頁地址碼,9位頁內(nèi)起始地址碼,32位無關碼;操作碼為52H或D2H,5位保留碼用于對片子的上下兼容,10位頁地址碼用于確定對主存儲器的哪一頁進行操作,9位頁內(nèi)起始地址碼來確定頁內(nèi)操作的起始地址,后32為無關碼用來配合時序。當 為0時,主機向器件的SCK引腳發(fā)送時鐘信號,引導操作碼和地址從SI引腳寫入器件,當最后一位寫入后的下一個時鐘周期,頁內(nèi)數(shù)據(jù)將從SO引腳輸出。
5 軟件流程及讀寫程序
MSP430F12X2單片機對AT45DB081進行初始化以及數(shù)據(jù)讀寫操作的軟件流程圖如圖2所示。圖2中系統(tǒng)初始化包括系統(tǒng)時鐘初始化、將P3.1,P3.2和P3.3引腳配置為SPI接口,設置SPI特殊狀態(tài)寄存器和復位數(shù)據(jù)存儲器。
單片機通過P2.2讀取AT45DB081的忙閑狀態(tài)引腳來判斷存儲器是否空閑,若P2.2為"1"表示存儲器空閑,否則表示存儲器忙。當存儲器空閑時通過P2.0引腳輸出"0"作為存儲器的片選信號。選中存儲器后可以參照表1,通過SPI發(fā)送命令字完成對AT45DB081的相應讀寫操作。對AT45DB081進行初始化以及數(shù)據(jù)讀寫操作的子程序[3]如下。
6 結(jié) 語
本文的創(chuàng)新意義在于在占用:MSP430F12X2單片機引腳數(shù)極少的情況下實現(xiàn)了大容量外部存儲器的擴展方法,使得單片機在擴展外部數(shù)據(jù)存儲器中改并行訪問為串行訪問,不再需要大量的地址和數(shù)據(jù)總線引腳。這種方法同樣可推廣到其他帶有SPI接口的微處理器。在數(shù)據(jù)采集,智能儀表中都具有很強的實用意義。