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