LON總線的USB2.0接口卡的研制
1 USB2.0的主要特點(diǎn)
USB協(xié)議的2.0版本于2000年4月推出,支持以下3種速度模式:低速模式(low speed)1.5Mb/s;全速模式(full speedl 12Mb/s;高速模式(high speed)480Mb/s。它支持現(xiàn)存的所有USB設(shè)備.可以把USB1.1設(shè)備插入U(xiǎn)SB1.1的PC機(jī)接口,并且在電氣上兼容USB1.1的連接線。
1.1 USB總線特點(diǎn)
◆數(shù)據(jù)傳輸速率高;
◆數(shù)據(jù)傳輸可靠;
◆同時(shí)掛接多個(gè)USB設(shè)備;
◆USB接口能為設(shè)備供電;
◆支持熱插拔。
1.2 USB的新特性
USB還具有一些新的特性。如:實(shí)時(shí)性(可以實(shí)現(xiàn)和一個(gè)設(shè)備之間有效的實(shí)時(shí)通信)、動(dòng)態(tài)性(可以實(shí)現(xiàn)接口間的動(dòng)態(tài)切換)、聯(lián)合性(不同的而又有相近特性的接口可以聯(lián)臺(tái)起來(lái))和多能性(各個(gè)不同的接口可以使用不同的供電模式)。
2 LonWorks接口卡硬件設(shè)計(jì)
2.1 LonWorks接口卡通信原理及硬件結(jié)構(gòu)
該接口卡的工作原理如下:接口卡由LON網(wǎng)接口模塊和USB2.0接口模塊組成,如圖1所示,它采用雙CPU技術(shù),主CPU為USB2.0控制器CY7C68013內(nèi)置的增強(qiáng)8051內(nèi)核(該內(nèi)核的運(yùn)行速度是普通8051的5倍),主要作為協(xié)議的轉(zhuǎn)換模塊,用來(lái)完成USB2.0協(xié)議與LonTalk協(xié)議之間的轉(zhuǎn)換,向上與便攜PC機(jī)(或其它具有USB接口的便攜設(shè)備)進(jìn)行通信,向下與3150進(jìn)行并口通信,輔CPU為T(mén)MPN3l50,主要起LON網(wǎng)接口的功能,作為通信協(xié)處理器使用,將從主CPU接收到的來(lái)自便攜PC機(jī)(或其它具有USB接口的便攜設(shè)備)的報(bào)文解析成Lontalk協(xié)議報(bào)文并通過(guò)Lonworks收發(fā)器傳向LON網(wǎng),或?qū)腖ON網(wǎng)上接收到的Lontalk協(xié)議報(bào)文轉(zhuǎn)發(fā)給主CPU,再由主CPU傳向便攜PC機(jī)(或其它具有USB接口的便攜設(shè)備)。51CPU與Neuron 3150采用并行方式通信。Neuron芯片的11個(gè)I/O有34種可選工作模式,其中包括并行I/O方式,該方式數(shù)據(jù)的最大傳送速率可達(dá)3.3Mbps。并口工作方式在數(shù)據(jù)傳送速度方面的優(yōu)勢(shì),使得Neuron芯片與51CPU完成大數(shù)據(jù)量的傳送成為可能。它們之間的數(shù)據(jù)傳輸是通過(guò)運(yùn)用“虛寫(xiě)令牌傳遞機(jī)制”實(shí)現(xiàn)的,擁有令牌的一方擁有對(duì)數(shù)據(jù)總線的寫(xiě)控制權(quán)。
2. 2 LonWOrks接口卡硬件電路設(shè)計(jì)
該接口卡中,USB2.O控制器采用Cypress公司推出的USB2.0控制器CY7C68013,它是USB2.0的完整解決方案。該芯片包括帶8.5KB片上RAM的高速8051單片機(jī)、4KB FIFO存儲(chǔ)器以及通用可編程接口(GPIF)、串行接口引擎(SIE)和USB2.O收發(fā)器。它無(wú)需外加芯片即可完成高速USB傳輸,性?xún)r(jià)比較高。智能串行接口引擎(SIE)執(zhí)行所有基本的USB功能,將嵌入式MCU解放出來(lái)用于實(shí)現(xiàn)專(zhuān)用的功能,井保證其持續(xù)高性能的傳輸速率。通用可編程接口(GPIF)允許它“無(wú)膠粘接”,即可與任何ASIC或DSP進(jìn)行連接,并且還支持所有通用總線標(biāo)準(zhǔn),包括ATA、UTOPIA、EPP和PCMCIA。它完全適用于USB2.0,并向下兼容USB1.1。
3150芯片選用Toshiba公司生產(chǎn)的TMPN3150。3150片內(nèi)存儲(chǔ)器的地址范圍是E800H~FFFH,包括2KB的SRAM和512B的EEPROM。3150可以外接存儲(chǔ)器,如RAM、ROM、EEPROM或Flash,其地址范圍是0000H~7FFH。根據(jù)一般應(yīng)用的性能和成本要求,3l50的外部存儲(chǔ)器采用Flash和RAM。Flash選用IS61C256AH-15N,RAM選用AT29C512。61C256和29C512的地址范圍通過(guò)邏輯門(mén)電路根據(jù)Neuron芯片的地址線和控制線E來(lái)確定。51與3l50采用3150的并口通信方式,將Neuron芯片的IO0~I(xiàn)O7作為8根數(shù)據(jù)線與51CPu的PB(PB0-PB7)口相連-108作為片選信號(hào)線e)與51CPU的PCO口相連.IO9作為數(shù)據(jù)讀/寫(xiě)信號(hào)線(R/W)與51CPU的PC6口(寫(xiě)信號(hào))相連。IO10作為握手信號(hào)線(HS)與51CPU的PC1口相連。
為提高增加接口卡的可靠性及穩(wěn)定性,本設(shè)計(jì)增加了一個(gè)鎖存器,完成復(fù)位接口的功能。當(dāng)3150芯片復(fù)位時(shí),通過(guò)鎖存器將復(fù)位信號(hào)傳送給CY7C68013內(nèi)置的8051處理器,8051接到復(fù)位信號(hào)自動(dòng)復(fù)位,并馬上清鎖存器,其接線如圖2所示。在并口通信中,8051與3150同步非常重要,要完成并口通信,8051首先要與3150達(dá)到同步且同步操作必須在3150復(fù)位時(shí)進(jìn)行。8051只在初始化程序時(shí)才與3150進(jìn)行同步操作。因此完成同步后,每當(dāng)3l50由于誤操作或錯(cuò)誤運(yùn)行而造成復(fù)位時(shí),3150與8051將會(huì)失去同步,而8051無(wú)法檢測(cè)到,從而造成并口通信失敗。加入鎖存器之后,8051就能檢測(cè)到3150的復(fù)位信號(hào)并自動(dòng)復(fù)位自己的程序,使得8051與3150再次達(dá)到同步。這將使適配器的可靠性和穩(wěn)定性都得到加強(qiáng)。
Neuron芯片與LON網(wǎng)絡(luò)介質(zhì)的接口采用一種LonWorks自由拓?fù)湫褪瞻l(fā)器FTT-IOA。FTT-IOA是一種變壓器耦臺(tái)收發(fā)器,可提供一個(gè)與雙絞線的無(wú)極性接口,且支持網(wǎng)絡(luò)的自由拓?fù)浣Y(jié)構(gòu)。網(wǎng)絡(luò)通信介質(zhì)采用最常用的雙絞線。
2.3接口卡的抗干擾設(shè)計(jì)
工業(yè)現(xiàn)場(chǎng)的環(huán)境一般來(lái)說(shuō)較為惡劣.存在多種干擾。為保證通信的準(zhǔn)確無(wú)誤,延長(zhǎng)硬件使用壽命,該適配器除采用通常的供電和接地抗干擾措施外,主要是要避免和消除來(lái)自網(wǎng)絡(luò)介質(zhì)的靜電泄放(ESD)和電磁干擾(EMI),即主要針對(duì)FTT-IOA來(lái)設(shè)計(jì)抗干擾電路。
對(duì)于ESD,在印刷電路板(PCB)設(shè)計(jì)中應(yīng)提供一個(gè)導(dǎo)入大地的通道.還要不致引起整個(gè)PCB電壓的升降。具體采用火花放電隙和箝位二極管來(lái)實(shí)現(xiàn)。對(duì)于EMI,因?yàn)镕TT-IOA對(duì)垂直雜散電磁場(chǎng)最不敏感,而對(duì)水平雜散電磁場(chǎng)最敏感。所以在PCB設(shè)計(jì)中應(yīng)使FTT-IOA盡量遠(yuǎn)離水平雜散電磁場(chǎng)區(qū)域。對(duì)于不可避免的雜散電磁場(chǎng),應(yīng)使其相對(duì)于FTT-IOA垂直分布。
3 LOnWorks接口卡軟件設(shè)計(jì)
3.1 Neuron芯片的編程語(yǔ)言――Neouron C
Neuron芯片有一套專(zhuān)門(mén)的開(kāi)發(fā)語(yǔ)言――Neuron C。Neuron C派生于ANSI C,并增加了對(duì)I/O、事件處理、報(bào)文傳送和分市式數(shù)據(jù)對(duì)象的支持,是開(kāi)發(fā)Neuron芯片應(yīng)用程序的重要工具。其語(yǔ)法擴(kuò)展包括軟件定時(shí)器、網(wǎng)絡(luò)變量、顯式報(bào)文、多任務(wù)調(diào)度、EEPROM變量和附加功能等。其中,顯示報(bào)文的使用為L(zhǎng)ON節(jié)點(diǎn)間的通信及互操作提供了基礎(chǔ)。通過(guò)對(duì)不同節(jié)點(diǎn)分配網(wǎng)絡(luò)地址,即可實(shí)現(xiàn)節(jié)點(diǎn)之間的數(shù)據(jù)傳遞。也就是說(shuō),LON接口卡中的3150通過(guò)構(gòu)造和解析報(bào)文實(shí)現(xiàn)了與LON網(wǎng)用戶(hù)節(jié)點(diǎn)的通信。
3.2 CY7C6801 3的開(kāi)發(fā)工具
Cypress公司對(duì)CY7C680 1 3提供了較為完備的開(kāi)發(fā)套件CY3681。它包括帶128腳CY7C68013的硬件開(kāi)發(fā)板、相應(yīng)的控制面板(Control panel)和GPIF代碼自動(dòng)生成軟件(GPIFT001)。對(duì)于內(nèi)核8051的開(kāi)發(fā)采用Keil開(kāi)發(fā)工具。
3.3 LonWorks接口卡的軟件設(shè)計(jì)
該接口卡的程序包含兩大部分:一是存儲(chǔ)在CY7C68013中的USB驅(qū)動(dòng)程序和與3150的并口通信程序:二是存儲(chǔ)在3150外部Flash中的并口通信程序以及LonTalk協(xié)議轉(zhuǎn)換程序。USB驅(qū)動(dòng)程序在開(kāi)發(fā)套件CY368 1中已有支持用戶(hù),只要調(diào)用即可。而與31 50的并口通信程序則采用Keil C51語(yǔ)言編寫(xiě),并通過(guò)usB口下載到CY7C68013的8051內(nèi)核中。3150外部Flash中的并口通信程序以及LonTalk協(xié)議轉(zhuǎn)換程序采用Neuron C語(yǔ)言編寫(xiě),并采用LonWorks開(kāi)發(fā)工具――LonBuilder中的Neuron C編譯器對(duì)程序進(jìn)行編譯,生成ROM映像文件,最后下載到片外Flash中。
在8051的并口通信程序中,需要模擬3150的并口通信從A方式。以下為并口通信程序中主要模塊的C51程序,包括同步模塊(sync―loop());握手模塊(hndshkO);并口數(shù)據(jù)傳送接收模塊(pio read();pio write(void));令牌傳遞模塊(pass token())。
void sync-loop(void)
{unsigned char rb;
do{RW=0;hndshk();PB=CMD RESYNC;CS=0;CS=I;hndshk();
PB=EOM;CS=0;CS=1;hndshk();PB=0xff;RW=I;CS=0;rb=PB;
CS=I;}while(rb!=CMD ACKSYNC);token=MASTER;}
void hndshk(void)
{while((hs=INTO)==1);}
void pio_read(void)
{unsigned char cmd;unsigned char i;
PB=0xff;hndshk();RW=1;cmd=PB;CS=0;CS=1;
if(cmd==CMD―XFER){hndshk();pio.1en=PB;CS=0;CS=1;}
else pio.1en=o=pass―token();}
void pio-write(void)
{unsigned char sd;
hndshk();RW=0;PB=CMD―XFER;CS=0;CS=1;hndshk0;PB=pio.
1en;CS=0;CS=1:
for(sd=0;sdpio.1en;sd++){hndshk();PB=pio.dat[sd];CS=0;CS=l;}
pass_token();RW=1;}
void pass_token(void)
{ifftoken==MASTER){hndshk();RW=0;PB=EOM;CS=0;CS=1:
token=SLAVE;}
else token=MASTER;}
根據(jù)硬件設(shè)計(jì),將3150芯片的I/O定義為并行(parallel)I/O對(duì)象類(lèi)型。定義并行I/O對(duì)象的Neuron C源代碼為IO 0 parallel slave P BUS,其中,P BUS為所定義的I/O對(duì)象名稱(chēng)。Neuron將從并口得到的報(bào)文解析,再利用Neuron C的消息傳送機(jī)制,將解析的消息傳送給適配器下層的應(yīng)用節(jié)點(diǎn)。讀取數(shù)據(jù)的Neuron C函數(shù)為io_in(),其格式如下:io in(P BUS,addressl);
其中,P_BUS為并口IO對(duì)象名稱(chēng),addressl為接收并口數(shù)據(jù)的地址。發(fā)消息的Neuron C函數(shù)為msg send()。
值得注意的是,Neuron芯片的應(yīng)用CPU在執(zhí)行該io_in()函數(shù)時(shí)會(huì)處于等待狀態(tài),也就是說(shuō)等待數(shù)據(jù)時(shí)應(yīng)用CPU不能處理其它I/O事件、定時(shí)器終止、網(wǎng)絡(luò)變量更新或報(bào)文到達(dá)事件。如果2 0字符時(shí)間內(nèi)尚沒(méi)有接收到數(shù)據(jù),則可能使Wat Chdog定時(shí)器產(chǎn)生超時(shí)錯(cuò)。在10MHz的輸入時(shí)鐘下,watchdog的超時(shí)時(shí)間是0.84s(該時(shí)間隨輸入時(shí)鐘而改變)。通常情況下,調(diào)度程序(scheduler)會(huì)周期性地對(duì)watchdog定時(shí)器進(jìn)行復(fù)位,但當(dāng)程序處理一個(gè)較長(zhǎng)的任務(wù)(task)如io in()時(shí),則有可能終止watChdog定時(shí)器,這將導(dǎo)致整個(gè)節(jié)點(diǎn)的復(fù)位。為避免產(chǎn)生這種情況,同時(shí)使程序盡可能多地接收到達(dá)的數(shù)據(jù),本節(jié)點(diǎn)程序在接收數(shù)據(jù)這個(gè)任務(wù)中周期性地調(diào)用函數(shù)watchdog update()。
4 結(jié)論
本文所設(shè)計(jì)接口卡的主要目的是為帶有USB接口的便攜設(shè)備進(jìn)行現(xiàn)場(chǎng)數(shù)據(jù)測(cè)量和現(xiàn)場(chǎng)監(jiān)測(cè)提供高速、安全的通信接口。解決了令工程師頭痛的便攜設(shè)備與現(xiàn)場(chǎng)設(shè)備采用通用串口通信時(shí)傳輸速率低、經(jīng)常掉線、連接不可靠的問(wèn)題。
評(píng)論