<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è) > 嵌入式系統 > 設計應用 > 基于LPC2119和μC/OSII 的CAN中繼器設計

基于LPC2119和μC/OSII 的CAN中繼器設計

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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

引 言

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

1 CAN中繼器的硬件設計

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

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

1.2 LPC2119內部CAN控制器與SJA1000比較

LPC2119內部集成的CAN控制器與Philips公司的SJA1000 CAN控制器相比較大致相同,只是在驗收濾波這一環(huán)略有不同,這為習慣SJA1000的開(kāi)發(fā)人員采用LPC2119提供了方便。SJA1000驗收濾波器由驗收代碼寄存器和驗收屏蔽寄存器定義,要接收報文的位模式在驗收代碼寄存器中定義,相應的驗收屏蔽寄存器允許定義某些位為“無(wú)關(guān)”,通過(guò)模式寄存器可以選擇不同的過(guò)濾模式:?jiǎn)芜^(guò)濾模式和雙過(guò)濾模式。

而對LPC2119內部集成的CAN控制器,全局驗收過(guò)濾器包含一個(gè)512×32(2 KB)的RAM,通過(guò)軟件處理,可在RAM中存放1~5個(gè)標識符表格,整個(gè)RAM可容納1024個(gè)標準標識符或512的擴展標識符或兩種類(lèi)型混合的標識符。同時(shí)有5個(gè)地址寄存器指向驗收過(guò)濾器RAM的表格:Full CAN標準地址,標準單個(gè)地址,標準地址范圍,擴展單個(gè)地址或擴展地址范圍。當CAN控制器的接收端已接收到一個(gè)完整的標識符時(shí),它將通知驗收過(guò)濾器,驗收過(guò)濾器響應這個(gè)信號,并讀出控制器編號、標識符尺寸,以及來(lái)自控制器本身的標識符,然后通過(guò)驗收過(guò)濾器搜索RAM中的表格,以決定接收或放棄這一幀信息。

1 .3 CAN中繼器硬件結構

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

圖1硬件結構框圖

2 系統軟件設計

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

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

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

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

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

(1) 使用代碼的容量

在前/后臺系統的設計中,對存儲器容量的需求僅僅取決于應用程序代碼,而使用RTOS的情況則很不一樣。RTOS 內核本身需要額外的代碼空間。

總代碼量=應用程序代碼+內核代碼

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

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

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

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


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

關(guān)鍵詞:

評論


相關(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>