www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]1 前言LONWorks現(xiàn)場總線是美國Echelon公司推出的局部操作網(wǎng)絡(luò),它具有統(tǒng)一性、開放性、互操作性及支持多種通信介質(zhì)等優(yōu)良性能,是當(dāng)今最流行的現(xiàn)場總線之一。但是由于LonWor

1 前言

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

2 ShortSTack的介紹和實現(xiàn)

2.1 ShortStack的結(jié)構(gòu)

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

 

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

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

2.2 ShortStack的軟件實現(xiàn)

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

在ldvsci.h中,修改為:

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

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

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

#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ā)送標(biāo)志復(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的區(qū)別,對應(yīng)于哈佛結(jié)構(gòu)和馮.諾伊曼體系結(jié)構(gòu)。由于MSP430F149核是馮.諾伊曼體系結(jié)構(gòu)的,所以ShortStack 需用LITTLE_ENDIAN(即高字節(jié)存在高位地址)。

2.3 ShortStack的硬件件實現(xiàn)

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

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

3 μcos_Ⅱ的移植

μcos_Ⅱ的全部源代碼,共16個文件。移植工作涉及的源文件分為三部分:與處理器無關(guān)的代碼部分,這部分代碼完成操作系統(tǒng)的基本功能,包括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。設(shè)置代碼部分,包括OS—CFG.H 和INCLUDES.H 兩個頭文件,用來進行操作系統(tǒng)配置。

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

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

OS_CPU_C.C要求編寫六個簡單的c函數(shù):OSTaskSiklnit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook();OSTimeTickHook() 唯一必要的函數(shù)是OSTaskStklnit(),其它五個函數(shù)必須聲明但沒必要包含。對于OSTaskStklnit()而言,OSTaskCreate()和OSTaskCreateExt()通過調(diào)用OSTaskStkInit()來初始化任務(wù)的堆棧結(jié)構(gòu),OSTaskStkInit()返回堆棧指針?biāo)傅牡刂?,OSTaskCreate()會獲得該地址并將它保存到任務(wù)控制塊(OS TCB)中。

CPU_ A.ASM要求編寫四個簡單的匯編語言函數(shù):OSStartHighRdy();OSCtxSw();[!--empirenews.page--]

OSIntCtxSw();OSTickISR()。將所有與處理器相關(guān)的代碼放到OS_CPU_C.C文件中,而不必放在一些分散的匯編語言文件中。

(1)OSStartHighRdy():運行高優(yōu)先級就緒任務(wù)函數(shù) OSStartHighRdy()必須調(diào)用OSTaskSwHook(),因為OSTaskSwHook()可以通過檢查OSRunning而確定是 OSStartHighRdy()在調(diào)用它(OSRunning為FALSE)還是正常的任務(wù)切換在調(diào)用它(OSRunning為TRUE)。 OSStartHighRdy()還必須在最高優(yōu)先級任務(wù)恢復(fù)之前和調(diào)用OSTaskSwHook()之后設(shè)置OSRunning為TRUE。

(2)OSCtxSw()、OSIntCtxSw():上下文切換函數(shù)任務(wù)級的切換是通過發(fā)軟中斷命令來完成的,其中斷向量地址必須指向OSCtxSw()。中斷級的切換由OSIntExit()通過調(diào)用OSintCtxSw()來執(zhí)行切換功能。

(3)OSTickISR():定時中斷函數(shù)OSTickISR()函數(shù)主要負(fù)責(zé)進人中斷時保存處理器寄存器內(nèi)容,完成任務(wù)切換退出時恢復(fù)處理器寄存器內(nèi)容并返回,相當(dāng)于中斷服務(wù)程序的入口。

4 μc/os_Ⅱ與ShortStack的結(jié)合

因為μc/os_Ⅱ嵌入式操作系統(tǒng)代碼和ShortStack應(yīng)用程序代碼的固有的特征,兩者可以有機的結(jié)合在一起。μcos_Ⅱ由系統(tǒng)服務(wù),如郵箱、內(nèi)存管理、消息隊列、信號量管理等,對于這些服務(wù)是在OS_CFG.h定義了的,當(dāng)設(shè)計的系統(tǒng)要使用這些服務(wù)時只需要將定義的值改為1即可。將ShortStack應(yīng)用程序中的常量定義全部放在OS_CFG.h中。這樣可以同時對操作系統(tǒng)各種服務(wù)函數(shù)和 ShortStack 的API和APP函數(shù)實現(xiàn)了裁減。

將ShortStack應(yīng)用程序當(dāng)作μcos_Ⅱ操作系統(tǒng)的一個任務(wù)運行。先定義堆棧,以便保存本任務(wù)在任務(wù)切換時單片機的寄存器的當(dāng)前值,當(dāng)μcos_Ⅱ下次調(diào)度到該任務(wù)運行時就可以從堆?;謴?fù)CPU的值,從而該任務(wù)繼續(xù)運行。程序如下:

OS_STK TaskStartStk[TASK_STK_SIZE]; //任務(wù)Task1的任務(wù)堆棧

OS_STK ShortStackStk[TASK_STK_SIZE]; //ShortStack的任務(wù)堆棧

…  //其他任務(wù)堆棧

Void main(void)

{

OSInit();

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

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

…  //創(chuàng)建其他任務(wù)

OSStart();

return 0;

}

void ShortStack(void)

{

lonInit();

for(; ; )

{

lonEventHandler();//周期性調(diào)用檢查是否有任何LonWorks事件要處理

}

}

由于μc/os_Ⅱ操作系統(tǒng)沒有任何的硬件驅(qū)動,所以用戶自己將ShortStack串口驅(qū)動、輸入輸出隊列操作部分?jǐn)U展為該操作系統(tǒng)的一部分。此外,系統(tǒng)可以添加其他特定的任務(wù),通過系統(tǒng)調(diào)度,實現(xiàn)節(jié)點的合理利用,增加節(jié)點的實用性。如圖4所示。

最后,將帶有TP/FT-10F控制模塊的MSP430F149芯片接入Gizmo4開發(fā)板,通過Nodebuilder開發(fā)工具編譯,進入調(diào)試界面,利用LonMaker連接為兩節(jié)點網(wǎng)絡(luò),測試兩節(jié)點是否通訊。

 

5 結(jié)束語

MSP430F149是16bit的RISC微處理器,該處理器特別適用于手持式設(shè)備以及高性價比、低功耗的網(wǎng)絡(luò)設(shè)備,它集成了中斷控制、功率控制、存儲控制、UART、PWM、ADC等豐富的資源。由于工業(yè)、家庭網(wǎng)絡(luò)化的需求,以及 LonWorks總線便捷的入網(wǎng)方式,可以使該多用途智能節(jié)點分散自制,每個節(jié)點一方面分散地解決其特定的任務(wù),另一方面通過點對點、點對多點的通訊,解決節(jié)點之間的信息傳輸,實現(xiàn)分散基礎(chǔ)上的融合。上位機要完成對LON 網(wǎng)絡(luò)的監(jiān)控與管理功能,二者之間必須能進行動態(tài)數(shù)據(jù)交換。LON 總線技術(shù)還提供了DDE Server 軟件。DDE Server 能夠?qū)崿F(xiàn)LON網(wǎng)絡(luò)和任何具有DDE 功能的Windows 應(yīng)用程序間交換網(wǎng)絡(luò)變量和信息。系統(tǒng)提供給用戶一個十分友好的人機界面,用戶可通過上位機設(shè)置各節(jié)點實時運行情況以及歷史運行記錄、打印等。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉