基于ADS1158和DSP的高精度數(shù)據(jù)采集系統(tǒng)設(shè)計
2 軟件設(shè)計
本方案采用的是Microchip公司的數(shù)字信號控制器dsPIC30F4011,主要利用其強大的計算能力和高速的指令周期,保證控制器能夠快速地響應(yīng)ADS1158的數(shù)據(jù)請求。軟件分為DSP初始化、ADS1158初始化、數(shù)據(jù)讀取、數(shù)據(jù)發(fā)送四部分。
2.1 軟件初始化
定義SystemInitialize()初始化函數(shù),主要工作完成對DSP的定時器、I/O口輸入輸出、SPI、CAN、外部中斷等功能的初始化。定義了ADS1158 Initialize()初始化函數(shù),通過SPI傳輸數(shù)據(jù),完成對ADS1158的初始化。其寄存器地址與值的設(shè)置見表1。本文引用地址:http://m.butianyuan.cn/article/159439.htm
2.2 數(shù)據(jù)讀取與處理
完成上述設(shè)置后,ADS1158即會進(jìn)入自動采集模式,以約100 Hz(16個通道)的頻率進(jìn)行掃描,并且每個通道得到采樣值后會發(fā)送中斷信號至dsPIC30F4011的外部中斷,dsPIC30F4011對外部中斷信號進(jìn)行響應(yīng),讀取當(dāng)前通道采樣值。
根據(jù)ADS1158的數(shù)據(jù)組成定義,一個結(jié)果值由三個字節(jié)組成,第一個字節(jié)為通道號信息,第二、三個字節(jié)由16位的數(shù)據(jù)組成(如果是ADS12 58的話,數(shù)據(jù)由三個字節(jié)組成)。
對三個數(shù)據(jù)進(jìn)行解析,可以得到當(dāng)前通道的采樣值。其程序流程如圖6所示。
以上數(shù)據(jù)讀取都是通過SPI實現(xiàn)的。在程序結(jié)構(gòu)的設(shè)計中,建議數(shù)據(jù)讀取和數(shù)據(jù)解析以及數(shù)據(jù)換算不要放在外部中斷函數(shù)里面,在中斷函數(shù)里置標(biāo)志位,返回主程序處理。dsPIC30F4011的指令周期以及強大的計算能力,足以支持所有通道的數(shù)據(jù)讀取以及數(shù)據(jù)處理功能。
2.3 通信功能
本方案采用CAN總線通信。與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實時性和靈活性。系統(tǒng)自動以100 Hz的頻率向外發(fā)送數(shù)據(jù),為了能夠獲得高精度的100 Hz,同時不干擾其他程序韻正常運行,下位機采用了設(shè)定系統(tǒng)時基的機制。下位機軟件在系統(tǒng)內(nèi)部定義了一個1 ms的時基(選擇定時器1為1ms溢出產(chǎn)生中斷),還有一個發(fā)送時基累加寄存器。
在時基(定時器1)中斷函數(shù)中,對發(fā)送時基累加寄存器加1,并對該寄存器進(jìn)行判斷,如果大于9,則清零寄存器,置標(biāo)志位,回主程序執(zhí)行發(fā)送數(shù)據(jù)函數(shù)。此外,可以定義很多其他功能的時基累加寄存器,通過判斷累加器的值,來實現(xiàn)程序的步進(jìn)運轉(zhuǎn)。
3 結(jié)論
本方案構(gòu)建的數(shù)據(jù)采集系統(tǒng)具有很強的實際應(yīng)用價值,文中介紹到的硬件組成以及關(guān)鍵電路的設(shè)計和軟件設(shè)計思路等,對開發(fā)者都具有很強的參考意義。
評論