微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > LON总线的USB2.0接口卡的研制

LON总线的USB2.0接口卡的研制

时间:09-03 来源:互联网 点击:
2.3接口卡的抗干扰设计

工业现场的环境一般来说较为恶劣.存在多种干扰。为保证通信的准确无误,延长硬件使用寿命,该适配器除采用通常的供电和接地抗干扰措施外,主要是要避免和消除来自网络介质的静电泄放(ESD)和电磁干扰(EMI),即主要针对FTT-IOA来设计抗干扰电路。

对于ESD,在印刷电路板(PCB)设计中应提供一个导入大地的通道.还要不致引起整个PCB电压的升降。具体采用火花放电隙和箝位二极管来实现。对于EMI,因为FTT-IOA对垂直杂散电磁场最不敏感,而对水平杂散电磁场最敏感。所以在PCB设计中应使FTT-IOA尽量远离水平杂散电磁场区域。对于不可避免的杂散电磁场,应使其相对于FTT-IOA垂直分布。

3 LOnWorks接口卡软件设计

3.1 Neuron芯片的编程语言——Neouron C

Neuron芯片有一套专门的开发语言——Neuron C。Neuron C派生于ANSI C,并增加了对I/O、事件处理、报文传送和分市式数据对象的支持,是开发Neuron芯片应用程序的重要工具。其语法扩展包括软件定时器、网络变量、显式报文、多任务调度、EEPROM变量和附加功能等。其中,显示报文的使用为LON节点间的通信及互操作提供了基础。通过对不同节点分配网络地址,即可实现节点之间的数据传递。也就是说,LON接口卡中的3150通过构造和解析报文实现了与LON网用户节点的通信。

3.2 CY7C6801 3的开发工具

Cypress公司对CY7C680 1 3提供了较为完备的开发套件CY3681。它包括带128脚CY7C68013的硬件开发板、相应的控制面板(Control panel)和GPIF代码自动生成软件(GPIFT001)。对于内核8051的开发采用Keil开发工具。

3.3 LonWorks接口卡的软件设计

该接口卡的程序包含两大部分:一是存储在CY7C68013中的USB驱动程序和与3150的并口通信程序:二是存储在3150外部Flash中的并口通信程序以及LonTalk协议转换程序。USB驱动程序在开发套件CY368 1中已有支持用户,只要调用即可。而与31 50的并口通信程序则采用Keil C51语言编写,并通过usB口下载到CY7C68013的8051内核中。3150外部Flash中的并口通信程序以及LonTalk协议转换程序采用Neuron C语言编写,并采用LonWorks开发工具——LonBuilder中的Neuron C编译器对程序进行编译,生成ROM映像文件,最后下载到片外Flash中。  
在8051的并口通信程序中,需要模拟3150的并口通信从A方式。以下为并口通信程序中主要模块的C51程序,包括同步模块(sync—loop());握手模块(hndshkO);并口数据传送接收模块(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);}

vo id 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;sd
<PIO.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";}

根据硬件设计,将3150芯片的I/O定义为并行(parallel)I/O对象类型。定义并行I/O对象的Neuron C源代码为IO 0 parallel slave P BUS,其中,P BUS为所定义的I/O对象名称。Neuron将从并口得到的报文解析,再利用Neuron C的消息传送机制,将解析的消息传送给适配器下层的应用节点。读取数据的Neuron C函数为io_in(),其格式如下:io in(P BUS,addressl);

其中,P_BUS为并口IO对象名称,addressl为接收并口数据的地址。发消息的Neuron C函数为msg send()。

值得注意的是,Neuron芯片的应用CPU在执行该io_in()函数时会处于等待状态,也就是说等待数据时应用CPU不能处理其它I/O事件、定时器终止、网络变量更新或报文到达事件。如果2 0字符时间内尚没有接收到数据,则可能使Wat Chdog定时器产生超时错。在10MHz的输入时钟下,watchdog的超时时间是0.84s(该时间随输入时钟而改变)。通常情况下,调度程序(scheduler)会周期性地对watchdog定时器进行复位,但当程序处理一个较长的任务(task)如io in()时,则有可能终止watChdog定时器,这将导致整个节点的复位。为避免产生这种情况,同时使程序尽可能多地接收到达的数据,本节点程序在接收数据这个任务中周期性地调用函数watchdog update()。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top