文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)08-0037-03
利用MEMS加速度計(jì)、陀螺儀、磁強(qiáng)計(jì)等慣性器件研制的微型姿態(tài)測(cè)量系統(tǒng)具有體積小、價(jià)格低、功耗低、抗沖擊力強(qiáng)等優(yōu)點(diǎn),廣泛應(yīng)用于現(xiàn)代武器制導(dǎo)系統(tǒng)、人體姿態(tài)測(cè)量系統(tǒng)、無(wú)人機(jī)飛行控制系統(tǒng)等方面。微型姿態(tài)測(cè)量系統(tǒng)需要將傳感器信息、控制信息等資料進(jìn)行存儲(chǔ)以用于后期的數(shù)據(jù)分析與處理,大量信息的存儲(chǔ)需求使得大容量的存儲(chǔ)芯片在系統(tǒng)中的使用變得更加必要[1-3]。Flash存儲(chǔ)器因其存儲(chǔ)容量大、掉電數(shù)據(jù)不丟失以及可多次擦寫等優(yōu)點(diǎn)在軍事、商業(yè)、工業(yè)等需要進(jìn)行信息存儲(chǔ)的多種操作系統(tǒng)中發(fā)揮著重要作用[4-8]。AT45DB系列Flash存儲(chǔ)器是ATMEL公司生產(chǎn)的串行接口可編程閃速存儲(chǔ)器,具備操作方便、數(shù)據(jù)存儲(chǔ)量大、安全性好、封裝尺寸小、集成度高、功耗低等優(yōu)點(diǎn),幾乎無(wú)需外接元器件即可與單片機(jī)或微處理器進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)存儲(chǔ)[9-10]。本文以MEMS姿態(tài)測(cè)量系統(tǒng)中Flash存儲(chǔ)芯片單元AT45DB321D為例,闡述了存儲(chǔ)芯片與微處理器的硬件接口電路、軟件操作流程以及I/O口模擬SPI協(xié)議的具體程序?qū)崿F(xiàn),是對(duì)Flash存儲(chǔ)器在系統(tǒng)信息資料存儲(chǔ)設(shè)計(jì)方面的有益探討。
1 AT45DB321D芯片介紹
AT45DB321D是串口可編程Flash芯片,目前主要有MLF、SOIC、CARD、TSOP 4種封裝形式。本文選用的芯片封裝形式為SOIC,管腳簡(jiǎn)單,連接方便。AT45DB321D中數(shù)據(jù)按頁(yè)存放,主存共8 192頁(yè),每頁(yè)528 B,共32 MB容量,存放在主存中的數(shù)據(jù)掉電不丟失。除主存以外,該芯片還有2個(gè)容量為528 MB的數(shù)據(jù)緩存,可暫存一些臨時(shí)數(shù)據(jù)。緩存讀寫方便迅速,讀寫操作多通過(guò)緩存完成。
2 MEMS姿態(tài)測(cè)量系統(tǒng)
隨著MEMS技術(shù)的迅速發(fā)展,MEMS姿態(tài)測(cè)量系統(tǒng)的精度、魯棒性、動(dòng)態(tài)響應(yīng)等性能都得到了巨大的提高,在多種場(chǎng)合得到應(yīng)用[1-3]。在本系統(tǒng)中,微處理器選用的是C8051F系列單片機(jī),其功耗低,運(yùn)算速度快,具有24個(gè)I/O口,同時(shí)支持多種類型標(biāo)準(zhǔn)數(shù)字接口。MEMS傳感器模塊包括三軸加速度計(jì)、三軸陀螺儀和三軸磁強(qiáng)計(jì),MEMS傳感器均采用數(shù)字接口設(shè)計(jì),使用I2C總線與單片機(jī)通信。傳感器數(shù)據(jù)信號(hào)被采集到微處理器C8051F中后,利用基于SPI協(xié)議的無(wú)線數(shù)據(jù)傳輸模塊將數(shù)據(jù)上傳到上位機(jī)進(jìn)行數(shù)據(jù)融合姿態(tài)解算,同時(shí)將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)芯片中,以應(yīng)用于之后的仿真、計(jì)算、數(shù)值分析。存儲(chǔ)器在整個(gè)系統(tǒng)中的連接如圖1中微存儲(chǔ)器所示。
3 存儲(chǔ)芯片在姿態(tài)測(cè)量系統(tǒng)中的應(yīng)用
3.1 接口電路硬件設(shè)計(jì)
AT45DB321D數(shù)據(jù)傳輸采用SPI格式,其外圍電路簡(jiǎn)單,無(wú)論單片機(jī)是否有SPI接口,均可與其連接。若單片機(jī)有SPI接口,存儲(chǔ)器讀寫程序相對(duì)簡(jiǎn)單;若沒(méi)有SPI接口,可用軟件仿真SPI接口與存儲(chǔ)器通信。在本系統(tǒng)中,數(shù)據(jù)傳輸模塊已占用微處理器的SPI接口,所以存儲(chǔ)操作用I/O口模擬SPI協(xié)議來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)。圖2為該芯片應(yīng)用于姿態(tài)測(cè)量系統(tǒng)中的部分電路圖,SO、SI、SCK、CS、WP、RESET分別與微處理器通用I/O口相連, 利用軟件模擬實(shí)現(xiàn)SPI協(xié)議。
3.2 模擬SPI總線設(shè)計(jì)
典型的SPI接口有4種操作模式,分別為0、1、2和3。SPI操作模式?jīng)Q定了設(shè)備接收和發(fā)送數(shù)據(jù)時(shí)的時(shí)鐘相位和極性。AD45DB系列存儲(chǔ)器僅支持SPI模式0和3。在這兩種模式下,SCK信號(hào)上升沿觸發(fā)數(shù)據(jù)輸入,下降沿觸發(fā)數(shù)據(jù)輸出,如圖3所示。二者的區(qū)別是SCK信號(hào)的起始電平不同。在本系統(tǒng)中采用SPI模式0來(lái)實(shí)現(xiàn)C8051F與Flash之間的通信,用以下C程序模擬實(shí)現(xiàn)SPI協(xié)議模式0,用數(shù)據(jù)移位操作實(shí)現(xiàn)移位寄存器功能,同時(shí)規(guī)定時(shí)鐘上升沿輸入數(shù)據(jù),下降沿輸出數(shù)據(jù)。其中定義單片機(jī)的I/O口P2.1為存儲(chǔ)器的片選信號(hào),P2.0為存儲(chǔ)器時(shí)鐘信號(hào),P0.6作為從輸入、主輸出口,P0.7為主輸入、從輸出口。程序中Out_Byte函數(shù)實(shí)現(xiàn)1 B的移位操作,Out_Word函數(shù)實(shí)現(xiàn)2 B的移位操作。
(1)void Out_Byte(unsigned char Byte)
{unsigned char Cyc,Out_SI;
for(Cyc=0; Cyc<8;Cyc++)
{ SCK=0;delay(20);
Out_SI = Byte & 0x80;
if(Out_SI==0){ MOSI=0; }
else {MOSI=1;}
Byte = Byte<<1; delay(20);
SCK=1;delay(20);}}
(2)void Out_Word(unsigned int Word)
{unsigned char Cyc;
unsigned int Out_SI;
for(Cyc=0; Cyc<16;TempCyc++)
{SCK=0; delay(20);
Out_SI = Word & 0x8000;
if(Out_SI==0){ MOSI=0;}
else{MOSI=1;}
Word = Word<<1; delay(20);
SCK=1; delay(20);}}
3.3 軟件設(shè)計(jì)
存儲(chǔ)芯片與微處理器之間的數(shù)據(jù)傳輸包括數(shù)據(jù)讀和數(shù)據(jù)寫操作,存儲(chǔ)器配置片選管腳CS使能,由串行時(shí)鐘(SCK)對(duì)讀寫進(jìn)行控制,執(zhí)行微處理器的指令,通過(guò)串行輸出(SO)和串行輸入(SI)進(jìn)行數(shù)據(jù)讀寫操作。
3.3.1 程序指令實(shí)現(xiàn)
AT45DB321D的數(shù)據(jù)命令格式是在SPI總線上傳輸8 bit操作碼后,再輸入13 bit頁(yè)地址和9 bit緩存器地址或指定頁(yè)起始地址,如圖4所示。因給出的頁(yè)面地址和起始地址都是2 B的int數(shù)據(jù)類型,共32 bit數(shù)據(jù),存儲(chǔ)器并不識(shí)別,所以需要進(jìn)行移位操作,使所傳輸?shù)捻?yè)面地址和起始地址是存儲(chǔ)器識(shí)別的地址碼。本文首先將包含13 bit頁(yè)地址的字節(jié)左移1位,使其最低邊位閑置,完成存儲(chǔ)器識(shí)別的頁(yè)地址操作;然后將包含9 bit緩存器或起始地址的字節(jié)右移8 bit后,余下的最高字節(jié)加到左移后閑置的最低位地址上,同時(shí)低字節(jié)的8 bit地址保持,通過(guò)Out_Word和Out_Byte兩個(gè)指令依次將經(jīng)過(guò)移位操作的總共22 bit地址傳輸給存儲(chǔ)器,實(shí)現(xiàn)存儲(chǔ)器程序指令的傳輸操作。具體的C程序?qū)崿F(xiàn)如下:
Out_Address_1=(Page_Address<<1)|(Start_Address>>8);
Out_Address_0=(Start_Address&0x00ff);
Out_Word(Out_Address_1);
Out_Byte(Out_Address_0)。
3.3.2 寫操作
單片機(jī)寫程序在Silicon laboratories IDE環(huán)境下對(duì)程序進(jìn)行編譯燒寫和在線調(diào)試。對(duì)該芯片的寫操作有兩種方式:一種是直接寫指令,通過(guò)微處理器模擬SPI移位寄存器直接向存儲(chǔ)芯片指定頁(yè)的指定地址寫數(shù)據(jù)。在這種方式下,要存儲(chǔ)一段連續(xù)的數(shù)據(jù)必須用一個(gè)循環(huán)來(lái)實(shí)現(xiàn),故執(zhí)行時(shí)間較長(zhǎng)。另一種方式是先把指定數(shù)據(jù)依次通過(guò)移位寄存器存儲(chǔ)到緩存器1,在寫完緩存后一次寫到Flash指定頁(yè)中去,通過(guò)緩存間接完成Flash的數(shù)據(jù)寫操作。本文中采用間接法進(jìn)行數(shù)據(jù)寫操作,寫操作數(shù)據(jù)流程如圖5所示。
3.3.3 讀操作
對(duì)存儲(chǔ)芯片的讀操作也分為兩種方式:可以直接從Flash中將給定起始頁(yè)的數(shù)據(jù)連續(xù)讀到微處理器中,也可以通過(guò)將指定頁(yè)數(shù)據(jù)傳到緩存間接讀取。本系統(tǒng)讀操作采用間接方式,先把Flash指定頁(yè)數(shù)據(jù)依次通過(guò)移位寄存器存儲(chǔ)到緩存器1,再通過(guò)緩存間接完成Flash的數(shù)據(jù)讀操作,整個(gè)數(shù)據(jù)讀取流程如圖6所示。
3.4 存儲(chǔ)數(shù)據(jù)分析
通常數(shù)據(jù)按照指定數(shù)據(jù)協(xié)議在存儲(chǔ)器中按照二進(jìn)制格式表示,處理器先對(duì)數(shù)據(jù)進(jìn)行歸一、轉(zhuǎn)換等操作,使之變成符合使用要求的數(shù)據(jù),再對(duì)數(shù)據(jù)進(jìn)行分析處理。本姿態(tài)測(cè)量系統(tǒng)中某次測(cè)量的傳感器數(shù)據(jù)和姿態(tài)數(shù)據(jù)如圖7所示,后期數(shù)據(jù)處理采用Kalman濾波算法對(duì)姿態(tài)數(shù)據(jù)進(jìn)行運(yùn)算處理。
本文主要介紹了大容量Flash存儲(chǔ)器AT45DB321D在姿態(tài)測(cè)量系統(tǒng)中的應(yīng)用,闡述了該存儲(chǔ)器與單片機(jī)的硬件連接與軟件實(shí)現(xiàn),重點(diǎn)對(duì)模擬SPI協(xié)議和數(shù)據(jù)操作指令的具體實(shí)現(xiàn)進(jìn)行了討論。文中設(shè)計(jì)了程序模擬實(shí)現(xiàn)SPI協(xié)議,解決了系統(tǒng)自帶SPI接口被占用時(shí)的數(shù)據(jù)傳輸問(wèn)題;采用了移位操作將頁(yè)面地址和起始地址轉(zhuǎn)換為存儲(chǔ)器可識(shí)別的數(shù)據(jù)命令格式,實(shí)現(xiàn)了數(shù)據(jù)的讀寫操作。該系列存儲(chǔ)芯片具有存取速度快、可靠性高、數(shù)據(jù)有效時(shí)間長(zhǎng)等優(yōu)點(diǎn),在計(jì)算機(jī)外部設(shè)備、通信設(shè)備、自動(dòng)化控制和各種消費(fèi)電子產(chǎn)品中都將會(huì)有越來(lái)越廣泛的應(yīng)用。提供的程序全部經(jīng)過(guò)調(diào)試,運(yùn)行穩(wěn)定可靠,可重復(fù)操作性強(qiáng)。
參考文獻(xiàn)
[1] 朱榮,周兆英.基于MEMS的姿態(tài)測(cè)量系統(tǒng)[J].測(cè)控技術(shù),2002,21(10):6-9.
[2] 陳新雋,劉曉平,戴若梨,等.多MEMS傳感器的嵌入式姿態(tài)測(cè)量系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(10):58-61.
[3] Zhu Rong,Zhou Zhaoying.A small low-cost hybrid orientation system and its error analysis[J].IEEE Sensors Journal,2009,9(3):223-230.
[4] 徐春生,王太勇,鄧輝,等.串行DataFlash在便攜式片上數(shù)采系統(tǒng)中的應(yīng)用[J].機(jī)械與電子,2005(7):74-76.
[5] 申河卿,張崇巍.基于C8051F320的便攜式心電監(jiān)護(hù)儀設(shè)計(jì)[D].合肥:合肥工業(yè)大學(xué),2008.
[6] 陳穎.存儲(chǔ)器AT45DB161及其在安全監(jiān)控記錄裝置中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2009(2):51-54.
[7] 范愛華,周越.電動(dòng)車測(cè)速報(bào)警系統(tǒng)[J].微計(jì)算機(jī)應(yīng)用,2011,32(5):76-80.
[8] 王霞,李淑民,裴培,等.基于ADS8364的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2009,35(7):95-97.
[9] 黃秋,丁衛(wèi)撐,方方,等.SPI接口的Flash ROM與C8051-F340的接口設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2010,29(4):99-102.
[10] 扶小飛,鄭善賢.一種Flash文件系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(2-2):174-176.