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