<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 基于Lonworks總線(xiàn)的嵌入式智能節點(diǎn)的設計

基于Lonworks總線(xiàn)的嵌入式智能節點(diǎn)的設計

作者:王振臣,顏旭斌,王樹(shù)賢 時(shí)間:2008-08-27 來(lái)源:微計算機信息 收藏

摘要:本文結合LonWorks現場(chǎng)總線(xiàn)的技術(shù)和基于芯片MSP430F149上嵌入μcos_Ⅱ操作系統的開(kāi)發(fā)的優(yōu)點(diǎn),使其應用于的LON控制網(wǎng)絡(luò )。應用程序被移植到目標平臺。此外,對于這種系統開(kāi)發(fā)的基本方法也進(jìn)行了分析。 

關(guān)鍵詞:;;MSP430F149

本文引用地址:http://dyxdggzs.com/article/87438.htm

  1   前言

  LonWorks現場(chǎng)總線(xiàn)是美國Echelon公司推出的局部操作網(wǎng)絡(luò ),它具有統一性、開(kāi)放性、互操作性及支持多種通信介質(zhì)等優(yōu)良性能,是當今最流行的現場(chǎng)總線(xiàn)之一。但是由于LonWorks控制節點(diǎn)的核心神經(jīng)元芯片(Neuron Chip)的應用處理能力相對較弱,因而對于復雜的應用常使用主從處理器結構,主處理器完成用戶(hù)的應用功能,而把Neuron芯片作為通信協(xié)處理器。由于可以提高了節點(diǎn)的處理能力,節省資金和開(kāi)發(fā)時(shí)間,因此,具有多功能的通用主處理器具有很好的應用前景。本文采用的MSP430F149主處理器是TI公司基具有較高的集成度的芯片,簡(jiǎn)化了應用系統的硬件設計,適合作為。

  2   的介紹和實(shí)現

  2.1  ShortStack的結構

  ShortStack微服務(wù)器是Echelon公司提供的一套開(kāi)發(fā)包,其結構圖如下:


圖1  ShortStack結構圖

  由圖可看到,主處理器與ShortStack 微服務(wù)器通信通過(guò)ShortStack API函數來(lái)實(shí)現,通常使用其中的5個(gè),lonInit(),lonEventHandler(),lonPropagateNv(),lonPollNv()和lonsendServicePin()。ShortStack Micro Server,運行ShortStack固件,運行LonTalk協(xié)議的1~6層;主處理器運行SCI串口驅動(dòng)程序,運行ShortStack API函數,處理與Lonworks其他節點(diǎn)通信;主處理器應用部分調用ShortStack API函數。主處理器設備的接口支持文件,由Neuron C model file 通過(guò)使用ShortStack向導來(lái)產(chǎn)生,產(chǎn)生數據表定義網(wǎng)絡(luò )變量和收發(fā)器參數。而Model file只需要聲明網(wǎng)絡(luò )變量NVs,配置屬性CPs和功能模塊FBs,因此,可以不需要熟悉Neuron C。

  串行驅動(dòng)程序為主處理器和從處理器之間提供一個(gè)獨立的接口。整個(gè)串行驅動(dòng)程序由兩部分構成:上層驅動(dòng)程序為主應用程序提供一個(gè)接口;底層驅動(dòng)程序完成與神經(jīng)元芯片的硬件接口。上層和底層驅動(dòng)之間的數據交換通過(guò)緩沖隊列完成。底層驅動(dòng)程序與從處理器的通訊包括SCI上傳和SCI下傳兩類(lèi),SCI上傳是數據由神經(jīng)元芯片上傳到主處理器;SCI下傳是數據由主處理器下傳到神經(jīng)元芯片。

  2.2  ShortStack的軟件實(shí)現

  采用提供的Neuron C模板事例修改編寫(xiě)。主要修改ldvsci.h和ldvsci.c中與MSP430F149處理器相關(guān)的語(yǔ)句。

  在ldvsci.h中,修改為:

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

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

  #define ENABLE_TX_COMPLETE_ISR() (IFG1|=0x80)   //USART0發(fā)送標志

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

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

  #define DISABLE_TX_COMPLETE_ISR()  (IFG1 &= ~0x80)    // USART0發(fā)送標志復位

  #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相關(guān)的程序。

  其他文件做少許改變,其中platform.h定義了BIG_ENDIAN and LITTLE_ENDIAN的區別,對應于哈佛結構和馮.諾伊曼體系結構。由于MSP430F149核是馮.諾伊曼體系結構的,所以ShortStack需用LITTLE_ENDIAN(即高字節存在高位地址)。

  2.3 ShortStack的硬件件實(shí)現

  從處理器(如圖2)采用TP/FT-10F控制模塊,該模塊由微型電路板構成, 包括一個(gè)3150 芯片、一塊閃存、一個(gè)通信收發(fā)器、電源連接器、I/O 口和網(wǎng)絡(luò )接口, 其中IO_0~IO_10 為神經(jīng)元芯片3150 的11 個(gè)I/O 管腳用于對控制設備的連接, DataA 和DataB 是FTT- 10收發(fā)器與網(wǎng)絡(luò )的連接口,它能夠將主處理器經(jīng)過(guò)處理輸出的數據發(fā)送到LON 總線(xiàn),也可以將LON 總線(xiàn)上的消息傳送給主處理器。

  主處理器與神經(jīng)元芯片之間的通信采用SCI模式。SCI接口是一個(gè)半雙工串行異步通信接口,通信的格式是:一個(gè)起始位,8個(gè)數據位和一個(gè)停止位(LSB在先)。通信模式的選擇由IO3確定,IO3接地選擇SCI通信模式。IO5、IO6則用來(lái)選擇通訊速率。

  3 μcos_Ⅱ的移植

  μcos_Ⅱ的全部源代碼,共16個(gè)文件。移植工作涉及的源文件分為三部分:與處理器無(wú)關(guān)的代碼部分,這部分代碼完成操作系統的基本功能,包括10個(gè)文件,即: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 兩個(gè)頭文件,用來(lái)進(jìn)行操作系統配置。


圖2  主從處理器連接圖

  最主要的部分是與處理器有關(guān)部分的代碼,包括一個(gè)頭文件OS_CPU.H、一個(gè)C代碼文件OS_CPU_C.C 及一個(gè)匯編文件OS_CPU_A.ASM,將其移植到MSP430F149處理器上,需要修改這3個(gè)與體系結構相關(guān)的文件,代碼量大約是500行。下面分別介紹這3個(gè)文件的移植。

  OS_CPU.H這部分代碼包括數據類(lèi)型定義、堆棧單位定義、堆棧增長(cháng)方向定義、關(guān)中斷和開(kāi)中斷的宏定義以及進(jìn)行任務(wù)切換的宏定義等。其中,為了在不同的工作模式下調用系統的底層接口函數不受訪(fǎng)問(wèn)權限的限制,使用軟中斷SWI。堆棧的單位與CPU的寄存器長(cháng)度一致,結構常量OS_STK_GROWTH置1,表示堆棧從由高地址向低地址增長(cháng)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>