低功耗智能傳感器的設計(圖)

圖1 系統原理圖
1、系統軟件
系統的軟件流程圖如圖2所示。
圖2 系統軟件流程圖
2、初始化
初始化部分主要完成以下功能。
負責系統時鐘的初始化,使系統工作頻率為DCO指定的標準8MHz時鐘。
配置系統的端口,由于芯片引腳功能復用,這一過程就顯得尤為重要。通過設定SD16AE和SD16INCTL0,使得P1.0和P1.1的工作狀態分別為A0+、A0-。設定P2.6、P2.7為通用IO口,其中P2.6用作調整PGA的控制信號,P2.7用作數據傳輸的通道。
初始化系統的AD轉換器,采用系統內部的參考電壓,由于輸入頻率最多只能為1.1MHz,故將系統主頻率8分頻輸入。MSP430F2013中ADC沒有輸入緩存,在緩存模式選擇中關閉緩存。系統用來測量連續變化的物理量,設定系統為連續轉換模式。
3、測量
測量時打開中斷,當有測量結果產生時,產生中斷,中斷標志位置位,測量結果存放在轉換結果寄存器中,當從轉換結果寄存器中讀出測量結果后,中斷標志位自動復位。所以讀取轉換結果時只需查詢中斷標志位即可。
測量結果濾波采用中位值平均濾波法,每個測量值采樣10次,去除最大值和最小值,其余8個值取算術平均值。
這種算法能夠有效地克服因偶然因素引起的波動干擾,尤其適用于溫度、液位等變化緩慢的物理量。
測量時使用內部參考電壓,測量信號的電壓輸入范圍為0~500mV,當輸入信號滿量程輸入,模數轉換輸出的最高位不為1時,可進行信號放大,最大放大倍數可達32。當輸入信號的放大倍數為N時,輸入信號的范圍會相應地縮小為原來的1/N。例如,當選擇PGA的放大倍數為2倍時,測量信號的電壓輸入范圍為0~250mV。
整個測量過程用偽代碼表示如下。
int measure (void)
{ int i; if ( SET==1 ) { 調整增益;}For (i=0;i<10;i++){ 等待轉換結果產生; 讀取并保存轉換結果;}累加轉換結果;查找最 大值與最小值;中位值平均濾波;返回測量結果;}
4、數據傳輸
數據發送按幀發送,幀結構如圖3所示。
圖3 數據幀結構圖
每幀數據包括同步碼,AD轉換結果和檢驗碼,幀的同步可以采用特定的同步碼或者間隙同步,這里采用第二種方法。在數據幀發送時,首先拉高數據發送線,拉高的時間為發送16個數據位的時間,幀頭高電平的間隙用作數據幀的同步。
奇偶校驗碼作為一種檢錯碼雖然簡單,但是漏檢率太高。在計算機網絡和數據通信中用得最廣泛的檢錯碼,是一種漏檢率低得多也便于實現的循環冗余碼CRC。CRC生成多項式階數越高,誤判的概率越小。本文采用CCITT-16,其生成多項式為g(x)=x16+x15+x5+1。實現CRC的方法一般有兩種:直接計算和查表。由于查表法至少需要1kb的空間用來存儲表值,所以這里采用直接計算的方法。
數據傳輸時使用單線串行輸出,用口線模擬串行發送,發送字節時在口線上依次發送如圖4所示數據(數據為0時拉低口線電平,數據為1時拉高口線電平),位持續時間根據波特率計算,本應用中設定波特率為9600b/s。當沒有數據發送時,輸出口線上維持高電平。
圖4 發送字節的順序示意圖
數據發送最后通過光耦隔離,使得現場和數據的輸出隔離,同時可以根據后級系統輸入的需要簡單地更改電路。
文章版權歸西部工控xbgk所有,未經許可不得轉載。