控制信號中的模擬量傳輸正逐步改為數字量傳輸,各種非數位化設備也必將逐步為數位化智能產品所取代。但是,在實際生產現場依然有大量的數據是模擬量,例如壓力、液位、溫度等,必須通過A/D轉換才能將這些數據送到控制系統進行分析處理。為滿足實際需要,本文提出利用MC143150 Neuron晶片和12位串行模數轉換器ADS7844開發與設計多通道A/D轉換控制模塊,實現了多個模擬量信號的並行採集、分析與處理功能,具有精度高和性能可靠等特點。
本文引用地址:http://www.eepw.com.cn/article/201706/347184.htm1 硬體設計
多通道A/D轉換控制模塊的硬體總體結構如圖1所示,主要包括模擬信號電路、8通道12位串行A/D轉換器ADS7844和MC143150 Neuron晶片。設計中利用8通道12位串行A/D轉換器ADS7844實現模擬量的數位化轉換,同時利用MC143150 Neuron晶片對ADS7844的8通道模擬輸入量的數位化轉換結果進行循環採集,實現多個模擬量數據的並行採集、分析與處理,較大程度地滿足了應用現場的實際要求。
1.1 ADS7844
ADS7844是Burr-Brown公司生產的寬電壓、低功耗、高性能的12位串行模數轉換器。它有8個模擬輸入端,可編程設置為8通道單端輸入或4通道差分輸入的A/D轉換器,還可編程使晶片處於低功耗電源工作模式。ADS7844的轉換率可達200 kHz,而線性誤差和差分誤差最大僅為±1LSB。ADS7844電源電壓為2.7~5 V之間均能正常工作,最大工作電流為1 mA,進入低功耗狀態後的耗電僅3μA。
(1)ADS7844的引腳功能。
CH0~CH7:模擬輸入端,當器件被設置為單端輸入時,這些引腳可分別與信號地COM構成8通道單端輸入A/D轉換器;當器件被設置為差分輸入時,利用CH0~CH1、CH2~CH3、CH4~CH5和CH6~CH7可構成4通道差分輸入A/D轉換器;
COM:信號地;
VREF:參考電壓輸入端,最大值為電源電壓;
:片選端,低電平有效,該腳為高電平時,其他數字接口線呈三態;
DCLK:外部時鐘輸入端,在時鐘作用下,CPU將控制字寫入ADS7844,並將轉換結果從中讀出;
DIN:串行數據輸入端,在片選有效時,控制字在DCLK上升沿被逐位鎖入ADS7844;
DOUT:串行數據輸出端,在片選有效時,轉換結果在DCLK的下降沿開始被逐位從ADS7844移出;
BUSY:「忙」信號輸出端,在接收到控制字的第一位數據後變低,只有在轉換結束且片選有效時,該腳才輸出一個高脈衝;
:電源關閉端,低電平有效。當SHDN為低電平時,ADS7844為低功耗狀態;
VCC,GND:分別為電源端和數字地。
(2)ADS7844的控制字。
通過ADS7844的控制字可以設置其信號聯結方式、選擇數據轉換通道和電源工作模式。ADS7844控制字如表1所示。
其中,S是起始位,控制字的起始位總為「1」;A2~A0是通道選擇位,在單端輸入時分別對應8個通道,對應關係見表2,而對於差分輸入,CH0~CH1、CH2~CH3、CH4~CH5、CH6~CH7分別對應差分信號的輸入端,其對應關係如表3所示。
SGL/DIF是模式控制位,該位為「1」時是單端輸入模式,為「0」時是差分輸入模式;PD1和PD0是電源模式控制位,其含義如表4所示。
(3)ADS7844的轉換時序圖。
ADS7844有3種轉換時序,分別是15-時鐘轉換時序、16-時鐘轉換時序和24-時鐘轉換時序,通常採用轉換周期為24個時鐘周期的工作時序,其中8個用於輸入控制字,16個用於讀取轉換結果,如圖2所示。控制字的所有位在時鐘上升沿被鎖入晶片,轉換結果在時鐘的下降沿被逐位移出。所有移入和移出的數據都是高位在前、低位在後。需要說明的是,ADS7844是12位A/D轉換器,其轉換結果只有12位,故在移出12位結果後,還需送入4個時鐘來完成整個轉換過程,這4個多餘時鐘移出的數據為「0」,使用時不應作為轉換結果處理。
1.2 MC143150 Neuron晶片
MC143150 Neuron晶片是Motorola公司成熟的VLSI設備,集成了硬體和固件,提供了完整的系統資源,3個管線處理器,其中一個用於執行用戶編寫的應用程式、另外兩個完成網絡中Neuron晶片間的信息交互任務。Neuron晶片通過11隻引腳與應用指定的外部硬體相連,可以配置直接I/O對象、並行雙向I/O對象、串行I/O對象等多種工作方式,從而可以藉助最少的外接電路實現靈活的輸入輸出功能。
為了便於現場應用,將MC143150 Neuron晶片、收發器Transceiver、定時器以及存儲器集成在一起,如圖3 所示。其中Clock給MC143150 Neuron晶片提供工作基準時鐘信號,RAM/ROM等存儲器用於存放MC143150 Neuron晶片的固件與用戶應用程式,Transceiver用於模塊間網絡互聯,I/O調處與A/D轉換器ADS7844的對應數據埠、外圍電源、MC143150 Neuron晶片的Reset和Service控制按鍵相連接,維護MC143150 Neuron晶片的正常工作以及實現埠數據的採集、分析和處理等功能。
2 軟體設計
Neuron C是專門為Neuron晶片設計的程式語言,它以ANSI C為基礎,包括對ANSI C的擴展,可直接支持Neuron晶片的軟體固化。Neuron C定義了多種I/O對象類型,如直接、計數器/計時器、串行和並行。下面介紹MC143150 Neuron晶片對ADS7844的8個通道工作在差分輸入方式下進行循環採樣的程序設計過程。
選用MC143150 Neuron晶片的Neurowire輸入/輸出作為I/O對象,使MC143150 Neuron晶片循環採集ADS7844輸出埠DOUT信號,實現與ADS7844同步全雙工串行通信。
2.1 Neurowire輸入/輸出對象語法結構定義
IO_8:Neurowire輸入/輸出對象使用管腳IO_8~IO_10,IO_8指定時鐘管腳,IO_9是串行數據輸出管腳,IO_10是串行數據輸入管腳。
Master:指定Neuron晶片在管腳IO_8上提供時鐘,設置為輸出管腳。
Slave:指定Neuron晶片檢測在管腳IO_8上的時鐘,設置為輸入管腳。
Select(pin-nbr):為Neurowire master指定片選管腳,為IO_0~IO_7管腳之一。
Timeout(pin-nbr):為Neurowire Slave指定一個可選擇的超時信號管腳,其範圍是IO_0~IO_7。當使用超時信號管腳時,當neuron晶片等待時鐘的上升沿或下降沿時,將檢查該管腳的邏輯電平。如果檢測到邏輯電平為「1」,則傳輸停止。
Kbaud(const—expr):為Neurowire master指定比特率,const—expr可以為1 kb·s-1、10 kb·s-1或20 kb·s-1。對於10 MHz的Neuron晶片輸入時鐘,預設值為20 kb·s-1。
Clockedge(+|-):指數據觸發時鐘信號極性,clockedge(+)為上升沿,clockedge(-)為下降沿。
io-object-name:由用戶為該I/O對象指定的名字。
2.2 採樣的程序清單
3 結束語
目前,該多通道A/D轉換控制模塊通過長時間運行測試,其性能可靠,故障率低,節約能耗,實現了多個模擬量轉換、採集與處理功能,給現場自動化控制系統的集成帶來較大的靈活性。