崔璨++鄧圣++代航陽(yáng)++張楊++楊泰波
摘 要:MS5611是瑞士MEAS推出的新一代高分辨率的氣壓傳感器,廣泛應(yīng)用于移動(dòng)高度計(jì)/氣壓計(jì)系統(tǒng)、自行車電腦、智能手表、GPS、智能手機(jī)、無(wú)人機(jī)高度測(cè)量系統(tǒng)等。MS5611體積小,內(nèi)部集成了氣壓傳感器、溫度傳感器、24位ADC、128位PROM、數(shù)字濾波器、SPI和I2C接口。針對(duì)MS5611的SPI接口,選用輸入輸出資源豐富,配置靈活的FPGA作為微控制器,并設(shè)計(jì)相應(yīng)的SPI接口電路;采用Verilog編寫具有MS5611五種指令的SPI接口模塊,并進(jìn)行了時(shí)序仿真驗(yàn)證。仿真結(jié)果表明,基于FPGA的SPI接口模塊能很好地對(duì)MS5611進(jìn)行控制,并實(shí)現(xiàn)數(shù)據(jù)的讀寫,在基于MS5611的氣壓測(cè)量設(shè)備上有很好應(yīng)用。
關(guān)鍵詞:氣壓測(cè)量 MS5611 SPI 時(shí)序仿真
中圖分類號(hào):TP361.1 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2017)01(a)-0031-04
Design of SPI for MS5611
Cui Can Deng Sheng Dai Hangyang Zhang Yang Yang Taibo
(Nuclear Power Institute of China, Chengdu Sichuan, 610094, China)
Abstract:The MS5611, which is a new generation of high resolution pressure sensor from MEAS(Measurement Specialties) Switzerland, is widely used in mobile altimeter/barometer system, bicycle computer, smart watch, GPS(Global Positioning System), smart phone, unmanned aerial vehicle height detection system and so on. The MS5611 is small, and pressure sensor, temperature sensor, 24 bit ADC (Analog-Digital Converter), 128 bit PROM (Programmable Read Only Memory), digital filter, SPI (Serial Peripheral Interface) and I2C(Inter-Integrated Circuit) interface are included in. The FPGA (Field-Programmable Gate Array), which has abundant input/output resource and can be configured neatly, is used as the microcontroller for the SPI of MS5611, and corresponding SPI circuit is designed also. The SPI module based on five commands of MS5611 is designed with Verilog, and it is timing simulated for verification. The simulation result presents that SPI module based on FPGA can control MS5611 well, and realize data reading and writing. It can be applied well in pressure measurement device based on MS5611.
Key Words:Pressure measurement; MS5611; SPI; Timing simulation
氣壓和溫度一直都是很多實(shí)驗(yàn)室和工業(yè)生產(chǎn)中的重要環(huán)境參數(shù),需要對(duì)其進(jìn)行實(shí)時(shí)檢測(cè),以實(shí)現(xiàn)對(duì)實(shí)驗(yàn)室環(huán)境和工業(yè)生產(chǎn)環(huán)境的控制,達(dá)到實(shí)驗(yàn)預(yù)想效果,生產(chǎn)出高品質(zhì)產(chǎn)品[1]。例如:在機(jī)房設(shè)備監(jiān)測(cè)系統(tǒng)中,通過氣壓傳感器對(duì)氣壓進(jìn)行監(jiān)測(cè),當(dāng)波動(dòng)較大時(shí),可通過短信通知機(jī)房負(fù)責(zé)人[2]。
而對(duì)于登山愛好者來(lái)說,非常關(guān)心海拔高度,可通過測(cè)量氣壓來(lái)計(jì)算海拔高度,其測(cè)量精度遠(yuǎn)比全球定位系統(tǒng)(Glo bal Positioning System, GPS)高,在原有GPS基礎(chǔ)上增加氣壓測(cè)量功能,可使三維定位更加準(zhǔn)確。另外,在使用導(dǎo)航時(shí),GPS信號(hào)常被地形、地物遮擋,導(dǎo)致精度大大降低,甚至不能使用。尤其在高樓林立的城區(qū)和植被茂密的林區(qū),GPS有效率僅為60%,為彌補(bǔ)這一不足常常采用氣壓傳感器輔助測(cè)量海拔高度[3]。
如今被廣泛應(yīng)用的小型無(wú)人機(jī),具有成本低廉、體積小、重量輕、機(jī)動(dòng)性強(qiáng)、續(xù)航時(shí)間長(zhǎng)等特點(diǎn),而其高度測(cè)量系統(tǒng)就是通過海拔高度和壓力大小關(guān)系計(jì)算出來(lái)[4-5]。
MS5611作為新一代高分辨率的氣壓傳感器,它具有體積小、重量輕等特點(diǎn),使其廣泛應(yīng)用于移動(dòng)高度計(jì)/氣壓計(jì)系統(tǒng)、自行車電腦、智能手表、GPS、智能手機(jī)、無(wú)人機(jī)高度測(cè)量系統(tǒng)等。它具有串行外設(shè)接口(Serial Peripheral Interface, SPI)和I2C總線兩種數(shù)字通訊接口,使它更容易與微控制器進(jìn)行數(shù)據(jù)交換,該文針對(duì)MS5611的SPI接口,采用現(xiàn)場(chǎng)可編輯邏輯陣列(Field-Programmable Gate Array, FPGA)實(shí)現(xiàn)對(duì)其數(shù)據(jù)的讀寫控制,并對(duì)設(shè)計(jì)的SPI接口模塊進(jìn)行了時(shí)序仿真驗(yàn)證。
1 硬件設(shè)計(jì)
1.1 MS5611介紹
MS5611體積小,僅為5.0 mm×3.0 mm×1.0 mm,內(nèi)部集成有氣壓傳感器、溫度傳感器、24位模數(shù)轉(zhuǎn)換器(Analog-Digital Converter,ADC)、128位可編程只讀存儲(chǔ)器(Programmable Read Only Memory,PROM)、數(shù)字濾波器、SPI和I2C接口。其分辨率可達(dá)0.012mbar,用于高度測(cè)量時(shí),精度可達(dá)10 cm。MS5611同時(shí)可以測(cè)量溫度并對(duì)壓力進(jìn)行溫度補(bǔ)償。其主要技術(shù)指標(biāo)見表1。
1.2 微控制器
MS5611集成有SPI和I2C數(shù)字接口,可使用FPGA、單片機(jī)等為微控制器,實(shí)現(xiàn)對(duì)MS5611的控制。選用本身具有SPI或I2C接口的微控制器可縮短開發(fā)周期,但這些微控制器本身資源固定,所以靈活性較差。
FPGA是ASIC基礎(chǔ)上發(fā)展起來(lái)的,但它又克服了ASIC靈活性差的缺點(diǎn)。其端口資源豐富,并且可以根據(jù)用戶的需要進(jìn)行配置,在高速數(shù)據(jù)采集、數(shù)字通信、編碼譯碼方面有著廣泛應(yīng)用。
考慮到MS5611本身供電電壓范圍為-0.3~4.0 V,該文選用Altera公司的FPGA芯片EP1C6Q240C8作為微控制器,其邏輯電平為3.3 V,可與MS5611匹配,在FPGA內(nèi)部設(shè)計(jì)針對(duì)MS5611的SPI接口模塊,實(shí)現(xiàn)對(duì)其數(shù)據(jù)讀寫,同時(shí)可以在FPGA內(nèi)設(shè)計(jì)其他數(shù)字通訊接口,如RS485等[6],實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程傳輸。
FPGA必要外圍電路包括:下載電路、外部時(shí)鐘、電源。如圖1所示,存儲(chǔ)芯片EPCS1作為FPGA的程序存儲(chǔ),上電后自動(dòng)加載程序。外部時(shí)鐘采用40 MHz的有源晶振,其供電壓為3.3 V。整個(gè)系統(tǒng)需要的電壓為1.5 V和3.3 V,其中1.5 V由1117~1.5 V產(chǎn)生,3.3 V由1117~3.3 V產(chǎn)生。
1.3 SPI接口電路
該文選用MS5611的SPI接口進(jìn)行數(shù)據(jù)通訊。SPI是一種高速的,全雙工,同步的通信總線,只占用四根線。它采用主從方式工作,由一個(gè)主設(shè)備和多個(gè)從設(shè)備構(gòu)成,F(xiàn)PGA作為主設(shè)備,MS5611作為從設(shè)備,接口電路如圖2所示。供電電壓選擇與FPGA一致的3.3 V,其中SCLK為時(shí)鐘信號(hào),PS為通訊模式選擇信號(hào),拉高選擇I2C模式,拉低選擇SPI模式;CSB為片選信號(hào),對(duì)從設(shè)備進(jìn)行選擇,低有效;SDO為串行數(shù)據(jù)輸出總線,SDI為串行數(shù)據(jù)輸入總線。
2 軟件設(shè)計(jì)
2.1 控制指令
MS5611具有5種基本的控制指令:復(fù)位、讀取PROM數(shù)據(jù)、D1轉(zhuǎn)換、D2轉(zhuǎn)換、讀取ADC結(jié)果。
復(fù)位:復(fù)位指令應(yīng)在芯片上電時(shí)發(fā)送以確保PROM中的數(shù)據(jù)能夠順利的加載,同時(shí)可在未知狀態(tài)下復(fù)位芯片的只讀存儲(chǔ)器(Read Only Memory ,ROM)。
讀取PROM數(shù)據(jù):PROM是一個(gè)128位的存儲(chǔ)器,存儲(chǔ)了6個(gè)出廠時(shí)的標(biāo)定參數(shù)C1~C6,6個(gè)參數(shù)用于壓力補(bǔ)償和溫度補(bǔ)償,此指令在復(fù)位完成后發(fā)出,之后返回16位數(shù)據(jù)。
D1、D2轉(zhuǎn)換:此指令用于啟動(dòng)轉(zhuǎn)換未補(bǔ)償壓力(D1)和未補(bǔ)償溫度(D2)。
ADC讀?。涸贒1轉(zhuǎn)換或D2轉(zhuǎn)換后發(fā)出,分別返回24位的壓力或溫度數(shù)據(jù)。
以上每種指令均是8位,指令值如表2所示。
2.2 SPI接口模塊
SPI總線中所有數(shù)據(jù)均是通過串行時(shí)鐘SCLK進(jìn)行同步,每個(gè)時(shí)鐘脈沖傳送1位數(shù)據(jù)[7]。時(shí)鐘的相位(CPHA)和極性(CPOL)的不同組合可以讓SPI總線工作在4種不同的模式下。
模式0:CPHA=0,SCLK空閑狀態(tài)時(shí)為低電平;CPOL=0,在CSB有效后SCLK的第一個(gè)周期進(jìn)行采樣。
模式1:CPHA=0,SCLK空閑狀態(tài)時(shí)為低電平;CPOL=1,在CSB有效后SCLK的第二個(gè)周期進(jìn)行采樣。
模式2:CPHA=1,SCLK空閑狀態(tài)時(shí)為高電平;CPOL=0,在CSB有效后SCLK的第一個(gè)周期進(jìn)行采樣。
模式3:CPHA=1,SCLK空閑狀態(tài)時(shí)為高電平;CPOL=1,在CSB有效后SCLK的第二個(gè)周期進(jìn)行采樣。
SPI可工作在主模式或從模式下。在主模式,每一位數(shù)據(jù)的發(fā)送/接收需要一個(gè)時(shí)鐘作用;而在從模式下,每一位數(shù)據(jù)都是在接收到時(shí)鐘信號(hào)之后才發(fā)送/接收[7]。
MS5611作為從機(jī),支持工作在模式0和模式3,該文選擇在工作在模式3下。FPGA作為主機(jī),內(nèi)部設(shè)計(jì)的SPI接口模塊為模式3的主模式。
FPGA內(nèi)部設(shè)計(jì)SPI模塊采用Quartus II的verilog編寫,如圖3所示的流程進(jìn)行,首先將SPI的所有總線初始化,SCLK、CSB、SDO、SDI均拉高。根據(jù)并行輸入8位數(shù)據(jù)(表2所示指令)判斷10種狀態(tài),不同狀態(tài)下所發(fā)出的時(shí)鐘周期不同,ADC讀取和PROM讀取指令因?yàn)榉謩e要返回24位數(shù)據(jù)和16位數(shù)據(jù),時(shí)鐘周期分別為32和24,其他指令均是8個(gè)時(shí)鐘周期,SCLK上的時(shí)鐘信號(hào)由晶振分頻后產(chǎn)生。而片選信號(hào)CSB均拉低,指令碼數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)后通過SDI輸入到MS5611,返回的串行數(shù)據(jù)通過SDO輸入到FPGA再轉(zhuǎn)化為并行數(shù)據(jù)后存儲(chǔ)。
3 仿真驗(yàn)證
對(duì)于設(shè)計(jì)完成的SPI接口模塊需進(jìn)行時(shí)序仿真,以驗(yàn)證其控制時(shí)序是否能滿足MS5611的SPI接口。
MS5611的SPI總線可工作在模式0和模式3,該文設(shè)計(jì)的SPI接口選擇工作在模式3下。筆者對(duì)MS5611的五種指令均進(jìn)行了時(shí)序仿真,結(jié)果與MS5611的技術(shù)手冊(cè)上一致,圖4列舉出了MS5611的ADC讀取功能進(jìn)行的時(shí)序仿真結(jié)果。其中,datain[7:0]為指令碼并行數(shù)據(jù),ADC讀取指令碼0x00并行輸入;spido為FPGA的串行數(shù)據(jù)輸出,即SDI,仿真圖4中輸出指令碼的0x00的串行數(shù)據(jù);spidi為FPGA的串行數(shù)據(jù)輸入,即SDO信號(hào),從時(shí)鐘信號(hào)SCLK的第9個(gè)上升沿開始到32個(gè)上升沿為24位ADC轉(zhuǎn)換數(shù)據(jù)結(jié)果,第9個(gè)時(shí)鐘上升沿為數(shù)據(jù)最高位。dataout[23:0]為ADC讀取數(shù)據(jù)并行輸出結(jié)果,結(jié)果為0x7fffff。spics為CSB片選信號(hào),指令發(fā)出和讀取過程中拉低。spiclk為SCLK時(shí)鐘信號(hào),ADC讀取共產(chǎn)生32個(gè)時(shí)鐘周期,上升沿進(jìn)行數(shù)據(jù)讀取。
4 結(jié)語(yǔ)
該文在FPGA內(nèi)設(shè)計(jì)適用于MS5611的SPI接口,對(duì)MS5611的五種指令進(jìn)行了時(shí)序仿真,具體列舉ADC讀取功能進(jìn)行了介紹,仿真結(jié)果表明文中設(shè)計(jì)的基于FPGA的SPI接口能很好地對(duì)MS5611進(jìn)行控制,并實(shí)現(xiàn)數(shù)據(jù)的讀寫,在基于MS5611的氣壓測(cè)量設(shè)備上能有很好應(yīng)用。
參考文獻(xiàn)
[1] 賴貴川,黃華偉.基于MS5611-01BA01的高精度氣壓和溫度檢測(cè)系統(tǒng)設(shè)計(jì)[J].四川理工學(xué)院學(xué)報(bào),2012,25(5):33-36.
[2] 陳新興,尤宇星.機(jī)房設(shè)備監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].福建電腦,2015(11):123-132.
[3] 朱韶紅,王玉泉.危險(xiǎn)品物流監(jiān)控系統(tǒng)中車載終端的研究與設(shè)計(jì)[J].物流技術(shù),2013,32(12):429-432.
[4] 潘銀松,劉天剛,馬澤忠,等.基于MS5611的小型無(wú)人機(jī)高度檢測(cè)系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2015,38(7):22-25.
[5] 楊新湦,高春燕.一種氣壓測(cè)量系統(tǒng)設(shè)計(jì)[J].電子產(chǎn)品世界,2014(10):32-34.
[6] 梁士龍,王力男,楊嘉偉.用FPGA實(shí)現(xiàn)RS-485通信接口芯片[J].系統(tǒng)工程與電子技術(shù),2002,24(4):103-106.
[7] 楊承富,徐志軍.SPI總線接口的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].軍事通信技術(shù),2004,25(2):72-76.