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