摘要:介紹了以TMS320F2812" title="TMS320F2812">TMS320F2812和ADS8364" title="ADS8364">ADS8364為核心的智能節(jié)點(diǎn)" title="智能節(jié)點(diǎn)">智能節(jié)點(diǎn)設(shè)計(jì),該節(jié)點(diǎn)不僅可以進(jìn)行數(shù)據(jù)采集,還可以實(shí)現(xiàn)闞值報(bào)警、數(shù)字濾波、FFT變換等功能。并詳細(xì)介紹了本設(shè)計(jì)的工作原理、硬件設(shè)計(jì)以及軟件設(shè)計(jì)。
關(guān)鍵詞:DSP;CAN總線" title="CAN總線">CAN總線:智能節(jié)點(diǎn)
0 引言
在實(shí)際工程應(yīng)用中,經(jīng)常需要對(duì)各種設(shè)備進(jìn)行狀態(tài)監(jiān)測(cè)和故障診斷,首先要對(duì)各傳感器的信號(hào)進(jìn)行采集,為了減輕上位機(jī)的運(yùn)算負(fù)荷,設(shè)計(jì)了一種基于DSP的智能節(jié)點(diǎn),主要用來(lái)實(shí)現(xiàn)信號(hào)采集和FFT變換等功能。
1 硬件設(shè)計(jì)
智能節(jié)點(diǎn)的硬件主要包括DSP處理器、模數(shù)轉(zhuǎn)換器、擴(kuò)展的靜態(tài)存儲(chǔ)器、電平轉(zhuǎn)換芯片、CAN接口驅(qū)動(dòng)、光電耦合輸入和傳感器調(diào)理及電源電路等。
DSP處理器選用TI公司的32位定點(diǎn)高速DSP芯片TMS320F2812。TMS320F28X系列是當(dāng)今世界上最先進(jìn)的32位定點(diǎn)DSP芯片。它不但運(yùn)行速度高,處理功能強(qiáng)大,并且具有豐富的片內(nèi)外圍設(shè)備,便于接口和模塊化設(shè)計(jì)。它既具有數(shù)字信號(hào)處理能力,又具有強(qiáng)大的事件管理能力和嵌入式控制功能,特別適用于有大批量數(shù)據(jù)處理的測(cè)控場(chǎng)合,如工業(yè)自動(dòng)化控制、智能化儀器儀表及電機(jī)伺服控制系統(tǒng)等。采用8級(jí)指令流水線,單周期32×32位MAC功能,最高速度每秒中可執(zhí)行1.50億條指令(150MIPS),保證了控制和信號(hào)處理的快速性和實(shí)時(shí)性。另外MS320F2812片上還集成了豐富的外部資源,包括16路12位ADC、16路PWM輸出、3個(gè)32位通用定時(shí)器、128k的16位FLASH存儲(chǔ)器、18kRAM存儲(chǔ)器,外圍中斷擴(kuò)展模塊(PIE)可支持45個(gè)外圍中斷,并具有McBSP、SPI、SCI和擴(kuò)展的CAN總線等接口。TMS320F2812還支持最大1M的外部存儲(chǔ)器擴(kuò)展。TMS32 0F2812支持C/C++編程語(yǔ)言,其c語(yǔ)言優(yōu)化器的C編譯效率可達(dá)90%,還有虛擬浮點(diǎn)數(shù)學(xué)函數(shù)庫(kù)提供支持,可以大大縮短數(shù)學(xué)運(yùn)算與控制程序的開(kāi)發(fā)周期。
模數(shù)轉(zhuǎn)換器選用TI公司的ADS8364,該芯片是一款6路模擬輸入、16位并行輸出的模數(shù)轉(zhuǎn)換器。6路模擬輸入分為三組(A,B和C),每個(gè)輸入端都有一個(gè)保持信號(hào)來(lái)實(shí)現(xiàn)所有通道的同時(shí)采樣與轉(zhuǎn)換功能,非常適合于多路(多種)采集系統(tǒng)的需要。ADS8364提供了一個(gè)靈活的高速并行接口,可以運(yùn)行在直接尋址、循環(huán)采樣、FIFO等三種模式,每個(gè)通道的輸出數(shù)據(jù)都可直接作為一個(gè)16 bit的字,可以直接與數(shù)字信號(hào)處理器TMS320F2812相連。
由于數(shù)據(jù)采集和FFT變換需要大量數(shù)據(jù)空間,而TMS320F2812片上只有18 k的RAM可供使用,而且分布于5個(gè)不同的區(qū)域,不能滿足使用要求,因此在外部又?jǐn)U展了一片64 k的16位無(wú)等待靜態(tài)存儲(chǔ)器IS61LV6416。
本智能節(jié)點(diǎn)電路設(shè)計(jì)的關(guān)鍵部分是TMS320F2812芯片的最小系統(tǒng)設(shè)計(jì)和ADS8364的接口設(shè)計(jì)。
1.1 TMS320F2812的最小系統(tǒng)設(shè)計(jì)
(1)電源和復(fù)位部分:本設(shè)計(jì)采用外部5 V直流電壓供電。通過(guò)DC/DC器件產(chǎn)生3.3 V的內(nèi)核電壓VDD和1.8 V的I/O電壓VDDIO電壓。電源芯片TPS767D318為雙電源輸出,一路為3.3 V、一路為1.8 V。每路電源的最大輸出電流為1 A。芯片還提供兩個(gè)寬度為200 ms的低電平復(fù)位脈沖。本設(shè)計(jì)的復(fù)位信號(hào)分兩種:上電復(fù)位、手動(dòng)復(fù)位。上電復(fù)位由芯片TPS767D318產(chǎn)生,手動(dòng)復(fù)位由電阻電容組成的電路產(chǎn)生。
(2)時(shí)鐘部分:為DSP芯片提供時(shí)鐘一般有兩種方法。一種是采用晶體,一種是采用外部有源時(shí)鐘芯片。本設(shè)計(jì)采用前者。它利用了DSP芯片內(nèi)部所提供的晶振電路,在DSP芯片的x1和x2之間連接一晶體可啟動(dòng)內(nèi)部振蕩器。
(3)仿真部分:這一部分將作為程序的調(diào)試和燒錄所用。2812芯片提供了5個(gè)標(biāo)準(zhǔn)的JTAG信號(hào)(TRST、TCK、TMS、TDI、TDO)和兩個(gè)仿真引腳(EMU0、EMU1)。
1.2 ADS8364的接口設(shè)計(jì)
ADS8364采用+5V模擬電源(AVDD)和數(shù)字電源(DVDD),而其內(nèi)部的緩沖器采用與TMS320F2812相同的+3.3 V電壓。緩沖器電壓(BVDD)允許直接連接到3 V或5 V電壓系統(tǒng)。TMS320F2812的I/O電壓為+3.3 V,因此,若使用該元件,ADS8364的BVDD必須設(shè)置成3.3 V。
在這個(gè)設(shè)計(jì)中,ADS8364采用的是4 MHz時(shí)鐘。每個(gè)通道的吞吐率最大可達(dá)200 ksps。將ADS的地址線A[2:0]接到TMS320F2812的地址線。當(dāng)A0接到數(shù)字地,A2和A1接到VCC上可迫使ADS8364進(jìn)入周期模式。在這個(gè)模式中,轉(zhuǎn)換器可自動(dòng)對(duì)6個(gè)通道進(jìn)行采樣,并可將數(shù)據(jù)按從A0到C1的順序傳送到輸出端。
將ADS8364的BYTE引腳接到VCC上,可以使能字節(jié)模式。在這個(gè)模式中,要從ADC中正確地讀取數(shù)據(jù),需要對(duì)每個(gè)通道進(jìn)行兩次連續(xù)的讀操作。第一次讀取的是轉(zhuǎn)換數(shù)據(jù)的高位字節(jié),第二次讀取的是低位字節(jié)。假如通道信息要作為數(shù)據(jù)輸出的一部分,那么,應(yīng)將ADS8364的ADD引腳也接到VCC。讀取數(shù)據(jù)時(shí),需要對(duì)ADS8364的每個(gè)通道進(jìn)行三次讀操作。第一次讀取通道和數(shù)據(jù)信息,后兩次分別讀取高位和低位數(shù)據(jù)。
1.3 ADC的初始化操作
觸發(fā)ADS8364的復(fù)位引腳RST可以確保讀指針指向第一個(gè)數(shù)據(jù)位置。作為T(mén)MS320F2812初始化的一部分,由TMS320F2812的通用輸入輸出口GPIOFO提供給ADS8364的引腳RST。當(dāng)系統(tǒng)時(shí)鐘穩(wěn)定后,被觸發(fā)為低電平,從而確保了從ADC輸出的數(shù)據(jù)對(duì)應(yīng)于通道A0、A1、B0、B1、C0、C1的排列。
對(duì)于每一個(gè)轉(zhuǎn)換通道,EOC均是低電平信號(hào)。ADS8364可為T(mén)MS320F2812提供三個(gè)脈沖。每個(gè)脈沖信號(hào)表明一個(gè)轉(zhuǎn)換的結(jié)束。當(dāng)ADC的這三個(gè)引腳同時(shí)置低時(shí),三個(gè)通道被認(rèn)為有效并同時(shí)進(jìn)行轉(zhuǎn)換。另外,EOC引腳也可被連接到TMS320F2812的一個(gè)中斷引腳,以觸發(fā)一個(gè)讀周期。
ADS8364的片選CS是一個(gè)有源低電平輸入信號(hào)。當(dāng)CS為高時(shí),并行輸出引腳處于高阻態(tài)。當(dāng)CS為低時(shí),并行數(shù)據(jù)線反映了輸出緩沖器的當(dāng)前狀態(tài)。為了正確地從ADS8364的并行數(shù)據(jù)總線上讀取數(shù)據(jù),ADS8364必須被片選CS選中后才能進(jìn)行讀操作。
ADS8364的讀(RD)信號(hào)端也是有源低電平信號(hào)。當(dāng)CS為低時(shí),在讀信號(hào)(RD)的下降沿,ADS8364中寄存器的內(nèi)容將被更新。這意味著在每個(gè)讀序列之前,RD信號(hào)必須被觸發(fā),這樣才能更新輸出緩沖器。通過(guò)TMS320F2812的中斷子程序?qū)DS8364的RD引腳置低可以保存輸入的數(shù)據(jù),之后可再將RD引腳置高。
2 軟件設(shè)計(jì)
在實(shí)際工作中,智能節(jié)點(diǎn)將采集到的數(shù)據(jù)或頻譜值發(fā)送到上位機(jī)進(jìn)行存貯、處理。上位機(jī)通過(guò)CAN接口與智能節(jié)點(diǎn)通信。
智能節(jié)點(diǎn)的程序是在TI提供的開(kāi)發(fā)工具Code Composer Studio上用C語(yǔ)言開(kāi)發(fā)。在開(kāi)發(fā)過(guò)程中,使用了TI公司提供的C281×C/C++頭文件庫(kù)。該頭文件庫(kù)利用結(jié)構(gòu)體和聯(lián)合體的形式對(duì)F2812的各個(gè)寄存器進(jìn)行了定義,用戶可以通過(guò)C語(yǔ)言直接對(duì)處理器內(nèi)部的寄存器進(jìn)行訪問(wèn)。
由于MS320F2812沒(méi)有獨(dú)立的程序存儲(chǔ)空間和數(shù)據(jù)存儲(chǔ)空間,是統(tǒng)一編址的,因此用戶首先要根據(jù)需要通過(guò)配置鏈接命令文件(.cmd文件)對(duì)存儲(chǔ)空問(wèn)進(jìn)行劃分。
為了實(shí)現(xiàn)數(shù)據(jù)的FFT變換,開(kāi)發(fā)過(guò)程中還使用了TI公司提供的FFT函數(shù)庫(kù)。FFT函數(shù)庫(kù)提供了32位復(fù)數(shù)FFT變換(CFFT32)和實(shí)數(shù)FFT變換(RFFT32)兩種模塊,可以進(jìn)行128、256、512和1024點(diǎn)的復(fù)數(shù)和實(shí)數(shù)FFT變換。需要注意的是變換中所使用的數(shù)據(jù)是Qx格式,因此對(duì)變換后的結(jié)果需要進(jìn)行格式轉(zhuǎn)換才能得到真實(shí)數(shù)值。
智能節(jié)點(diǎn)的主程序流程為:加電后,程序先初始化,進(jìn)入主循環(huán)后就不斷進(jìn)行數(shù)據(jù)采集和閾值判斷,如有收到上位機(jī)命令(CAN接口接收中斷)就轉(zhuǎn)入中斷處理程序,根據(jù)上位機(jī)的不同命令選擇不同的處理方式。如采集到的數(shù)據(jù)超出閾值,優(yōu)先向上位機(jī)發(fā)送報(bào)警信息。
3 結(jié)束語(yǔ)
本文設(shè)計(jì)的智能節(jié)點(diǎn)已在多個(gè)監(jiān)測(cè)和故障診斷系統(tǒng)中得到應(yīng)用,實(shí)踐證明該模塊工作可靠,能滿足工程中分布式數(shù)據(jù)采集與監(jiān)測(cè)需要。