LonWorks-USB互联适配器的设计开发
图2 互联适配器硬件结构框图
2 硬件设计
互联适配器的结构框图如图2所示,主要由神经元芯片和EZ-USB单片机组成。
神经元芯片(Neuron Chip)是LonWorks技术的核心?熏 芯片中含有Lontalk协议的固态软件(简称固件),使其能可靠地通信。神经元芯片主要包含TMPN3150和TMPN3120两大系列,由日本东芝公司生产。TMPN3150支持外部存储器,适合更为复杂的应用,而TMPN3120则不支持外部存储器,它本身带ROM。所以,在互联适配器的设计中选用的是TMPN3150,该芯片内有三个微处理器,即MAC处理器、网络处理器和应用处理器。对神经元芯片进行外围电路的设计和扩展,使之成为LonWorks网上的一个特殊的LON节点,这样它不仅可以与LonWorks网络上的LON节点进行通信,还可以作为适配器的协通信处理器。
TMPN3150片内存储器的地址范围是E800H~FFFFH,包括2KB的RAM、0.5KB的EEPROM、2.5KB保留空间和1KB的用于存储器映象I/O的空间。TMPN3150有16根地址线,可寻址64K空间,可以外接存储器,如RAM、ROM、EEPROM或FLASH等。由于开发Neuron芯片时采用Neuron C语言,内存占用大,另外其作为通信协议处理器使用要求有大量的数据缓冲区进行数据交换,而仅仅利用3150内部的2KRAM空间是远远不够的,因此扩展了外部存储器FLASH和RAM。FLASH选用AT29C512,其地址范围是0000H~7FFFH;RAM选用IS61C256AH-15N,其地址范围是8000H~DFFFH。AT29C512和IS61C256AH-15N的地址范围由Neuron芯片的地址线和控制线E及相关的逻辑门电路来确定。神经元芯片的晶振为10MHz。Neuron芯片与LON的网络介质的接口采用上海工业自动化仪表研究所生产的双绞线收发器。收发器按其传输速率可以分为TPT/XF-78(传输速率为78kbps)、TPT/XF-1250(传输速率为1.25Mkbps)两种型号,用于满足不同的通讯要求。这里选用的是TPT/XF-1250。
EZ-USB单片机采用的是EZ-USB2100系列中具有44个引脚的AN2131S。AN2131S是互联适配器的主CPU,利用其I/O端口足以完成所需的功能。EZ-USB芯片中包含内部程序/数据RAM共8KB?熏不再需要ROM或其它非易失性存储器。主CPU与辅CPU的连接很简单,即与辅CPU的11个I/O口进行连接。单片机的PB口接上辅CPU的IO0~IO7,为两个CPU的并行通讯数据端口。单片机的PC0~PC2分别接神经元芯片IO8~IO10,完成控制功能。AN2131S再通过引脚USBD+和USBD-与主机PC/Laptop互联。
3 软件设计
适配器的软件程序设计分为两大块。一块为对主机PC/Laptop程序的软件设计,另一块为对外围USB设备——互联适配器程序的软件设计。
3.1 USB主机的软件设计
主机的软件设计主要包括两部分:一是基于USB的互联适配器的驱动程序。如图3所示,USB通信使用分层驱动模型,每层处理一部分通信过程,这样可以使不同设备在一些任务上使用相同的驱动。这里使用Microsoft WDM DDK和Microsoft Visual C++6.0来完成。
二是USB通信程序和用户服务程序。用户服务程序通过USB通信程序与系统USBDI(USB Device Interface)通信,javascript:window.open(this.src);" style="cursor:pointer;"/>由系统完成USB协议的处理与数据传输。从逻辑上讲,USB数据的传输是通过管道进行的。USB系统软件通过缺省管道(与端点0相对应)管理设备,设备驱动程序通过其它的管道来管理设备的功能接口。为了满足不同外设和用户的要求,USB提供了四种传输方式:控制传输、同步传输、中断传输和块传输。本系统使用的是块传输。EZ-USB提供了16个用于块传输的端点,包括7个IN端点(EP1_IN~EP7_IN)和7个OUT端点(EP1_ OUT~EP7_OUT)。每个端点都有一个64字节的缓冲区。块端点无方向控制,一个端点地址对应一个方向,所以端点IN1的地址不同于端点OUT1的地址,本适配器就采用这对端点传输数据。其中,端点0在USB系统中有特定含义,它是EZ-USB芯片中唯一的控制端点,用于传输控制信息。
开发可以访问互联适配器的应用程序,可使用任何一个支持win32函数CreateFile()和DeviceIoControl()的编译器。首先调用CreateFile()函数,来取得访问设备驱动程序的句柄