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