接上文繼續(xù):
2 MS5540C的程序設(shè)計(jì)
2.1 MS5540C的工作原理
MS5540C包括一個(gè)壓阻式的傳感器和傳感器接口電路。它的主要功能是將壓力傳感器輸出的未補(bǔ)償?shù)哪M電壓轉(zhuǎn)換成16位數(shù)字值,通過(guò)接口電路可以將16位數(shù)字值輸出。共有2個(gè)16位數(shù)字值需要輸出,分別是用于氣壓和溫度測(cè)量結(jié)果計(jì)算的D1和D2。這兩個(gè)16位數(shù)據(jù)結(jié)果是非常粗糙的,必須通過(guò)外部處理器進(jìn)行補(bǔ)償計(jì)算,才能得到比較精確的結(jié)果。
每個(gè)模塊都會(huì)在兩個(gè)溫度和兩個(gè)氣壓值下進(jìn)行工廠校準(zhǔn),得到6個(gè)補(bǔ)償系數(shù)C1~C6,這6個(gè)補(bǔ)償系數(shù)共64 bit,以4個(gè)16 bit的字形式儲(chǔ)存在模塊內(nèi)的PROM中。因此,在進(jìn)行補(bǔ)償計(jì)算前,必須先讀出這6個(gè)補(bǔ)償系數(shù)。關(guān)于補(bǔ)償系數(shù)在4個(gè)16位字中的排列方式,請(qǐng)參看文獻(xiàn)的圖4。
2.2 MS5540C的軟件設(shè)計(jì)
使用帶有SPI接口的MCU與MS5540C接口,將會(huì)使程序設(shè)計(jì)變得簡(jiǎn)單。我們以帶有SPI接口的51單片機(jī)STCl2LE5A60S2為例來(lái)介紹MS5540C的軟件編程。
由前所述,4個(gè)16位的補(bǔ)償數(shù)據(jù)及2個(gè)分別為氣壓和溫度傳感器轉(zhuǎn)換而來(lái)的16位結(jié)果數(shù)據(jù)都需要通過(guò)SPI來(lái)讀取。關(guān)于這些數(shù)據(jù)的讀取,Intersema規(guī)定了一套簡(jiǎn)單的通訊協(xié)議,協(xié)議要求處理要先發(fā)命令數(shù)據(jù),然后才能讀取16位數(shù)據(jù)。命令數(shù)據(jù)包括起始位,設(shè)置位和停止位,各個(gè)數(shù)據(jù)有不同的設(shè)置位,另外為了復(fù)位MS5540C,Intersema還提供了一個(gè)用于reset模塊的命令,關(guān)于具體的通訊協(xié)議,請(qǐng)參考文獻(xiàn)。
數(shù)據(jù)定義:
在程序中調(diào)用上述的函數(shù),編程非常方便。讀出的2個(gè)16位數(shù)據(jù)經(jīng)過(guò)文獻(xiàn)1提供的校準(zhǔn)公式進(jìn)行校準(zhǔn)后,得到溫度和氣壓的較為精確的測(cè)量結(jié)果,其中溫度的結(jié)果精確到0.1℃,氣壓精確到0.1mbar。
因?yàn)?/span>MS5540C的ADC為16位,溫度測(cè)量分辨率可以到0.01℃,對(duì)于-40~85℃之間的測(cè)量范圍,我們可以將文獻(xiàn)中溫度校準(zhǔn)公式:
TEMP=200+dT*(C6+50)/1024
修改為
TEMP=2000+dT*(C6+50)*10/1024
這樣得到的結(jié)果可以使分辨率達(dá)到0.01℃。
程序設(shè)計(jì)需要注意兩點(diǎn):
1)MCU發(fā)送命令和讀取數(shù)據(jù)時(shí)SPI工作方式是不一樣的,主要是SCLK采樣沿的設(shè)置不同,具體參考文獻(xiàn);
2)由于在發(fā)送采樣溫度和氣壓的命令之后,需要等大約35 ms左右,才能讀取到采樣數(shù)據(jù),所以在發(fā)送命令后,需要等待之后再讀取。