Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1228237
  • 博文数量: 699
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:45
文章分类

全部博文(699)

文章存档

2011年(1)

2008年(698)

我的朋友

分类:

2008-10-15 13:51:26

  本文结合LonWorks现场总线的ShortStack技术和基于芯片MSP430F149上嵌入μcos_Ⅱ操作系统的开发的优点,使其应用于多用途智能节点的LON控制网络。应用程序被移植到目标平台。此外,对于这种系统开发的基本方法也进行了分析。

  1 前言

  LonWorks现场总线是美国Echelon公司推出的局部操作网络,它具有统一性、开放性、互操作性及支持多种通信介质等优良性能,是当今最流行的现场总线之一。但是由于LonWorks控制节点的核心神经元芯片(Neuron Chip)的应用处理能力相对较弱,因而对于复杂的应用常使用主从处理器结构,主处理器完成用户的应用功能,而把Neuron芯片作为通信协处理器。由于可以提高了节点的处理能力,节省资金和开发时间,因此,具有多功能的通用主处理器具有很好的应用前景。本文采用的MSP430F149主处理器是TI公司基具有较高的集成度的芯片,简化了应用系统的硬件设计,适合作为多用途智能节点。

  2 ShortStack的介绍和实现

  2.1 ShortStack的结构

  ShortStack微是Echelon公司提供的一套开发包,其结构图如下:

图1 ShortStack结构图

  由图可看到,主处理器与ShortStack 微通信通过ShortStack API函数来实现,通常使用其中的5个,lonInit(),lonEventHandler(),lonPropagateNv(),lonPollNv()和lonsendServicePin()。ShortStack Micro Server,运行ShortStack固件,运行LonTalk的1~6层;主处理器运行SCI串口驱动程序,运行ShortStack API函数,处理与Lonworks其他节点通信;主处理器应用部分调用ShortStack API函数。主处理器设备的接口支持文件,由Neuron C model file 通过使用ShortStack向导来产生,产生数据表定义网络变量和收发器参数。而Model file只需要声明网络变量NVs,配置属性CPs和功能模块FBs,因此,可以不需要熟悉Neuron C。

  串行驱动程序为主处理器和从处理器之间提供一个独立的接口。整个串行驱动程序由两部分构成:上层驱动程序为主应用程序提供一个接口;底层驱动程序完成与神经元芯片的硬件接口。上层和底层驱动之间的数据通过缓冲队列完成。底层驱动程序与从处理器的通讯包括SCI上传和SCI下传两类,SCI上传是数据由神经元芯片上传到主处理器;SCI下传是数据由主处理器下传到神经元芯片。

  2.2 ShortStack的软件实现

  采用提供的Neuron C模板事例修改编写。主要修改ldvsci.h和ldvsci.c中与MSP430F149处理器相关的语句。

  在ldvsci.h中,修改为:

  #define ENABLE_RX_TX() (ME1 | = UTXE0+URXE0)

  #define ENABLE_TX_ISR() (IE1 |= 0x80)

  #define ENABLE_TX_COMPLETE_ISR() (IFG1|=0x80) //USART0发送标志

  #define ENABLE_RX_ISR() (IE1|= 0x40) //enable SCI receive interrupt

  #define DISABLE_TX_ISR() (IE1 &= ~0x80)

  #define DISABLE_TX_COMPLETE_ISR() (IFG1 &= ~0x80) // USART0发送标志复位

  #define DISABLE_RX_ISR() (IE1 &= ~0x40)

  #define CHECK_RTS() (P2OUT& 0x02) // check RTS

  #define CHECK_CTS() (P2IN& 0x01) // check CTS

  #define ASSERT_RTS() (P2OUT &= ~0x02) // assert RTS

  #define DEASSERT_RTS() (P2OUT|= 0x01) // deassert RTS

  #define DEASSERT_HRDY() (P2OUT |= 0x04) // deassert _HRDY

  #define ASSERT_HRDY() (P2OUT &= ~0x04) // assert _HRDY

  在ldvsci.h中,修改了void SysResetSCI(void) ,void SysInit(void),

  void SysUpdateWDT(void), @interrupt void RxInt (void)以及@interrupt void TxInt (void)中与MSP430F149相关的程序。

  其他文件做少许改变,其中platform.h定义了BIG_ENDIAN and LITTLE_ENDIAN的区别,对应于哈佛结构和冯.诺伊曼体系结构。由于MSP430F149核是冯.诺伊曼体系结构的,所以ShortStack需用LITTLE_ENDIAN(即高字节存在高位地址)。

  2.3 ShortStack的硬件件实现

  从处理器(如图2)采用TP/FT-10F控制模块,该模块由微型电路板构成, 包括一个3150 芯片、一块闪存、一个通信收发器、电源连接器、I/O 口和网络接口, 其中IO_0~IO_10 为神经元芯片3150 的11 个I/O 管脚用于对控制设备的连接, DataA 和DataB 是FTT- 10收发器与网络的连接口,它能够将主处理器经过处理输出的数据发送到LON 总线,也可以将LON 总线上的消息传送给主处理器。

 

[1]  

【责编:Luzi】

--------------------next---------------------

阅读(418) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~