1、引言
在傳統的工業控制中,現場的傳感器與控制器之間總是以 4~20mA 的直流電流或 1-5V 的直流電壓來傳遞信息的。隨著工業控制技術的不斷發展,工業控制系統正向著數字化、智能化、網絡化和開放化的方向發展。因此,模擬傳輸漸漸被數字傳輸所取代。而現場總線(FieldBus)則可以很好地適應工業控制技術發展的趨勢,是對成熟控制系統結構的根本變革。LonWorks 總線是美國 Echelon 公司于 1991 年提出的一種現場總線,它采用面向對象的設計方法,通過網絡變量把網絡通信設計簡化為參數設置。LonWorks 技術的核心是神經元(Neuron)芯片,這個神經元片中有三個 8 位的 CPU,它們不僅可以用作 LonWorks 總線的通信處理器,而且還可以用作采集和控制的通用處理器。本文介紹具有串行口的 A/D 芯片 TLC0832 與作為通用處理器的神經元芯片的兩種接口實現方法。
2、 Neuron 芯片和 TLC0832 的基本特性
2.1 Neuron 芯片的基本特性
LonWorks 網絡是由節點構成的,每個節點包括一片 Neuron 芯片、傳感和控制設備、收發器和電源。其中,Neuron 芯片是節點的核心,它具有 3 個 CPU:CPU-1 是介質訪問處理器,CPU-2 是網絡處理器,CPU-3 是應用處理器。Neuron 芯片家族中的最初成員是 Neuron 3120xx 和 Neuron 3150 芯片。3120xx 芯片中包括 EEPROM、RAM、ROM 存儲器,而 3150 芯無內部 ROM,但擁有訪問外部存儲器的接口,其尋址空間可達 64kB,可用于開發更為復雜的應用系統。
Neuron 芯片通過 11 個引腳(IO-0~IO-10)與外部硬件相連。這 11 個引腳可定義 34 種 I/O 對象,用戶可根據實際應用需要在應用程序中定義不同的 I/O 對象,如直接的 I/O 對象、并行 I/O 對象、串行 I/O 對象和定時器 / 計數器輸入 / 輸出對象等。
2.2 TLC0832 的基本特性
TLC0832 是八位逐次逼近模數轉換器,它有兩個可選擇的輸入通道。TLC0832 的特點如下:
*8 位分辨率;
*可和微處理器接口或獨立使用;
*可滿量程工作或使用 5V 基準電源;
*具有單通道或多路器選擇的雙通道,并可選擇單端或差分輸入;
*采用單 5V 供電,輸入范圍為 0~5V;
*輸入和輸出與 TTL 和 CMOS 兼容;
TLC0832 處于工作狀態時,置 CS 端方可啟動轉換,并使所有的邏輯電路使能。CS 在整個轉換過程中必須置為低電平,接著從處理器接受一個時鐘。當一個時鐘的時間間隔被自動插入后,可以使多種轉換器選定的通道穩定。而當 DO 脫離高阻狀態時,可提供一個時鐘的時間間隔的前導低電平,以使多路器穩定。SAR 比較器用于對電阻梯形網絡輸出的逐次信號和輸入模擬信號進行比較,比較器輸出則用于表示劉大于還是小于電阻梯形網絡的輸出。在轉換過程中,轉換的數據同時從 DO 端輸出,并以最高位(MSB)開頭。在經過 8 個時鐘后,轉換完成,CS 變高,內部所有寄存器清零,此時,輸出電路變為高阻狀態。如果希望開始另一個轉換,CS 必須有一個從高到低的跳變,且后面應緊跟著輸入地址數據。TLC0832 的輸入配置可在多路器尋址時序中進行,多路器地址通過 DI 端移入寄存器。用多路器地址選擇模擬輸入通道的方法如表 1 所列,其工作時序圖如圖 1 所示。
3、 Neuron 和 TLC083 的兩種接口方法
3.1 基于 Neuron 芯片 Neurowire I/O 模式方案
如上所述,Neuron 芯片 TMPN3150 的 11 個 I/O 腳有多種 I/O 模式,這里用的是 Neurowire 模式。這種方式把 TMPN3150 的 I/O 腳定義為 Neurowire I/O 對象,即同步全雙工串行通信模式,它每次最多可傳送 255 比特的數據流。Neurowire I/O 對象可配置為主控方式和被控方式。當為主控方式時,IO8 為移位時鐘信號輸出端,IO9 為串行數據輸出端,IO10 為串行數據輸入端,IO0~IO7 可任選一個作為片選信號線。若 Neuron 芯片的輸入時鐘為 10MHz 時,則 IO8 的輸出時鐘頻率可選為 1、10 或 20kb/s;當為被控方式時,IO8 為移位時鐘信號輸入端,IO0~IO7 可任選一個作為時間溢出信號引腳。
a. 方法 1 的硬件實現
基于 Neuron 芯片的 Neurowire I/O 模式的硬件電路如圖 2 所示。圖中,IO0 輸出片選信號。圖 1 中的輸入只畫了一路 CH0,另一路 CH1 與 CH0 相同。當輸入為電壓信號時,J 斷開;輸入為電流信號時,J 連通。
b. 方法 1 的軟件實現
神經元芯片的編程是采用 Neuron C 語言來完成的。Neuron C 是專門為 Neuron 芯片設計的編程語言,它有著豐富的函數庫,可直接完成許多復雜的任務。
基于 Neuron 芯片的 Neurowire I/O 模式的 A/D 接口程序如下:
//////// IO Objection ////////
// 定義為 Neurowire 主模式,A/D 芯片的主選信號由 IO0 輸出初始化為 1
IO-8 neurowire master select (IO-0) ioA2D;;
IO-0 output bit ioA2Dselect =1;
IO-1 input bit start_adc;
# pragma ignore_notused ioA2Dselect
//////// funcTIon declare////////
unsigned long adc(unsigned long analog_addr);
////////funcTIon definiTIon////////
//A/D 轉子函數
unsigned long adc(unsigned long analog-addr)
// 形參 analog_addr 傳遞要選擇的通道,選擇 CH0 時,analog_addr=0x06,選擇 CH1 時,analog_addr=0x07
{
unsigned long adc_info;
unsigned long digital_out;
adc_info = (analog_addr 《《 13);
io_in(ioA2D,&adc_info,16); // 選擇通道,同時接收轉換的結果
digital_out=adc_info & 0x0ff0;
digital_out=digital_out 》》4;
return digital_out;
}
由于 eurowire I/O 對象是雙向的,即輸入、輸出同時進行。因此,調用 io_in(ioA2D,&adc_info,16)時啟動了 16 位的雙向數據傳輸,該命令可將 adc_info 中的數以比特流的形式從 IO-9 輸送到 TLC0832,同可時通過 IO10 從 TLC0832 的 DO 腳讀入 16 位數并放入 adc_info。由 TLC0832 的工作時序圖(圖 1)可以看出,接收到的 16 位數中的第 5 位到第 12 位就是轉換結果,所以做了后面的處理。
3.2 基于 Neuron 芯片的比特 I/O 模式方案
TMPN3150 和 TLC0832 的第二種接口實現方法是把 TMPN3150 的 I/O 腳定義為比特 I/O 對象,它可用以監控與 Neuron 芯片相連的 I/O 設備中某個引腳上的邏輯狀態,其中“0”為低電平,“1”為高電平。
a. 方法 2 的硬件實現
方法 2 的硬件電路如圖 3 所示。圖中,輸入通道只畫了一路 CH0,另一路 CH1 與 CH0 相同。當輸入為 1-5V 的電壓信號時,J 斷開;當輸入與 4-20mA 的電流信號時,J 連通。
b. 方法 2 的軟件實現
Neuron C 語言是從 ANSI C 中派生出來的,相對于 ANSI C 而言,它進一步擴展了用以支持由 Neuron 芯片中的固件提供的各種運行特性。
方法 2 的 A/D 接口程序如下:
////////IO ObjecTIon////////
// 將 IO 腳定義為比特 IO 對象,
IO-2 input bit io-do;
IO-0 output bit cs;
IO-3 output bit di;
IO-1 output bit clk;
////////function declare////////
int adc(int adc-addr);
///////function definition//////
//A/D 轉換子函數
int adc(int adc_addr)
// 形參 analog_addr 傳遞要選擇的通道,選擇 CH0 時,adc_addr=0x60;選擇 CH1 時,adc_addr=0x70//
{
int adc_inbit,digital_out=0;
io_out(cs,0);
io_out(di,0);
for(i=0;i《3;i++)// 選擇通道
{
io_out(clk,0);
adc_addr=adc_addr《《1;
if(adc_inf0 &0x80)==0x80
io_out(di,1);
else
io_out(di,0);
io_out(clk,1);
}
io_out(clk,0); // 一個時鐘的間隔
io_out(clk,1); // 以使多路器穩定
for(i=0;i《8;i++) // 接收轉換結果
{
io_out(clk,0);
if(io_in(io_do)= =1)
{
adc_inbit=1;
adc_inbit=adc_inbit《《(7-i);
digital_out=digital_out+adc_inbit;
}
io_out(clk,1);
}
io_out(cs,1)
return digital_out;
}
4、結束語
Neuron 芯片不同于普通的微處理器,本文介紹的神經元芯片與 A/D 芯片 TLC0832 的兩種接口實現方法各有利弊,具體表現如下:
(1)方法 1 是 Neuron 芯片所特有的,而方法 2 較通用,它不僅適用于 Neuron 芯片,而且適用于各種有 I/O 腳的微處理芯片;
(2)方法 1 的硬件要求比較嚴格,可選的 I/O 腳只有一個,即片選信號輸出腳,而方法 2 腳把幾個與 TLC0832 相連的 I/O 腳視為普通的 I/O 腳,隨便哪個 I/O 腳都可與 TLC0832 相連(如果 Neuron 芯片的 IO8、IO9 或 IO10 已用,那只能選方法 2 了);
(3)方法 1 編程較短,但不但于調試,而方法 2 則編程較長,但較為直觀,而且便于調試;
(4)方法 1 的 CLK 占空比和時鐘速率較為穩定,而方法 2 的 CLK 占空比與指令執行時間有關。對于常用單片機的人來說,方法 2 較易上手,則方法 1 則更專業;方法 2 的硬件接法更靈活,但編程較長……總之,使用這兩種方法應根據實際情況靈活地作出選擇
評論
查看更多