當(dāng)前位置:首頁(yè) > 物聯(lián)網(wǎng) > 網(wǎng)絡(luò)協(xié)議
[導(dǎo)讀] 摘要:基于提高CAN總線(xiàn)組網(wǎng)能力的考慮,提出一種新穎的CAN中繼器設(shè)計(jì)方法;闡述以L(fǎng)PC2119控制器為核心的硬件設(shè)計(jì)方案;詳細(xì)分析在μC/OSII實(shí)時(shí)操作系統(tǒng)下的軟件實(shí)現(xiàn)過(guò)程;針對(duì)中繼器

摘要:基于提高CAN總線(xiàn)組網(wǎng)能力的考慮,提出一種新穎的CAN中繼器設(shè)計(jì)方法;闡述以L(fǎng)PC2119控制器為核心的硬件設(shè)計(jì)方案;詳細(xì)分析在μC/OSII實(shí)時(shí)操作系統(tǒng)下的軟件實(shí)現(xiàn)過(guò)程;針對(duì)中繼器的實(shí)時(shí)性和安全性以及總線(xiàn)與總線(xiàn)之間可能存在的速度不匹配的問(wèn)題,確立提升緊急任務(wù)優(yōu)先級(jí)、建立相關(guān)事件標(biāo)志、合理地對(duì)事件與任務(wù)進(jìn)行同步的改進(jìn)方法,從而有效地解決組網(wǎng)中最遠(yuǎn)傳輸距離和最大節(jié)電數(shù)限制的問(wèn)題。

  關(guān)鍵詞:中繼器 CAN LPC2119 μC/OSII

  引 言

  CAN總線(xiàn)的直接通信距離只有10 km左右,而且由于收發(fā)器驅(qū)動(dòng)能力的限制,總線(xiàn)上最多只能掛110個(gè)節(jié)點(diǎn),給系統(tǒng)組網(wǎng)帶來(lái)一定的困難。CAN中繼器就是為了解決這個(gè)問(wèn)題而設(shè)計(jì)的。對(duì)CAN中繼器初始化參數(shù)進(jìn)行設(shè)置,可以在不同的網(wǎng)段內(nèi)采用不同的通信速率,還可以對(duì)報(bào)文進(jìn)行過(guò)濾,減輕總線(xiàn)負(fù)擔(dān)。

  1 CAN中繼器的硬件設(shè)計(jì)

  1.1 微控制器LPC2119簡(jiǎn)介

  CAN中繼器是以ARM微控制器LPC2119為核心的軟硬件系統(tǒng)。LPC2119是Philips公司生產(chǎn)的一款基于支持實(shí)時(shí)仿真和跟蹤的16/32位ARM7TDMISMCU,帶有128 KB嵌入的高速Flash存儲(chǔ)器。獨(dú)特的加速結(jié)構(gòu)使32位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對(duì)代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16位Thumb模式將代碼規(guī)模降低超過(guò)30 %,而性能的損失卻很小。LPC2119內(nèi)部集成2個(gè)CAN控制器。它的主要特性有:?jiǎn)蝹€(gè)總線(xiàn)上的數(shù)據(jù)傳輸速率高達(dá)1 Mb/s;32位寄存器和RAM訪(fǎng)問(wèn);兼容CAN 2.0B, ISO 118981規(guī)范;全局驗(yàn)收濾波器可以識(shí)別所有的11位和29位Rx標(biāo)識(shí)符;驗(yàn)收濾波器為選擇的標(biāo)準(zhǔn)標(biāo)識(shí)符提供Full CANstyle自動(dòng)接收。

  1.2 LPC2119內(nèi)部CAN控制器與SJA1000比較

  LPC2119內(nèi)部集成的CAN控制器與Philips公司的SJA1000 CAN控制器相比較大致相同,只是在驗(yàn)收濾波這一環(huán)略有不同,這為習(xí)慣SJA1000的開(kāi)發(fā)人員采用LPC2119提供了方便。SJA1000驗(yàn)收濾波器由驗(yàn)收代碼寄存器和驗(yàn)收屏蔽寄存器定義,要接收?qǐng)?bào)文的位模式在驗(yàn)收代碼寄存器中定義,相應(yīng)的驗(yàn)收屏蔽寄存器允許定義某些位為“無(wú)關(guān)”,通過(guò)模式寄存器可以選擇不同的過(guò)濾模式:?jiǎn)芜^(guò)濾模式和雙過(guò)濾模式。而對(duì)LPC2119內(nèi)部集成的CAN控制器,全局驗(yàn)收過(guò)濾器包含一個(gè)512&TImes;32(2 KB)的RAM,通過(guò)軟件處理,可在RAM中存放1~5個(gè)標(biāo)識(shí)符表格,整個(gè)RAM可容納1024個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)符或512的擴(kuò)展標(biāo)識(shí)符或兩種類(lèi)型混合的標(biāo)識(shí)符。同時(shí)有5個(gè)地址寄存器指向驗(yàn)收過(guò)濾器RAM的表格:Full CAN標(biāo)準(zhǔn)地址,標(biāo)準(zhǔn)單個(gè)地址,標(biāo)準(zhǔn)地址范圍,擴(kuò)展單個(gè)地址或擴(kuò)展地址范圍。當(dāng)CAN控制器的接收端已接收到一個(gè)完整的標(biāo)識(shí)符時(shí),它將通知驗(yàn)收過(guò)濾器,驗(yàn)收過(guò)濾器響應(yīng)這個(gè)信號(hào),并讀出控制器編號(hào)、標(biāo)識(shí)符尺寸,以及來(lái)自控制器本身的標(biāo)識(shí)符,然后通過(guò)驗(yàn)收過(guò)濾器搜索RAM中的表格,以決定接收或放棄這一幀信息。

  1.3 CAN中繼器硬件結(jié)構(gòu)

  中繼器的硬件結(jié)構(gòu)框圖如圖1所示。LPC2119分別通過(guò)CAN總線(xiàn)收發(fā)器與兩路總線(xiàn)相連;總線(xiàn)驅(qū)動(dòng)器采用帶隔離的DC/DC模塊單獨(dú)供電,不僅實(shí)現(xiàn)了兩路CAN接口之間的電器隔離,也實(shí)現(xiàn)了中繼器與CAN總線(xiàn)的電器隔離。除此之外,還有LED顯示和鍵盤(pán)接口。LED用于顯示中繼器的工作狀態(tài),鍵盤(pán)用來(lái)修正總線(xiàn)的波特率。最終程序的調(diào)試與跟蹤通過(guò)JTAG調(diào)試口完成。

  圖1硬件結(jié)構(gòu)框圖

  2 系統(tǒng)軟件設(shè)計(jì)

  2.1 引入μC/OSII實(shí)時(shí)操作系統(tǒng)

  隨著應(yīng)用的復(fù)雜化,采用傳統(tǒng)前后臺(tái)設(shè)計(jì)方法,會(huì)顯得過(guò)于復(fù)雜,實(shí)時(shí)性得不到保證,而且容易發(fā)生死鎖。解決這些問(wèn)題的最好方法就是采用實(shí)時(shí)操作系統(tǒng)。

  μC/OSII完全是占先式的實(shí)時(shí)內(nèi)核, 是基于優(yōu)先級(jí)的, 即總是讓就緒態(tài)中優(yōu)先級(jí)最高的任務(wù)先運(yùn)行, 因此實(shí)時(shí)性比非占先式的內(nèi)核要好。 它包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量、郵箱、消息隊(duì)列) 和內(nèi)存管理等功能; 它的絕大部分代碼是用C 語(yǔ)言編寫(xiě)的, 可移植性強(qiáng), 可以在絕大多數(shù)8 位、16 位、32 位以至64 位微處理器、微控制器、數(shù)字信號(hào)處理器(DSP) 上運(yùn)行。

  CAN中繼器對(duì)系統(tǒng)的實(shí)時(shí)性和可靠性要求比較高。采用μC/OSII實(shí)時(shí)操作系統(tǒng)可以有效地對(duì)任務(wù)進(jìn)行調(diào)度;對(duì)各任務(wù)賦予不同的優(yōu)先級(jí)可以保證任務(wù)及時(shí)響應(yīng),而且采用實(shí)時(shí)操作系統(tǒng),降低了程序的復(fù)雜度,方便程序的開(kāi)發(fā)。

  2.2 軟件設(shè)計(jì)中需考慮的問(wèn)題

  (1) 使用代碼的容量

  在前/后臺(tái)系統(tǒng)的設(shè)計(jì)中,對(duì)存儲(chǔ)器容量的需求僅僅取決于應(yīng)用程序代碼,而使用RTOS的情況則很不一樣。RTOS 內(nèi)核本身需要額外的代碼空間。

  總代碼量=應(yīng)用程序代碼+內(nèi)核代碼

  每個(gè)任務(wù)都是獨(dú)立運(yùn)行的,必須給每個(gè)任務(wù)提供單獨(dú)的??臻g(RAM)。在決定分配給每個(gè)任務(wù)多少??臻g時(shí),應(yīng)該盡可能使之接近實(shí)際的需求量。??臻g的大小不僅要計(jì)算任務(wù)本身的需求(局部變量、函數(shù)調(diào)用等) ,還需要計(jì)算最多中斷嵌套層數(shù)(保存寄存器、中斷服務(wù)程序中的局部變量等)。內(nèi)核的另一個(gè)應(yīng)該具有的特性是,每個(gè)任務(wù)所需的??臻g大小可以分別定義。所有內(nèi)核都需要額外的??臻g,以保證內(nèi)部變量、數(shù)據(jù)結(jié)構(gòu)、隊(duì)列等。如果內(nèi)核支持中斷用棧分離,則總的RAM需求量的表達(dá)式為:RAM總需求=應(yīng)用程序RAM 需求+內(nèi)核數(shù)據(jù)區(qū)RAM需求+各任務(wù)棧需求的總和+最多中斷嵌套棧需求。

  除非有特別大的RAM空間可以使用,對(duì)棧的分配與使用均要特別小心。實(shí)時(shí)多任務(wù)系統(tǒng)比前后臺(tái)系統(tǒng)需要更多的代碼(ROM) 和數(shù)據(jù)空間(RAM) 。額外的代碼空間取決于內(nèi)核的大小,而RAM的用量則取決于系統(tǒng)中的任務(wù)數(shù)。

  (2) 實(shí)時(shí)性和安全性

  CAN中繼器是系統(tǒng)組網(wǎng)的關(guān)鍵設(shè)備之一,在稍大型的CAN總線(xiàn)系統(tǒng)中經(jīng)常會(huì)用到中繼器。它給系統(tǒng)組網(wǎng)帶來(lái)方便的同時(shí),也給系統(tǒng)增加了一些存儲(chǔ)轉(zhuǎn)發(fā)時(shí)延,因此在軟件設(shè)計(jì)中必須考慮系統(tǒng)的實(shí)時(shí)性,盡量縮短數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)時(shí)間。這除了要求給系統(tǒng)數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù)分配較高的優(yōu)先級(jí)之外,還應(yīng)建立一種通信機(jī)制,保證在收到一路總線(xiàn)上的數(shù)據(jù)時(shí),能即時(shí)向另一路總線(xiàn)發(fā)送。另外,中繼器是兩路總線(xiàn)之間通信的橋梁,為了保證兩路總線(xiàn)之間正常的通信,應(yīng)盡量避免類(lèi)似死鎖、總線(xiàn)故障之類(lèi)的情況發(fā)生。所以系統(tǒng)必須設(shè)計(jì)一個(gè)監(jiān)控任務(wù),能對(duì)這類(lèi)情況作出即時(shí)反應(yīng),同時(shí)為了不丟失還未轉(zhuǎn)發(fā)的數(shù)據(jù),必須為每一路總線(xiàn)設(shè)置一環(huán)形緩沖區(qū),用于存放新接收到的數(shù)據(jù),維護(hù)系統(tǒng)的安全性。

  2.3 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)

  嵌入式CAN中繼器主要實(shí)現(xiàn)兩路CAN總線(xiàn)數(shù)據(jù)之間相互轉(zhuǎn)發(fā),并且可以根據(jù)實(shí)際需要,改變某一路CAN控制器的波特率。采用μC/OSII實(shí)時(shí)操作系統(tǒng),整個(gè)設(shè)計(jì)由操作系統(tǒng)和一系列用戶(hù)應(yīng)用程序構(gòu)成。

  主函數(shù)是程序首先執(zhí)行的一個(gè)函數(shù)。該函數(shù)永遠(yuǎn)不會(huì)返回,主要實(shí)現(xiàn)系統(tǒng)的硬件和操作系統(tǒng)的初始化。硬件包括中斷、鍵盤(pán)、顯示等初始化;操作系統(tǒng)包括任務(wù)控制快和事件控制快的初始化,而且在啟動(dòng)多任務(wù)調(diào)度之前,必須至少創(chuàng)建一個(gè)任務(wù)。在此系統(tǒng)中創(chuàng)建了一個(gè)啟動(dòng)任務(wù),主要負(fù)責(zé)時(shí)鐘的初始化和啟動(dòng),中斷的啟動(dòng),CAN控制器的初始化及啟動(dòng)及任務(wù)的劃分等。在交出CPU的使用權(quán)之后,只做一些空閑處理。

  (1) 任務(wù)的劃分

  要完成實(shí)時(shí)多任務(wù)的各種功能,必須對(duì)任務(wù)進(jìn)行劃分。本程序根據(jù)各個(gè)任務(wù)的重要性和實(shí)時(shí)性,把程序分成六個(gè)具有不同優(yōu)先級(jí)的任務(wù),包括系統(tǒng)監(jiān)控、數(shù)據(jù)轉(zhuǎn)發(fā)、鍵盤(pán)輸入、LED顯示、接收隊(duì)列監(jiān)視和波特率設(shè)置。表1為任務(wù)劃分表。

  除了6個(gè)主要應(yīng)用任務(wù)之外,還有兩個(gè)中斷服務(wù)子程序:一個(gè)時(shí)鐘節(jié)拍中斷,用于提供周期性信號(hào)源;一個(gè)CAN接收中斷,用于把接收數(shù)據(jù)寫(xiě)入環(huán)形緩沖區(qū)。

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

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉