新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于LPC2294的CAN總線智能節(jié)點(diǎn)設(shè)計(jì)

基于LPC2294的CAN總線智能節(jié)點(diǎn)設(shè)計(jì)

作者: 時(shí)間:2009-05-07 來源:網(wǎng)絡(luò) 收藏

在本所應(yīng)用的場(chǎng)合中,產(chǎn)生電磁信號(hào)的設(shè)備較多,包括超短波設(shè)備、音頻設(shè)備、電源等,因此抗干擾顯得尤為重要。主要采取了以下措施:

(1)為了進(jìn)一步提高的抗干擾能力,保證各之間在電氣上是完全隔離和獨(dú)立的,我們采用隔離收發(fā)器,取代傳統(tǒng)的光耦與電源隔離模塊,提高性能的同時(shí)簡化電路。

(2)在的兩端加有兩個(gè)120Ω的電阻,這兩個(gè)電阻對(duì)于阻抗的匹配起著相當(dāng)重要的作用。去掉它們會(huì)使數(shù)據(jù)通信的抗干擾性及可靠性大大降低,甚至無法通信。

(3)CANH和CANL與地之間并聯(lián)了兩個(gè)30pF的小電容,可慮除總線上的高頻干擾并且具有一定的防電磁輻射的能力。

2.設(shè)計(jì)

對(duì)于一般的32位ARM嵌入式應(yīng)用系統(tǒng),在運(yùn)行主程序前必須初始化運(yùn)行環(huán)境,即編寫ARM控制器啟動(dòng)代碼。該啟動(dòng)代碼包括異常向量表、堆棧初始化、存儲(chǔ)系統(tǒng)初始化和目標(biāo)板初始化等,一般用匯編語言編寫。

對(duì)于該設(shè)計(jì)來說,關(guān)鍵的是編寫CAN驅(qū)動(dòng)程序。主程序只需通過調(diào)用驅(qū)動(dòng)程序提供的接口來實(shí)現(xiàn)數(shù)據(jù)的接受和發(fā)送。驅(qū)動(dòng)程序包括四部分內(nèi)容:CAN控制器的初始化、接收數(shù)據(jù)、發(fā)送數(shù)據(jù)和總線異常處理。圖2為主程序流程圖。

圖2 主程序流程圖

2.1 CAN控制器的初始化

初始化CAN 控制器的操作包括:硬件使能、設(shè)置管腳連接、復(fù)位、設(shè)置報(bào)警界限、設(shè)置總線波特率、設(shè)置中斷工作方式、設(shè)置驗(yàn)收濾波器工作方式、設(shè)置工作模式并啟動(dòng)CAN等。需要特別指出的是設(shè)置總線波特率是個(gè)難點(diǎn),所有CAN的波特率都要相同才能正常工作,所以要正確配置VPBDIV和PLL寄存器。在設(shè)置各CAN寄存器之前必須進(jìn)行復(fù)位,這是因?yàn)镃AN的某些寄存器必須在軟復(fù)位下讀寫。

值得注意的是,為所有的CAN 控制器提供了全局接收標(biāo)識(shí)符查詢功能。2KB的接收過濾用RAM可容納1024個(gè)標(biāo)準(zhǔn)標(biāo)識(shí)符或者512個(gè)擴(kuò)展標(biāo)識(shí)符或兩種類型混合的標(biāo)識(shí)符。通過軟件處理,可在該RAM中設(shè)置存放1~5個(gè)標(biāo)識(shí)符表格,它能更容易的對(duì)任意復(fù)雜的ID進(jìn)行篩選過濾,滿足復(fù)雜的ID的接受過濾要求。大大減少了系統(tǒng)軟件設(shè)計(jì)復(fù)雜度及運(yùn)行時(shí)的負(fù)擔(dān)。設(shè)置驗(yàn)收濾波器工作方式,必須首先創(chuàng)建LUT表格,指定每個(gè)表格的起始地址,并用實(shí)際的ID地址初始化該表格。最后設(shè)定驗(yàn)收濾波器模式寄存器。若該節(jié)點(diǎn)不主動(dòng)發(fā)送數(shù)據(jù),可選擇在總線不活動(dòng)時(shí)進(jìn)入睡眠模式。

2.2 數(shù)據(jù)發(fā)送

將待發(fā)送的數(shù)據(jù)打包成符合CAN 協(xié)議的幀格式后,便可寫入發(fā)送緩存區(qū),并啟動(dòng)發(fā)送。在寫發(fā)送緩存區(qū)前必須查詢其狀態(tài)。中的CAN控制器為了提高大量數(shù)據(jù)發(fā)送的效率,每個(gè)CAN控制器都有三個(gè)獨(dú)立的發(fā)送緩沖區(qū),它們的狀態(tài)可以通過查詢CANSR得知。只有當(dāng)其中有空閑的發(fā)送緩沖區(qū)時(shí)才可將數(shù)據(jù)寫入。在發(fā)送大量數(shù)據(jù)數(shù),這一步顯得尤為重要,否則發(fā)送可靠性將不能保證。啟動(dòng)發(fā)送成功后,只能通過查詢CANGSR的TCS位或配合發(fā)送成功中斷來判斷數(shù)據(jù)是否發(fā)送成功。

2.3 數(shù)據(jù)接收

接收數(shù)據(jù)可采用查詢方式或中斷方式。在某一段時(shí)間內(nèi),并不總是在活動(dòng),為了提高效率,可采用中斷方式。在初始化程序中必須使能接收中斷。在中斷服務(wù)子程序中,讀取CANICR,判斷是否有接收中斷標(biāo)志,有則讀取接收緩沖區(qū)數(shù)據(jù)。

2.4 異常情況處理

在總線發(fā)生嚴(yán)重故障的情況下,CAN節(jié)點(diǎn)有可能脫離總線,此時(shí)以下寄存器位被置位:CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CANMOD的RM位。RM將許多CAN控制器功能復(fù)位和禁止。軟件下一步必須置零RM位。發(fā)送錯(cuò)誤計(jì)數(shù)器將遞減計(jì)數(shù)總線釋放條件(11個(gè)連續(xù)的隱性位)的第128個(gè)事件。軟件可通過讀取Tx錯(cuò)誤計(jì)數(shù)器對(duì)計(jì)數(shù)器遞減計(jì)數(shù)的情況進(jìn)行監(jiān)測(cè)。

一些不是很嚴(yán)重的錯(cuò)誤一般不會(huì)引起總線錯(cuò)誤,即使不處理也不會(huì)產(chǎn)生什么致命錯(cuò)誤,為了提高中斷處理速度,可以根據(jù)實(shí)際情況裁減中斷服務(wù)程序。

3結(jié)束語

由于該方案體積小、功耗低、抗干擾性好,現(xiàn)已應(yīng)用于電磁環(huán)境復(fù)雜的某裝甲車通信設(shè)備中,滿足了該項(xiàng)目對(duì)CAN網(wǎng)絡(luò)節(jié)點(diǎn)的要求。此外該設(shè)計(jì)作為節(jié)點(diǎn)的一個(gè)模塊,能夠和儀器儀表等設(shè)備相結(jié)合,使其具有網(wǎng)絡(luò)通信的能力,有著廣闊的應(yīng)用前景。

本文作者創(chuàng)新點(diǎn):隔離CAN收發(fā)器的使用取代了在以往的設(shè)計(jì)方案中需要高速光耦(6N137)、DC/DC電源隔離模塊、CAN收發(fā)器等分立元件才能實(shí)現(xiàn)的帶隔離的CAN收發(fā)電路,現(xiàn)在只需利用一片接口芯片就可以實(shí)現(xiàn)帶隔離的CAN收發(fā)電路,并且隔離電壓可以達(dá)到DC 2500V。在簡化硬件電路開銷的同時(shí)提高了系統(tǒng)的抗干擾性能。


上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉