基于Lonworks总线的嵌入式智能节点的设计

发布者:leader5最新更新时间:2013-06-29 来源: dzsc关键字:Lonworks总线  智能节点  MSP430F149 手机看文章 扫描二维码
随时随地手机看文章
    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(即高字节存在高位地址)。[page]

  2.3 ShortStack的硬件件实现

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

  主处理器与神经元芯片之间的通信采用SCI模式。SCI接口是一个半双工串行异步通信接口,通信的格式是:一个起始位,8个数据位和一个停止位(LSB在先)。通信模式的选择由IO3确定,IO3接地选择SCI通信模式。IO5、IO6则用来选择通讯速率。

  3 μcos_Ⅱ的移植

  μcos_Ⅱ的全部源代码,共16个文件。移植工作涉及的源文件分为三部分:与处理器无关的代码部分,这部分代码完成操作系统的基本功能,包括10个文件,即:OS_CORE.C,OS_MBOX.C,OS_MEM.C,OS_Q.C,OS_SEM .C,OS_TASK.C,OS_TIME.C.OS_FLAG.C,OS MUTEX.C,uCOS_II.H。设置代码部分,包括OS—CFG.H 和INCLUDES.H 两个头文件,用来进行操作系统配置。

  图2  主从处理器连接图

  最主要的部分是与处理器有关部分的代码,包括一个头文件OS_CPU.H、一个C代码文件OS_CPU_C.C 及一个汇编文件OS_CPU_A.ASM,将其移植到MSP430F149处理器上,需要修改这3个与体系结构相关的文件,代码量大约是500行。下面分别介绍这3个文件的移植。

  OS_CPU.H这部分代码包括数据类型定义、堆栈单位定义、堆栈增长方向定义、关中断和开中断的宏定义以及进行任务切换的宏定义等。其中,为了在不同的工作模式下调用系统的底层接口函数不受访问权限的限制,使用软中断SWI。堆栈的单位与CPU的寄存器长度一致,结构常量OS_STK_GROWTH置1,表示堆栈从由高地址向低地址增长。

  OS_CPU_C.C要求编写六个简单的c函数:OSTaskSiklnit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook();OSTimeTickHook()唯一必要的函数是OSTaskStklnit(),其它五个函数必须声明但没必要包含。对于OSTaskStklnit()而言,OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构,OSTaskStkInit()返回堆栈指针所指的地址,OSTaskCreate()会获得该地址并将它保存到任务控制块(OS TCB)中。

  CPU_ A.ASM要求编写四个简单的汇编语言函数:OSStartHighRdy();OSCtxSw();

  OSIntCtxSw();OSTickISR()。将所有与处理器相关的代码放到OS_CPU_C.C文件中,而不必放在一些分散的汇编语言文件中。

  (1)OSStartHighRdy():运行高优先级就绪任务函数OSStartHighRdy()必须调用OSTaskSwHook(),因为OSTaskSwHook()可以通过检查OSRunning而确定是OSStartHighRdy()在调用它(OSRunning为FALSE)还是正常的任务切换在调用它(OSRunning为TRUE)。OSStartHighRdy()还必须在最高优先级任务恢复之前和调用OSTaskSwHook()之后设置OSRunning为TRUE。

  (2)OSCtxSw()、OSIntCtxSw():上下文切换函数任务级的切换是通过发软中断命令来完成的,其中断向量地址必须指向OSCtxSw()。中断级的切换由OSIntExit()通过调用OSintCtxSw()来执行切换功能。

  (3)OSTickISR():定时中断函数OSTickISR()函数主要负责进人中断时保存处理器寄存器内容,完成任务切换退出时恢复处理器寄存器内容并返回,相当于中断服务程序的入口。

  4   μc/os_Ⅱ与ShortStack的结合

  因为μc/os_Ⅱ嵌入式操作系统代码和ShortStack应用程序代码的固有的特征,两者可以有机的结合在一起。μcos_Ⅱ由系统服务,如邮箱、内存管理、消息队列、信号量管理等,对于这些服务是在OS_CFG.h定义了的,当设计的系统要使用这些服务时只需要将定义的值改为1即可。将ShortStack应用程序中的常量定义全部放在OS_CFG.h中。这样可以同时对操作系统各种服务函数和ShortStack 的API和APP函数实现了裁减。

  将ShortStack应用程序当作μcos_Ⅱ操作系统的一个任务运行。先定义堆栈,以便保存本任务在任务切换时单片机的寄存器的当前值,当μcos_Ⅱ下次调度到该任务运行时就可以从堆栈恢复CPU的值,从而该任务继续运行。程序如下:

  OS_STK TaskStartStk[TASK_STK_SIZE];  //任务Task1的任务堆栈

  OS_STK ShortStackStk[TASK_STK_SIZE];  //ShortStack的任务堆栈

  …  //其他任务堆栈

  Void main(void)

  {

  OSInit();

  OSTaskCreat(Task1,(void *)0,& TaskStartStk[TASK_STK_SIZE-1],0);

  OSTaskCreat(ShortStack,(void *)0,& ShortStackStk[0],2);

  …  //创建其他任务

  OSStart();

  return 0;

  }

  void ShortStack(void)

  {

  lonInit();

  for(; ; )

  {

  lonEventHandler();//周期性调用检查是否有任何LonWorks事件要处理

  }

  }[page]

  由于μc/os_Ⅱ操作系统没有任何的硬件驱动,所以用户自己将ShortStack串口驱动、输入输出队列操作部分扩展为该操作系统的一部分。此外,系统可以添加其他特定的任务,通过系统调度,实现节点的合理利用,增加节点的实用性。如图4所示。

  最后,将带有TP/FT-10F控制模块的MSP430F149芯片接入Gizmo4开发板,通过Nodebuilder开发工具编译,进入调试界面,利用LonMaker连接为两节点网络,测试两节点是否通讯。

  图4 软件结构图

  5  结束语

  MSP430F149是16bit的RISC微处理器,该处理器特别适用于手持式设备以及高性价比、低功耗的网络设备,它集成了中断控制、功率控制、存储控制、UART、PWM、ADC等丰富的资源。由于工业、家庭网络化的需求,以及LonWorks总线便捷的入网方式,可以使该多用途智能节点分散自制,每个节点一方面分散地解决其特定的任务,另一方面通过点对点、点对多点的通讯,解决节点之间的信息传输,实现分散基础上的融合。上位机要完成对LON 网络的监控与管理功能,二者之间必须能进行动态数据交换。LON 总线技术还提供了DDE Server 软件。DDE Server 能够实现LON网络和任何具有DDE 功能的Windows 应用程序间交换网络变量和信息。系统提供给用户一个十分友好的人机界面,用户可通过上位机设置各节点实时运行情况以及历史运行记录、打印等。

参考文献:

[1]. MSP430F149 datasheet http://www.dzsc.com/datasheet/MSP430F149_4.html.
[2]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.

关键字:Lonworks总线  智能节点  MSP430F149 引用地址:基于Lonworks总线的嵌入式智能节点的设计

上一篇:HOLTEK新推出8051 A/D Flash Type MCU系列
下一篇:嵌入式无线实时图像传输系统设计方案

推荐阅读最新更新时间:2024-03-16 13:25

基于SST25VF020的数据存储系统设计
前言   近年来,闪速存储器已应用在数以千计的产品中,特别是移动通信、MP3音乐播放器、手持PC管理器、数码相机、网络路由器、舱内录音机等工业产品。闪速存储器由于具有非易失性和电可编程擦除性,从而具有半导体存储器的读取速度快、存储容量大等优点,同时又克服了DRAM及SRAM断电丢失所存数据的缺陷。与EPROM相比较,闪速存储器的优势在于系统电可擦除和可重复编程,且不需要特殊的高电压,此外,它还有成本低,密度大的特点。   闪速存储器由于各自技术架构的不同,又可分为NOR技术、NAND技术、AND技术和由EEPROM派生的闪速存储器。以EEPROM做闪速存储阵列的Flash Memory,如SST的小扇区结构闪速存储器具有EEPR
[单片机]
基于MSP430F149的串口服务器设计
随着计算机网络技术的发展,各种工业设备、试验设备以及家电等正在走向网络化,“让全世界的设备连入网络”已成为全球共识,所以把具有串口通信接口的设备连入网络,进行远程数据交换和网络控制,显得尤为重要。 本文采用了TI公司生产的16位超低功耗的混合信号处理器(mixed signal processor)和Cirrus公司生产的高集成度的全面支持IEEE802.3标准的以太网控制器CS8900A来设计嵌入式串口服务器终端,以模块化设计思想提供软件设计,鉴于嵌入式系统有限的内存,对TCP/IP进行了精简,并进行了调试。 1 硬件电路设计 主控制器MSP430 是美国Texas Instruments(TI)公司于1996年开始推向市
[单片机]
基于<font color='red'>MSP430F149</font>的串口服务器设计
采用LonWorks现场总线的步进电机群控
在研制某大型医疗设备控制系统时,其内部共有26个大小不一的进步电机需要控制。由于大部分的电机和控制器需要嵌人治疗设备内部,而且这些电机都驱动有对应的机械运动装置,所以要求尽量减少上位主控机与各控制器之间的连线。若采用传统的集中式或集散式控制方式将无法满足现场的要求。在对这些受控电机的控制任务进行了仔细分析后发现,系统的实时性要求也不是太高。为此我们采用了LonWorks现场总线技术来实现对这些步进电机的控制。         一、主控机相关控制任务描述                       系统主体结构如图1所示。所有受控的步进电机及其控制器都将安装放置于治疗设备内,它们通过一条78K速率的双绞线与主
[嵌入式]
基于LPC2292的CAN总线智能节点设计
引言 CAN(Controller Area Network)总线控制器局域网络是在1986年2月的SAE大会上,由RoberBosch公司首先提出的。CAN总线是一种串行通信协议,它能有效支持高安全等级的分布式实时控制,其最初的目的是用在汽车上。但由于采用了许多新技术及独特的设计,CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性,目前的应用范围已不局限于汽车行业,而是扩展到了机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械、家用电器及传感器等诸多领域。CAN节点的设计多采用单片机,为此,本文给出了一种基于本身已经嵌入了CAN控制器的单片机LPC2292的CAN总线智能节点的设计方案。 1
[工业控制]
基于LPC2292的CAN<font color='red'>总线</font><font color='red'>智能</font><font color='red'>节点</font>设计
MSP430 DM430-A开发板学习笔记(四)MSP430f149使用4针0.96 OLED屏幕
一、基本配置 本文基于以下文章(使用f5529运行oled)对一些端口进行了改动并补充了管脚连接图,使得f149能够使用4针oled屏幕 IIC点亮OLED //型号MSP430F5529( 该文章提供了大量代码) MSP430F149程序移植——0.96OLED(ssd1306驱动)(该文章讲述了一些关于f149的引脚知识) 分享MSP430F149IIC汇编源代码(在该文章提供的代码中我找到了msp430f149对应的SCL SDA引脚) 1.oled屏幕引脚定义 2.MSP430f149引脚定义 3.实物连接图 4针oled屏幕的 sda接p2.1 scl接p2.0 二、代码 基本代码可在以下文章中阅
[单片机]
MSP430 DM430-A开发板学习笔记(四)<font color='red'>MSP430f149</font>使用4针0.96 OLED屏幕
应用MSP430F149单片机的超低频波形发生器
    摘要: 介绍了应用MSP430F149芯片开发超低频波形发生器的设计原理及其在生理滤波器调试中的应用。     关键词: MSP430F149芯片 单片机 波形发生器 滤波系统 在载人运输系统振动分析仪中常用超低频波形发生器作为仿真的信号源。要求在0.1Hz~100Hz范围内稳定工作,波形失真小,且能以0.1Hz为步长细调。传统超低频波形发生器设计中存在着很多的不足:(1)应用通用电路,元器件多,尤其是电容的体积大,且波形的稳定性差、失真大,调节上极不方便;(2)应用专用电路,如ICL8038、MAX038,其失真和稳定性方面有明显提高,但在超低频应用上仍不合适。而且电路调节器件多,对电源的要求较高,代
[应用]
基于双口RAM的LonWorks智能通信节点设计
摘要:介绍一种基于双口RAM的LonWorks现场总线智能通信节点的设计方法,并给出详细的设计步骤、硬件及软件实现。通过此LonWorks智能通信节点,能够完成RS-232-C/RS-485标准与LonTalk协议间的转换提供RS-232-C/RS-485网络到LonWorks网络的接口,因此,具有很高的应用价值。 关键词:现场总线 LonWorks 智能节点 神经元芯片 双口RAM 引言 LonWorks(Local Operating Networks,局部操作网络)总线是由美国Echelon公司推出的一种现场总线技术。由于LonWorks控制网络的开放性、高速性和互操作性,它已广泛用于工业、楼宇、家庭、办公设备、交通
[工业控制]
msp430f149通过蓝牙HC-05与手机通讯
前面一篇实现蓝牙HC-05、06与单片机的连接及与手机通信的总结中详细介绍了蓝牙与STC系列MCU的连接与配置,这次将msp430f149通过UART1与蓝牙HC-05连接,并实现与手机通信作简单总结。 通信效果:发送一段字码,蓝牙接收到后自动返回。 msp430f149是一款比较常用的16位单片机,拥有两个串口模块,UART0(RXD:P11,TXD:P22)和UART1(RXD:P37,TXD:P36)。通常UART0较为常用,可用作BSL下载,或用作串口(蓝牙)通信。最近试了下UART1,觉得将他用于蓝牙通信非常合适。 1、端口连接 端口连接依然是差分连接,如下图: 2、HC-05基本配置 这里不详细说明,
[单片机]
<font color='red'>msp430f149</font>通过蓝牙HC-05与手机通讯
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved