文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)08-0037-03
利用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ù),。緩存讀寫方便迅速,,讀寫操作多通過緩存完成。
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)單;若沒有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í)行微處理器的指令,,通過串行輸出(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地址保持,,通過Out_Word和Out_Byte兩個(gè)指令依次將經(jīng)過移位操作的總共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ì)該芯片的寫操作有兩種方式:一種是直接寫指令,,通過微處理器模擬SPI移位寄存器直接向存儲(chǔ)芯片指定頁(yè)的指定地址寫數(shù)據(jù),。在這種方式下,要存儲(chǔ)一段連續(xù)的數(shù)據(jù)必須用一個(gè)循環(huán)來(lái)實(shí)現(xiàn),,故執(zhí)行時(shí)間較長(zhǎng),。另一種方式是先把指定數(shù)據(jù)依次通過移位寄存器存儲(chǔ)到緩存器1,在寫完緩存后一次寫到Flash指定頁(yè)中去,,通過緩存間接完成Flash的數(shù)據(jù)寫操作,。本文中采用間接法進(jìn)行數(shù)據(jù)寫操作,寫操作數(shù)據(jù)流程如圖5所示。
3.3.3 讀操作
對(duì)存儲(chǔ)芯片的讀操作也分為兩種方式:可以直接從Flash中將給定起始頁(yè)的數(shù)據(jù)連續(xù)讀到微處理器中,,也可以通過將指定頁(yè)數(shù)據(jù)傳到緩存間接讀取,。本系統(tǒng)讀操作采用間接方式,先把Flash指定頁(yè)數(shù)據(jù)依次通過移位寄存器存儲(chǔ)到緩存器1,,再通過緩存間接完成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ù)傳輸問題;采用了移位操作將頁(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)過調(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.