《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > SPI串行Data Flash在MEMS姿態(tài)測量系統(tǒng)中的應用
SPI串行Data Flash在MEMS姿態(tài)測量系統(tǒng)中的應用
來源:電子技術應用2013年第8期
翟瑞永1,張文棟1,周兆英2,桑勝波1,李朋偉1,孫其瑞2
1.太原理工大學 微納系統(tǒng)研究中心,山西 太原030024; 2.清華大學 精密儀器與機械學系,北京100084
摘要: 基于MEMS傳感器的姿態(tài)測量系統(tǒng)以體積小、功耗低、實時性好、方便使用等優(yōu)點而得到廣泛應用,傳感器信息除用于實時處理進行姿態(tài)解算以外,更需要長時間保存以達到校對、仿真、數(shù)值分析等多種用途。針對大容量存儲在實際使用中疑難較多的問題,主要介紹了大容量Flash存儲器AT45DB321D在姿態(tài)測量系統(tǒng)中的應用,描述了其基本性能及在姿態(tài)測量系統(tǒng)中的硬件連接和軟件設計,重點討論了利用單片機I/O接口模擬SPI操作以及操作指令的具體實現(xiàn)等問題。
中圖分類號: TP212
文獻標識碼: A
文章編號: 0258-7998(2013)08-0037-03
Application of SPI Data Flash in MEMS attitude measurement system
Zhai Ruiyong1,Zhang Wendong1,Zhou Zhaoying2,Sang Shengbo1,Li Pengwei1,Sun Qirui2
1.Micro Nano System Research Center, Taiyuan University of Technology,Taiyuan 030024,China; 2.Department of Precision Instruments and Mechanology, Tsinghua University,Beijing 100084,China
Abstract: The MEMS attitude measurement system based on MEMS sensor has been widely used with its advantages of small volume, low cost, easy to use, properties of real-time,etc. Mostly, the sensor information is not only used for real-time processing to determine the attitude, but also required to be stored for revision, simulation, numerical analysis, and so on. Based on the difficult problem of large capacity storage in actual use, this paper mainly introduces the application of AT45DB321D in the attitude measurement system, and describes the basic performance, the hardware connection and software design. This paper particularly illustrates the realization of the analog SPI using I/O port and operation instruction in software program.
Key words : AT45DB321D;MEMS attitude measurement system;analog SPI;operation instruction

    利用MEMS加速度計、陀螺儀、磁強計等慣性器件研制的微型姿態(tài)測量系統(tǒng)具有體積小、價格低、功耗低、抗沖擊力強等優(yōu)點,廣泛應用于現(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公司生產的串行接口可編程閃速存儲器,具備操作方便、數(shù)據(jù)存儲量大、安全性好、封裝尺寸小、集成度高、功耗低等優(yōu)點,幾乎無需外接元器件即可與單片機或微處理器進行通信,實現(xiàn)數(shù)據(jù)的實時存儲[9-10]。本文以MEMS姿態(tài)測量系統(tǒng)中Flash存儲芯片單元AT45DB321D為例,闡述了存儲芯片與微處理器的硬件接口電路、軟件操作流程以及I/O口模擬SPI協(xié)議的具體程序實現(xiàn),是對Flash存儲器在系統(tǒng)信息資料存儲設計方面的有益探討。

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技術的迅速發(fā)展,MEMS姿態(tài)測量系統(tǒng)的精度、魯棒性、動態(tài)響應等性能都得到了巨大的提高,在多種場合得到應用[1-3]。在本系統(tǒng)中,微處理器選用的是C8051F系列單片機,其功耗低,運算速度快,具有24個I/O口,同時支持多種類型標準數(shù)字接口。MEMS傳感器模塊包括三軸加速度計、三軸陀螺儀和三軸磁強計,MEMS傳感器均采用數(shù)字接口設計,使用I2C總線與單片機通信。傳感器數(shù)據(jù)信號被采集到微處理器C8051F中后,利用基于SPI協(xié)議的無線數(shù)據(jù)傳輸模塊將數(shù)據(jù)上傳到上位機進行數(shù)據(jù)融合姿態(tài)解算,同時將數(shù)據(jù)存儲到存儲芯片中,以應用于之后的仿真、計算、數(shù)值分析。存儲器在整個系統(tǒng)中的連接如圖1中微存儲器所示。


3 存儲芯片在姿態(tài)測量系統(tǒng)中的應用
3.1 接口電路硬件設計

    AT45DB321D數(shù)據(jù)傳輸采用SPI格式,其外圍電路簡單,無論單片機是否有SPI接口,均可與其連接。若單片機有SPI接口,存儲器讀寫程序相對簡單;若沒有SPI接口,可用軟件仿真SPI接口與存儲器通信。在本系統(tǒng)中,數(shù)據(jù)傳輸模塊已占用微處理器的SPI接口,所以存儲操作用I/O口模擬SPI協(xié)議來實現(xiàn)數(shù)據(jù)存儲。圖2為該芯片應用于姿態(tài)測量系統(tǒng)中的部分電路圖,SO、SI、SCK、CS、WP、RESET分別與微處理器通用I/O口相連, 利用軟件模擬實現(xiàn)SPI協(xié)議。

3.2 模擬SPI總線設計
    典型的SPI接口有4種操作模式,分別為0、1、2和3。SPI操作模式?jīng)Q定了設備接收和發(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ù)據(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程序實現(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)境下對程序進行編譯燒寫和在線調試。對該芯片的寫操作有兩種方式:一種是直接寫指令,通過微處理器模擬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ù)進行歸一、轉換等操作,使之變成符合使用要求的數(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)中的應用,闡述了該存儲器與單片機的硬件連接與軟件實現(xiàn),重點對模擬SPI協(xié)議和數(shù)據(jù)操作指令的具體實現(xiàn)進行了討論。文中設計了程序模擬實現(xiàn)SPI協(xié)議,解決了系統(tǒng)自帶SPI接口被占用時的數(shù)據(jù)傳輸問題;采用了移位操作將頁面地址和起始地址轉換為存儲器可識別的數(shù)據(jù)命令格式,實現(xiàn)了數(shù)據(jù)的讀寫操作。該系列存儲芯片具有存取速度快、可靠性高、數(shù)據(jù)有效時間長等優(yōu)點,在計算機外部設備、通信設備、自動化控制和各種消費電子產品中都將會有越來越廣泛的應用。提供的程序全部經(jīng)過調試,運行穩(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在便攜式片上數(shù)采系統(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的數(shù)據(jù)采集系統(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)的設計和實現(xiàn)[J].微計算機信息,2010,26(2-2):174-176.

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載。