《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > SPI串行Data Flash在MEMS姿態(tài)測量系統(tǒng)中的應(yīng)用
SPI串行Data Flash在MEMS姿態(tài)測量系統(tǒng)中的應(yīng)用
來源:電子技術(shù)應(yīng)用2013年第8期
翟瑞永1,張文棟1,周兆英2,桑勝波1,李朋偉1,孫其瑞2
1.太原理工大學(xué) 微納系統(tǒng)研究中心,山西 太原030024; 2.清華大學(xué) 精密儀器與機(jī)械學(xué)系,北京100084
摘要: 基于MEMS傳感器的姿態(tài)測量系統(tǒng)以體積小、功耗低、實(shí)時(shí)性好、方便使用等優(yōu)點(diǎn)而得到廣泛應(yīng)用,傳感器信息除用于實(shí)時(shí)處理進(jìn)行姿態(tài)解算以外,更需要長時(shí)間保存以達(dá)到校對、仿真、數(shù)值分析等多種用途。針對大容量存儲在實(shí)際使用中疑難較多的問題,主要介紹了大容量Flash存儲器AT45DB321D在姿態(tài)測量系統(tǒng)中的應(yīng)用,描述了其基本性能及在姿態(tài)測量系統(tǒng)中的硬件連接和軟件設(shè)計(jì),重點(diǎn)討論了利用單片機(jī)I/O接口模擬SPI操作以及操作指令的具體實(shí)現(xiàn)等問題。
中圖分類號: TP212
文獻(xiàn)標(biāo)識碼: 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加速度計(jì)、陀螺儀、磁強(qiáng)計(jì)等慣性器件研制的微型姿態(tài)測量系統(tǒng)具有體積小、價(jià)格低、功耗低、抗沖擊力強(qiáng)等優(yōu)點(diǎn),廣泛應(yīng)用于現(xiàn)代武器制導(dǎo)系統(tǒng)、人體姿態(tài)測量系統(tǒng)、無人機(jī)飛行控制系統(tǒng)等方面。微型姿態(tài)測量系統(tǒng)需要將傳感器信息、控制信息等資料進(jìn)行存儲以用于后期的數(shù)據(jù)分析與處理,大量信息的存儲需求使得大容量的存儲芯片在系統(tǒng)中的使用變得更加必要[1-3]。Flash存儲器因其存儲容量大、掉電數(shù)據(jù)不丟失以及可多次擦寫等優(yōu)點(diǎn)在軍事、商業(yè)、工業(yè)等需要進(jìn)行信息存儲的多種操作系統(tǒng)中發(fā)揮著重要作用[4-8]。AT45DB系列Flash存儲器是ATMEL公司生產(chǎn)的串行接口可編程閃速存儲器,具備操作方便、數(shù)據(jù)存儲量大、安全性好、封裝尺寸小、集成度高、功耗低等優(yōu)點(diǎn),幾乎無需外接元器件即可與單片機(jī)或微處理器進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)存儲[9-10]。本文以MEMS姿態(tài)測量系統(tǒng)中Flash存儲芯片單元AT45DB321D為例,闡述了存儲芯片與微處理器的硬件接口電路、軟件操作流程以及I/O口模擬SPI協(xié)議的具體程序?qū)崿F(xiàn),是對Flash存儲器在系統(tǒng)信息資料存儲設(shè)計(jì)方面的有益探討。

1 AT45DB321D芯片介紹
    AT45DB321D是串口可編程Flash芯片,目前主要有MLF、SOIC、CARD、TSOP 4種封裝形式。本文選用的芯片封裝形式為SOIC,管腳簡單,連接方便。AT45DB321D中數(shù)據(jù)按頁存放,主存共8 192頁,每頁528 B,共32 MB容量,存放在主存中的數(shù)據(jù)掉電不丟失。除主存以外,該芯片還有2個(gè)容量為528 MB的數(shù)據(jù)緩存,可暫存一些臨時(shí)數(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系列單片機(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ù)信號被采集到微處理器C8051F中后,利用基于SPI協(xié)議的無線數(shù)據(jù)傳輸模塊將數(shù)據(jù)上傳到上位機(jī)進(jìn)行數(shù)據(jù)融合姿態(tài)解算,同時(shí)將數(shù)據(jù)存儲到存儲芯片中,以應(yīng)用于之后的仿真、計(jì)算、數(shù)值分析。存儲器在整個(gè)系統(tǒng)中的連接如圖1中微存儲器所示。


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

    AT45DB321D數(shù)據(jù)傳輸采用SPI格式,其外圍電路簡單,無論單片機(jī)是否有SPI接口,均可與其連接。若單片機(jī)有SPI接口,存儲器讀寫程序相對簡單;若沒有SPI接口,可用軟件仿真SPI接口與存儲器通信。在本系統(tǒng)中,數(shù)據(jù)傳輸模塊已占用微處理器的SPI接口,所以存儲操作用I/O口模擬SPI協(xié)議來實(shí)現(xiàn)數(shù)據(jù)存儲。圖2為該芯片應(yīng)用于姿態(tài)測量系統(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系列存儲器僅支持SPI模式0和3。在這兩種模式下,SCK信號上升沿觸發(fā)數(shù)據(jù)輸入,下降沿觸發(fā)數(shù)據(jù)輸出,如圖3所示。二者的區(qū)別是SCK信號的起始電平不同。在本系統(tǒng)中采用SPI模式0來實(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為存儲器的片選信號,P2.0為存儲器時(shí)鐘信號,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ì)
    存儲芯片與微處理器之間的數(shù)據(jù)傳輸包括數(shù)據(jù)讀和數(shù)據(jù)寫操作,存儲器配置片選管腳CS使能,由串行時(shí)鐘(SCK)對讀寫進(jìn)行控制,執(zhí)行微處理器的指令,通過串行輸出(SO)和串行輸入(SI)進(jìn)行數(shù)據(jù)讀寫操作。
3.3.1 程序指令實(shí)現(xiàn)
    AT45DB321D的數(shù)據(jù)命令格式是在SPI總線上傳輸8 bit操作碼后,再輸入13 bit頁地址和9 bit緩存器地址或指定頁起始地址,如圖4所示。因給出的頁面地址和起始地址都是2 B的int數(shù)據(jù)類型,共32 bit數(shù)據(jù),存儲器并不識別,所以需要進(jìn)行移位操作,使所傳輸?shù)捻撁娴刂泛推鹗嫉刂肥谴鎯ζ髯R別的地址碼。本文首先將包含13 bit頁地址的字節(jié)左移1位,使其最低邊位閑置,完成存儲器識別的頁地址操作;然后將包含9 bit緩存器或起始地址的字節(jié)右移8 bit后,余下的最高字節(jié)加到左移后閑置的最低位地址上,同時(shí)低字節(jié)的8 bit地址保持,通過Out_Word和Out_Byte兩個(gè)指令依次將經(jīng)過移位操作的總共22 bit地址傳輸給存儲器,實(shí)現(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 寫操作
    單片機(jī)寫程序在Silicon laboratories IDE環(huán)境下對程序進(jìn)行編譯燒寫和在線調(diào)試。對該芯片的寫操作有兩種方式:一種是直接寫指令,通過微處理器模擬SPI移位寄存器直接向存儲芯片指定頁的指定地址寫數(shù)據(jù)。在這種方式下,要存儲一段連續(xù)的數(shù)據(jù)必須用一個(gè)循環(huán)來實(shí)現(xiàn),故執(zhí)行時(shí)間較長。另一種方式是先把指定數(shù)據(jù)依次通過移位寄存器存儲到緩存器1,在寫完緩存后一次寫到Flash指定頁中去,通過緩存間接完成Flash的數(shù)據(jù)寫操作。本文中采用間接法進(jìn)行數(shù)據(jù)寫操作,寫操作數(shù)據(jù)流程如圖5所示。

 

 

3.3.3 讀操作
    對存儲芯片的讀操作也分為兩種方式:可以直接從Flash中將給定起始頁的數(shù)據(jù)連續(xù)讀到微處理器中,也可以通過將指定頁數(shù)據(jù)傳到緩存間接讀取。本系統(tǒng)讀操作采用間接方式,先把Flash指定頁數(shù)據(jù)依次通過移位寄存器存儲到緩存器1,再通過緩存間接完成Flash的數(shù)據(jù)讀操作,整個(gè)數(shù)據(jù)讀取流程如圖6所示。

3.4 存儲數(shù)據(jù)分析
    通常數(shù)據(jù)按照指定數(shù)據(jù)協(xié)議在存儲器中按照二進(jìn)制格式表示,處理器先對數(shù)據(jù)進(jìn)行歸一、轉(zhuǎn)換等操作,使之變成符合使用要求的數(shù)據(jù),再對數(shù)據(jù)進(jìn)行分析處理。本姿態(tài)測量系統(tǒng)中某次測量的傳感器數(shù)據(jù)和姿態(tài)數(shù)據(jù)如圖7所示,后期數(shù)據(jù)處理采用Kalman濾波算法對姿態(tài)數(shù)據(jù)進(jìn)行運(yùn)算處理。

    本文主要介紹了大容量Flash存儲器AT45DB321D在姿態(tài)測量系統(tǒng)中的應(yīng)用,闡述了該存儲器與單片機(jī)的硬件連接與軟件實(shí)現(xiàn),重點(diǎn)對模擬SPI協(xié)議和數(shù)據(jù)操作指令的具體實(shí)現(xiàn)進(jìn)行了討論。文中設(shè)計(jì)了程序模擬實(shí)現(xiàn)SPI協(xié)議,解決了系統(tǒng)自帶SPI接口被占用時(shí)的數(shù)據(jù)傳輸問題;采用了移位操作將頁面地址和起始地址轉(zhuǎn)換為存儲器可識別的數(shù)據(jù)命令格式,實(shí)現(xiàn)了數(shù)據(jù)的讀寫操作。該系列存儲芯片具有存取速度快、可靠性高、數(shù)據(jù)有效時(shí)間長等優(yōu)點(diǎn),在計(jì)算機(jī)外部設(shè)備、通信設(shè)備、自動化控制和各種消費(fèi)電子產(chǎn)品中都將會有越來越廣泛的應(yīng)用。提供的程序全部經(jīng)過調(diào)試,運(yùn)行穩(wěn)定可靠,可重復(fù)操作性強(qiáng)。
參考文獻(xiàn)
[1] 朱榮,周兆英.基于MEMS的姿態(tài)測量系統(tǒng)[J].測控技術(shù),2002,21(10):6-9.
[2] 陳新雋,劉曉平,戴若梨,等.多MEMS傳感器的嵌入式姿態(tài)測量系統(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] 陳穎.存儲器AT45DB161及其在安全監(jiān)控記錄裝置中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2009(2):51-54.
[7] 范愛華,周越.電動車測速報(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].自動化技術(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.

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