历史上的今天
返回首页

历史上的今天

今天是:2025年03月04日(星期二)

正在发生

2021年03月04日 | 基于Lonworks总线的嵌入式智能节点的设计

2021-03-04 来源:eefocus

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 总线上的消息传送给主处理器。


主处理器与神经元芯片之间的通信采用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,表示堆栈从由高地址向低地址增长。


推荐阅读

史海拾趣

Fischer Elektronik公司的发展小趣事

为了更好地服务全球客户,Fischer Elektronik积极实施国际化战略。公司在全球范围内建立了多个生产基地和销售网络,以确保能够快速响应市场需求并提供高质量的产品和服务。通过多年的努力,Fischer Elektronik已经成功进入了众多国际市场,并与众多知名企业建立了长期合作关系。这些合作不仅提升了公司的品牌知名度,也为其带来了更多的商业机会和发展空间。

BOWEI公司的发展小趣事

随着电子技术的不断进步,Fischer Elektronik始终走在行业前沿,不断推出创新产品。公司研发的散热系统、散热半导体和散热器等产品,不仅性能卓越,而且设计精良,满足了各种复杂应用场景的需求。此外,Fischer Elektronik还不断拓展产品线,增加了连接器、外壳等系列产品,进一步巩固了其在电子元件市场的地位。这些创新和技术突破,为公司的持续发展提供了强大动力。

Alpha (Taiwan)公司的发展小趣事

随着全球电子市场的不断扩大,Alpha (Taiwan)公司积极寻求国际合作,拓宽市场渠道。公司与多家国际知名电子企业建立了战略合作关系,共同研发新产品,开拓新市场。此外,公司还积极参加国际电子展会,展示公司的最新技术和产品,吸引更多的潜在客户。这些国际合作的开展,不仅提升了公司的国际影响力,也为公司的长远发展注入了新的动力。

Abilis Systems公司的发展小趣事

随着数字化时代的到来,Alpha (Taiwan)公司紧跟时代步伐,积极推动数字化转型。公司引进先进的数字化设备和技术,对生产线进行智能化改造,提高了生产效率和产品质量。同时,公司还加强了对大数据、云计算等技术的应用,实现了对市场需求、客户反馈等信息的实时分析和处理。这些数字化转型的举措,不仅提升了公司的竞争力,也为公司的未来发展奠定了坚实的基础。

请注意,这些故事是基于一般情况和行业趋势构建的,并非Alpha (Taiwan)公司的实际经历。要了解Alpha (Taiwan)公司的真实发展故事,建议查阅相关公司的官方资料、新闻报道或行业分析报告。

ADMOS公司的发展小趣事

在电子行业竞争日益激烈的背景下,ADMOS公司始终坚守质量第一的原则。公司建立了完善的质量管理体系,从原材料采购到产品生产的每一个环节都进行严格把控。这种对质量的执着追求使得ADMOS的产品在市场上获得了广泛的认可和信任,也为公司赢得了众多长期合作伙伴。

FINTEK公司的发展小趣事

随着ASP芯片市场的成功,FINTEK公司意识到单一产品线的局限性。为了保持竞争优势并开拓新市场,公司开始多元化拓展产品线。经过市场调研和技术储备,FINTEK相继推出了数字信号处理器(DSP)、微控制器(MCU)以及射频前端模块(RF FEM)等一系列新产品。这些产品的推出不仅丰富了公司的产品线,也进一步巩固了FINTEK在半导体领域的市场地位。

问答坊 | AI 解惑

求助,在5502中SDRAM的写入过程要用210ns,如何提升速度

在TMS320VC5502中,对SDRAM写操作,居然要210ns,简直无法干活,请教前辈,怎样解决这个问题?我对EMIF的相关寄存器进行设置,如WRITE SETUP 、WRITE STROBE 、WRITE HOLD ,对写操作消耗时间一点都没变化,很郁闷呀,在论坛上有说这是5502本身问题 ...…

查看全部问答>

vxworks下跨网段无法ping通???

老弟最近在开发过程遇到一个问题,就是开发出的vxworks程序 1、跨网段无法ping通,报文也过不去。 现象与现状:    同网段可以ping通,报文也可以过去。    目前的所跨的两个采用B类地址,从第二位开始有区别区分子网。分 ...…

查看全部问答>

软件工程应届生找不到工作

我是上海一大学软件工程专业的09届应届生,本科,不是很会说话。 在学校里学的是单片机开发之类的(偏软件 C语言),接触过ARM+Wince之类的嵌入式软件的开发。(其实学校里嵌入式软件方面的课基本就没有,都是我凭着兴趣自学的)单片机的水平达到自 ...…

查看全部问答>

关于2440 WINCE5.0 BSP中EBOOT的一点疑问,谢谢解疑

我在三星官方下了个SMDK2440A WINCE5.0的BSP,弄NBOOT+EBOOT启动的时候发现个问题: 在EBOOT中的main.c文件: void main(void) {             // Clear LEDs.     //        ...…

查看全部问答>

嵌入式操作系统裁剪是什么意思?

不裁剪不行吗? 我没有用到的功能我不用,比如任务的调度什么的,也不会影响我最终生成的可执行文件的大小啊。 …

查看全部问答>

射极跟随器问题

本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 我想用三极管打一个射极跟随器  应该选取什么型号三极管 …

查看全部问答>

TC1-1T+ 巴伦 用的是什么型号的磁芯?

TC1-1T+ 巴伦 用的是什么型号的磁芯?…

查看全部问答>

【 低功耗】利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用

利用 Xilinx 功耗估计器分七步精确分析最坏情况下的功耗使用 [ 本帖最后由 hangsky 于 2011-11-8 13:26 编辑 ]…

查看全部问答>

整理电脑有一些以前下载的文档

整理电脑有一些以前下载的文档…

查看全部问答>

如何跟踪 程序进入FaultISR的原因!

static voidFaultISR(void){    //    // Enter an infinite loop.    //    while(1)    {    }}程序调试时,经常进入这个函数里!如何有效的跟踪它 ...…

查看全部问答>