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