《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > SPI串行Data Flash在MEMS姿態(tài)測(cè)量系統(tǒng)中的應(yīng)用
SPI串行Data Flash在MEMS姿態(tài)測(cè)量系統(tǒng)中的應(yīng)用
來(lái)源:電子技術(shù)應(yīng)用2013年第8期
翟瑞永1,張文棟1,周兆英2,桑勝波1,李朋偉1,孫其瑞2
1.太原理工大學(xué) 微納系統(tǒng)研究中心,山西 太原030024; 2.清華大學(xué) 精密儀器與機(jī)械學(xué)系,北京100084
摘要: 基于MEMS傳感器的姿態(tài)測(cè)量系統(tǒng)以體積小、功耗低、實(shí)時(shí)性好、方便使用等優(yōu)點(diǎn)而得到廣泛應(yīng)用,傳感器信息除用于實(shí)時(shí)處理進(jìn)行姿態(tài)解算以外,更需要長(zhǎng)時(shí)間保存以達(dá)到校對(duì)、仿真、數(shù)值分析等多種用途。針對(duì)大容量存儲(chǔ)在實(shí)際使用中疑難較多的問(wèn)題,主要介紹了大容量Flash存儲(chǔ)器AT45DB321D在姿態(tài)測(cè)量系統(tǒng)中的應(yīng)用,描述了其基本性能及在姿態(tài)測(cè)量系統(tǒng)中的硬件連接和軟件設(shè)計(jì),重點(diǎn)討論了利用單片機(jī)I/O接口模擬SPI操作以及操作指令的具體實(shí)現(xiàn)等問(wèn)題。
中圖分類號(hào): TP212
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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)測(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.

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