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