當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]摘要:CAN總線是一種應(yīng)用廣泛的實時性現(xiàn)場總線,提出了基于具有ARM7TDMI內(nèi)核的32位微控制器的CAN總線智能節(jié)點設(shè)計方案。詳細介紹了ARM控制(LPC2294)的特點、智能節(jié)點的結(jié)構(gòu)

摘要:CAN總線是一種應(yīng)用廣泛的實時性現(xiàn)場總線,提出了基于具有ARM7TDMI內(nèi)核的32位微控制器的CAN總線智能節(jié)點設(shè)計方案。詳細介紹了ARM控制(LPC2294)的特點、智能節(jié)點的結(jié)構(gòu)以及系統(tǒng)軟件設(shè)計,同時結(jié)合現(xiàn)場實際使用給出了硬件抗干擾措施。 關(guān)鍵詞:CAN總線 ARM 嵌入式控制器 CAN(Controller Area Network)即控制器局域網(wǎng),CAN總線是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。它最早是由德國Bosch公司推出的,CAN通信協(xié)議是一種用于汽車內(nèi)部測量與執(zhí)行部件之間的數(shù)據(jù)通信協(xié)議。 作為一種技術(shù)先進、可靠性高、功能完善、成本合理的遠程網(wǎng)絡(luò)通訊控制方式,CAN總線已被廣泛應(yīng)用于各個自動化控制系統(tǒng)中。例如,在汽車電子、自動控制、智能大廈、電子系統(tǒng)、安防監(jiān)控等各領(lǐng)域中,CAN總線具有不可比擬的優(yōu)越性。本設(shè)計給出CAN總線節(jié)點方案。它采用內(nèi)置多路CAN總線控制器PLC2294作為主控制器,使得該節(jié)點體積小、功耗低、抗干擾性好,因而特別適用于汽車、工業(yè)控制以及醫(yī)療系統(tǒng)和容錯維護總線中。 1 硬件設(shè)計 1.1 LPC2294的特點 ARM7系列具有ARM7TDMI內(nèi)核的32位嵌入式微處理器是目前應(yīng)用很廣的嵌入式RISC處理器。該系列芯片體積小、功耗低、成本低,高性能與靈活性相結(jié)合,有較多的寄存器,提供了擴充的增強的固定長的16/32位雙指令集。用16位的Thumb指令可以節(jié)省高達35%的空間。另外它還實行注水線作業(yè),提供嵌入式ICE2RT邏輯,支持片上斷點和調(diào)試點支持,具有先進的軟件開發(fā)和調(diào)試環(huán)境。 圖1 本設(shè)計選用的LPC2294是PHILIPS公司新推出的一款功能強大的超低功耗的具有ARM7TDMI內(nèi)核的32位微控制器。144腳封裝、兩個32位定時器、八路10位ADC、四路CAN通道和PWM通道以及多達九個的外部中斷,內(nèi)部嵌入256K字節(jié)高速Flash存儲器和16K字節(jié)靜態(tài)RAM,包含76(使用了外部存儲器)"112(單片)個GPIO口。如此豐富的片上資源完全可以滿足一般的工業(yè)控制的需要,同時還可以減少系統(tǒng)硬件設(shè)計的復(fù)雜度。另外,LPC2294支持JTAG實時仿真和跟蹤、128位寬度的存儲器接口和獨特的加速結(jié)構(gòu),使32位代碼能夠在高達60MHz的操作頻率下運行。 LPC2294內(nèi)部集成有四路CAN控制器:符合CAN規(guī)范CAN2.0B,ISO 11989-1標(biāo)準:總線數(shù)據(jù)波特度均可達1Mbps;可訪問32位的寄存器和RAM;全局驗收過濾器可識別幾乎所有總線的11位和29位Rx標(biāo)識符;驗收過濾器為選擇的標(biāo)準標(biāo)識符提供了FullCAN-style自動接收功能。 作為本設(shè)計的核心部件,LPC2294不僅擔(dān)起主控制器的作用,同時還作為CAN網(wǎng)絡(luò)的節(jié)點控制器,與網(wǎng)絡(luò)中的其它節(jié)點實現(xiàn)數(shù)據(jù)傳輸與交換。 1.2 CAN節(jié)點硬件電路組成 CAN節(jié)點硬件電路如圖1所示,由ARM微控制器LPC2294、CAN總線收發(fā)器TJA1050T、高速光耦6N137和電源隔離模塊B0505S等組成。 主控芯片LPC2294的晶振頻率范圍為1~30MHz。本設(shè)計選晶振頻率為20MHz,通過設(shè)置內(nèi)部的VPB分頻器可以提高CPU時鐘頻率。內(nèi)部 256K字節(jié)的高速Flash存儲器用于代碼和數(shù)據(jù)的存儲。對于FLASH存儲器,可通過內(nèi)置的串行JTAG接口進行在系統(tǒng)編程(ISP),或進行在應(yīng)用編程(IAP)。為了便于調(diào)試和系統(tǒng)升級,在設(shè)計中可以預(yù)留這些接口電路。 LPC2294采用雙電源供電。CPU的供電電壓范圍為1.65~1.95V(1.8V%26;#177;8.3%),I/O的供電電壓范圍為 3.0~3.6V(3.3V%26;#177;10%)。 收發(fā)器TJA1050T是CAN協(xié)議控制器和物理總線之間的接口,它與“ISO 11898”標(biāo)準完全兼容。CANH和CANL理想配合,可使電磁輻射減到更低。除此之外,TJA1050T不上電時,總線呈現(xiàn)無源特性,這使得 TJA1050T在性能上大大優(yōu)于以前的CAN總線收發(fā)器。TJA1050T有兩種工作模式:高速模式和靜音模式(它們由引腳“S”來控制)。在高速模式中,總線輸出信號有固定的斜率,并且以盡量快的速度切換。高速模式適用于最大位速度和最大總線長度的情況,而且此時其收發(fā)器循環(huán)延遲最小。靜音模式時發(fā)送器是禁能的。它不管TxD的輸入信號。靜音模式可以防止CAN控制器不受控制時對網(wǎng)絡(luò)通訊造成堵塞。

1.3 硬件的抗干擾設(shè)計 在本設(shè)計所應(yīng)用的場合中,產(chǎn)生電磁信號的設(shè)備較多,包括超短波設(shè)備、音頻設(shè)備、電源等,因此抗干擾設(shè)備顯示尤其重要。主要采取了以下措施: (1) 為了進一步提高CAN總線節(jié)點的抗干擾能力,保證各節(jié)點之間在電氣上是完全隔離和獨立的,LPC2294的TX0和RX0分別通過高速光耦6N137與TJA1050T的TXD的RXD相連。不過,應(yīng)該特別說明的是,光耦部分電路所采用的兩個電源必須完全隔離,否則采用光耦也就失去了意義。電源的完全隔離采用小功率電源隔離模塊B0505S。電路雖復(fù)雜一些,但是卻提高了節(jié)點的穩(wěn)定性和安全性。 (2) 在CAN總線的兩端加有兩個120Ω的電阻,這兩個電阻對于總線阻抗的匹配起著相當(dāng)重要的作用。去掉它們會使數(shù)據(jù)通信的抗干擾性及可靠性大大降低,甚至無法通信。 (3) CANH和CANL與地之間并聯(lián)了兩個30pF的小電容,可以濾除總線上的高頻干擾并且具有一定的防電磁輻射的能力;在兩根CAN總線接入端之間并入了 5.6V的TVS管,當(dāng)CAN總線竄入電壓干擾時可通過TVS管的短路起到一定的過壓保護作用。 (4) 為了減小現(xiàn)場對節(jié)點的干擾,有用屏蔽雙絞線,且根據(jù)實際使用經(jīng)驗,屏蔽電纜的屏蔽層無需接地。 2 軟件設(shè)計 軟件調(diào)試環(huán)境采用ARM公司的ARM核處理器集成開發(fā)工具ADSv1.2。ADSv1.2集成了匯編、C、C++編譯器和調(diào)試器,編譯效率高,提供了功能強大的系統(tǒng)庫,支持軟件調(diào)式、JTAG仿真調(diào)試及硬件調(diào)試。本設(shè)計采用的是JTAG仿真調(diào)試。 對于一般的32位ARM應(yīng)用系統(tǒng),在運行主程序前必須初始化運行環(huán)境,即為ARM芯片編寫啟動代碼。該啟動代碼包括異常向量表、堆棧初始化、存儲系統(tǒng)初始化和目標(biāo)板初始化等,一般用匯編語言編寫。對于該設(shè)計來說,關(guān)鍵的是編寫CAN驅(qū)動程序。主程序只需通過調(diào)用驅(qū)動程序提供的接口來實現(xiàn)數(shù)據(jù)的接收和發(fā)送,驅(qū)動程序包括四部分內(nèi)容:CAN控制器的初始化、接收數(shù)據(jù)、發(fā)送數(shù)據(jù)和總線異常處理。圖2為主程序流程圖。 2.1 CAN控制器初始化 初始化CAN控制器的操作包括:硬件使能、軟件復(fù)位、設(shè)備報警界限、設(shè)備總線波特率、設(shè)備中斷工作方式、設(shè)備驗收濾波器工作方式、設(shè)備工作模式并啟動 CAN等。初始化程序如下: HwEnCAN(CanEum); //硬件使能,CanNum=0~3,指四路CAN控制器 SoftRstCAN(CanNum); //軟件復(fù)位寄存器 CANEWL(CanNum).Bits.EWL_BIT=USE_EWL_LAN[CanNum]; //設(shè)置錯誤警告界限 CANBTR(CanNum).Word=USE_BTR_CAN[CanNum]; //初始化波特率 VICDefVectAddr=(UINT32)CANIntPrg; //初始化中斷為非向量中斷 VICIntEnable 1=(1<<19)|(1<<(20+CanNum))|(1<<26+CanNum)); CANIER(CanNum).Word=USE_INT_CAL[CanNum]; CANAFMR.Bits.Accbp_bit=1; //配置驗收濾波器(旁路狀態(tài),即屏蔽驗收濾波器) CANMOD(CanNum).Bits.TPM_BIT=USE_TPM_CAN[CanNum]; //初始化工作模式 CANMOD(CanNum).Bits.LOM_BIT=USE_MOD_CAN[CanNum]; SoftEnCAN(CanNum); //啟動CAN LPC2294片內(nèi)外設(shè)與引腳的連接由引腳連接模塊控制。CAN控制器的硬件使能就是通過軟件設(shè)備GPIO寄存器來控制多路開關(guān)的,將特定的引腳與CAN 控制器連接起來。在設(shè)備各CAN寄存器之前必須進行軟件復(fù)位,這是因為CAN的某些寄存器必須在軟復(fù)位狀態(tài)下讀寫。 值得注意的是,LPC2294為所有的CAN控制器提供了全局接收標(biāo)識符查詢功能。2KRAM可容納1024個標(biāo)準標(biāo)識符或者512個擴展標(biāo)識符或兩種類型混合的標(biāo)識符。通過軟件處理,可在該RAM中設(shè)置存放1~5個標(biāo)識符表格。與獨立CAN控制器SJA1000相比,它能更容易地任意復(fù)雜的ID進行篩選過濾,滿足復(fù)雜的ID的接收過濾要求。這無疑大大減少了系統(tǒng)軟件設(shè)計復(fù)雜度及運行時的負擔(dān)。設(shè)置驗收濾波器工作方式,必須首選創(chuàng)建LUT表格,指定每個表格的起始地址,并用實際的ID地址初始化該表格。最后設(shè)定驗收過濾器模式寄存器。若該節(jié)點不主動發(fā)送數(shù)據(jù),可選擇在總線不活動時進入睡眠模式。 2.2 數(shù)據(jù)發(fā)送 將待發(fā)送的數(shù)據(jù)打包成符合CAN協(xié)議的幀格式后,便可寫入發(fā)送緩站區(qū),并自動發(fā)送。圖3為發(fā)送子程序流程圖。 在寫發(fā)送緩沖區(qū)前必須查詢其狀態(tài)。LPC2294中的每個CAN控制器有三個發(fā)送緩沖區(qū),它們的狀態(tài)可通過查詢CANSR得知。只有當(dāng)其中有空間的發(fā)送緩沖區(qū)即才將數(shù)據(jù)寫入。在發(fā)送大量數(shù)據(jù)時,這一步顯得尤其重要,否則發(fā)送可靠性將不能保證。啟動發(fā)送成功后,只能通過查詢CANGSR的TCS位或配置發(fā)送成功中斷來判斷數(shù)據(jù)是否發(fā)送成功。

2.3 數(shù)據(jù)接收 接收數(shù)據(jù)可采用查詢方式或中斷方式。在某一段時間內(nèi),CAN總線并不是總是在活動,為了提高效率,可采用中斷方式。在初始化程序中必須使能接收中斷。在中斷服務(wù)子程序中,讀取CANICR,判斷是否有接收中斷標(biāo)志,有則讀取接收緩沖區(qū)數(shù)據(jù)。為了防止接收緩沖區(qū)數(shù)據(jù)溢出,可開辟一個循環(huán)接收數(shù)據(jù)隊列來暫時存儲數(shù)據(jù),主程序則通過查詢該隊列來獲得總線數(shù)據(jù)。 2.4 異常情況處理 在線總線發(fā)生嚴重故障的情況下,CAN節(jié)點有可能脫離總線,此時以下寄存器位被置位:CANSR的BS位、CANIR的BEI位和EI位(如果使能)和 CANMOD的RM位。RM將許多CAN控制器功能復(fù)位和禁止。軟件下一步必須置零RM位。發(fā)送錯誤計數(shù)器將遞減計數(shù)總線釋放條件(11個連續(xù)的隱性位)的第128個事情。軟件可通過讀取Tx錯誤計數(shù)器對計數(shù)器遞減計數(shù)的情況進行監(jiān)測。 在應(yīng)用中,若前面?zhèn)鬏數(shù)紺AN控制器的數(shù)據(jù)未被讀出,而接收緩沖區(qū)又沒有及時釋放,就有可能引起后面信息的丟失。這時必須通過寫命令寄存器來清除 CANSR的數(shù)據(jù)溢出位。這兩種異??赏ㄟ^異常中斷來處理,只要在中斷子程序中加入處理代碼即可。其它的總線異常處理可根據(jù)使用情況決定是否在軟件中處理。 總之,軟件的編寫和規(guī)劃相當(dāng)重要。ARM7TDMI指令集是基于RISC的,具有32位ARM/16位Thumb雙指SR相互調(diào)用。因此,為了提高程序代碼密度,某些對性能要求不高的代碼可用Thumb指令集編寫。 由于該方案體積小、功耗低、抗干擾性好,現(xiàn)已應(yīng)用于電磁環(huán)境復(fù)雜的某車載通信設(shè)備中,滿足了該項目對CAN網(wǎng)絡(luò)點節(jié)的要求。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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