CAN總線(xiàn)通信原理分析
摘要:介紹了控制器局域網(wǎng)總線(xiàn)(CAN總線(xiàn))的應用特性以及將其應用于具體的工程項目時(shí)CAN總線(xiàn)系統的分層結構及各層的主要功能?;?a class="contentlabel" href="http://dyxdggzs.com/news/listbylabel/label/CAN">CAN總線(xiàn)系統結構構成,通過(guò)工程實(shí)踐的具體應用以及對CAN控制器及收發(fā)器硬件結構的深入理解,并從通信的角度出發(fā)著(zhù)重深入分析了CAN總線(xiàn)通信的節點(diǎn)同步機制、總線(xiàn)地址機制、總線(xiàn)仲裁機制(即總線(xiàn)的沖突解決機制)以及總線(xiàn)魯棒性的實(shí)現原理。
本文引用地址:http://dyxdggzs.com/article/154912.htm關(guān)鍵詞:控制器局域網(wǎng)總線(xiàn);同步機制;地址機制;仲裁機制;魯棒性實(shí)現
CAN(Controller Area Network)總線(xiàn),即控制器局域網(wǎng)總線(xiàn),在工業(yè)控制、醫療電子、家用電器及傳感器領(lǐng)域都得到了廣泛的應用。目前國內外文獻中針對CAN總線(xiàn)協(xié)議分析的文章主要是針對CAN協(xié)議的幀結構以或位時(shí)序特性進(jìn)行分析,如文獻鮮有從通信的角度對CAN總線(xiàn)協(xié)議進(jìn)行分析,鮮有從工程應用的角度出發(fā),對CAN總線(xiàn)的通信機制進(jìn)行深入分析的文章。
1 CAN應用特性及結構構成
CAN總線(xiàn)協(xié)議具有兩個(gè)國際標準,分別是ISO11898和ISO11519。其中,IS011898是通信速率為125 kbps~1 Mbps的高速CAN通信標準,屬于閉環(huán)總線(xiàn),總線(xiàn)最大長(cháng)度為40 m/1 Mbps。ISO11519定義了通信速率為10~125 kbps的低速CAN通信標準,屬于開(kāi)環(huán)總線(xiàn),最大長(cháng)度為1 km/40 kbps。由于電氣特性限制,即總線(xiàn)分布電容和分布電阻對總線(xiàn)波形的影響,CAN總線(xiàn)上最大節點(diǎn)數目為110個(gè)。對于應用工程師,只需正確配置收發(fā)端的波特率和位參數即可實(shí)現收發(fā)節點(diǎn)的數據同步。通過(guò)CAN控制器硬件對報文的標示符濾波即可實(shí)現點(diǎn)對點(diǎn)、一點(diǎn)對多點(diǎn)及全局廣播等幾種方式傳送接收數據。同時(shí),由于CAN報文采用短幀結構,并且每幀均包含CRC校驗部分,保證了數據出錯率極低。CAN總線(xiàn)在工程應用中結構構成如圖1所示。
系統實(shí)現中的CAN應用層、操作系統(在無(wú)操作系統的應用中以后臺程序實(shí)現)及驅動(dòng)程序共同實(shí)現了ISO參考模型中的應用層功能。其中,CAN應用層定義ID分組、發(fā)送數據裝包、接收數據處理以及應用層總線(xiàn)安全監測;操作系統/后臺程序用于在CAN中斷到達后調度CAN驅動(dòng)程序對數據進(jìn)行處理;驅動(dòng)程序包括初始化(控制器工作狀態(tài)設置、波特率設置、驗收濾波器配置)、收發(fā)驅動(dòng)及異常處理程序。
對于傳輸介質(zhì)層,需要根據環(huán)境干擾噪聲、總線(xiàn)長(cháng)度等來(lái)確定。在強干擾噪聲的情況下必須采用屏蔽線(xiàn);由于分布電容造成的總線(xiàn)波形失真及分布電阻造成的總線(xiàn)電平的衰減,總線(xiàn)長(cháng)度需要考慮采用的傳輸介質(zhì)的分布電阻和分布電容特性;同時(shí),若采用高速總線(xiàn)還需通過(guò)實(shí)驗確定總線(xiàn)的匹配電阻值。
對于CAN控制器的實(shí)現,可以選用集成于系統主控芯片的CAN控制器實(shí)現,如恩智浦公司出品的LPC2000系列的微控制器,或者也可以選用分立元件的CAN控制器,如SJA1000。對于CAN收發(fā)器的實(shí)現,可以選用CTM1050、TJA1050等。若環(huán)境干擾噪聲較大,則需在控制器和收發(fā)器之間添加隔離芯片或采用集成了隔離功能的CAN收發(fā)器。值得一提的是,恩智浦公司新推出的LPC11C24微控制器芯片中不僅集成了CAN控制器,同時(shí)集成了CAN收發(fā)器功能,對于CAN總線(xiàn)系統的快速開(kāi)發(fā)提供了良好的支持。另外,根據實(shí)際應用的總線(xiàn)長(cháng)度及總線(xiàn)上的節點(diǎn)數目,還需考慮收發(fā)器芯片的發(fā)送和接收的延遲時(shí)間。
對于CAN驅動(dòng)層和應用層,驅動(dòng)程序包括CAN初始化(包括硬件使能、波特率設置、控制器工作模式設置及驗收濾波器ID表配置)、收/發(fā)驅動(dòng)并向上層提供接口函數,其中需要說(shuō)明的是驗收濾波器的ID表配置需要根據應用層對系統ID的分組來(lái)進(jìn)行;CAN應用層根據總線(xiàn)上各節點(diǎn)之間的數據收發(fā)關(guān)系進(jìn)行數據包的ID分組、發(fā)送數據裝包、接收數據處理及應用層總線(xiàn)安全監測等。另外,常用的CAN總線(xiàn)上層協(xié)議主要有CANOpen、DeviceNet以及iCAN等。
2 CAN總線(xiàn)同步機制分析
在進(jìn)行通信過(guò)程中,需要解決的最重要的問(wèn)題之一就是如何實(shí)現收發(fā)端數據的同步,即接收端可以正確接收和解析發(fā)送端發(fā)送的數據。CAN總線(xiàn)協(xié)議是一種異步串行通信協(xié)議,屬于基帶通信,其同步的實(shí)現源于高級數據鏈路控制協(xié)議(HDLC)。具體來(lái)說(shuō),CAN總線(xiàn)協(xié)議的同步是通過(guò)如下所述的3個(gè)方面來(lái)實(shí)現的。
2.1 參數設定
通信雙方通過(guò)軟件設置相同的波特率、相同的相位調整段長(cháng)度、相同的同步跳轉寬度,通過(guò)以上3個(gè)元素設置,定義了CAN總線(xiàn)傳輸過(guò)程中的位時(shí)間長(cháng)度以及采樣點(diǎn)位置,位結構如圖2所示,圖中的CAN時(shí)鐘即是協(xié)議中定義的TQ時(shí)間,該時(shí)鐘是通過(guò)外部時(shí)鐘或者CPU外設時(shí)鐘分頻后得到的CAN控制器的基本時(shí)鐘信號,SS段對應于起始段,總線(xiàn)上的跳變沿應發(fā)生在此段時(shí)間內,TESG1對應于傳輸段和相位調整段1,TESG2對應于相位調整段2,對于高速總線(xiàn),控制器在TESG1和TESG2之間對總線(xiàn)進(jìn)行采樣判別。
2.2 固定的幀結構
CAN協(xié)議中明確定義的固定的幀結構,便于CAN控制器和收發(fā)器對總線(xiàn)狀態(tài)進(jìn)行監測,在CAN2.0協(xié)議規范中,分為標準幀和擴展幀兩種幀結構,兩者區別只在于仲裁域,標準幀采用11位標識符,而擴展幀有29位標識符,具體的標準幀、擴展幀幀結構如表1、表2所示。
2.3 硬同步和再同步
2.3.1 硬同步
所謂硬同步就是指在總線(xiàn)空閑期間(即總線(xiàn)電平表現為連續的隱性位),控制器一旦檢測到從隱性電平到顯性電平的跳變,就說(shuō)明此時(shí)總線(xiàn)上有站點(diǎn)開(kāi)始發(fā)送數據,則強制CAN控制器的位狀態(tài)計數器同步到圖2所示的SS段,同時(shí)位時(shí)鐘從此開(kāi)始重新計數(CAN位時(shí)間由上層軟件設定)。硬同步用于幀的起始判定。
2.3.2 再同步
在CAN總線(xiàn)協(xié)議中,再同步是基于位填充機制實(shí)現的。與HDLC協(xié)議類(lèi)似,在CAN的幀結構中,從幀起始到CRC序列位為止,一旦檢測到5個(gè)連續相同極性的位,CAN控制器自動(dòng)插入一個(gè)極性相反的位。再同步就是在數據傳輸過(guò)程中,CAN控制器通過(guò)檢測總線(xiàn)上的跳變沿與節點(diǎn)內部位時(shí)間的差異來(lái)調整相位調整段1和相位調整段2,調整大小是由同步跳轉寬度編程設定的,調整大小單位為T(mén)Q。具體調整規則是,在傳輸過(guò)程中,由CAN控制器檢測到的總線(xiàn)上的跳變沿如果位于節點(diǎn)內部的SS位時(shí)間段內,則不需要調整;若跳變沿位于TESG1段,說(shuō)明總線(xiàn)上的位時(shí)間相對于節點(diǎn)的位時(shí)間有延遲,則CAN控制器延長(cháng)節點(diǎn)的TESG1位時(shí)間段,若延遲時(shí)間值(T0值)大于同步跳轉寬度,延長(cháng)時(shí)間為同步跳轉寬度值,否則節點(diǎn)的CAN控制器延長(cháng)其與總線(xiàn)位時(shí)間的差值;若跳變沿位于TESG2段,說(shuō)明總線(xiàn)上的位時(shí)間相對于節點(diǎn)的位時(shí)間有超前,則CAN控制器減少節點(diǎn)的TESG2位時(shí)間段,具體調整規則與TESG1段的調整規則相似。
3 CAN總線(xiàn)地址機制分析
不同于工業(yè)以太網(wǎng)、RS485等總線(xiàn),CAN總線(xiàn)是通過(guò)數據包ID而非節點(diǎn)地址來(lái)收發(fā)數據的,即CAN總線(xiàn)上的節點(diǎn)沒(méi)有固定的地址,取而代之的是每個(gè)節點(diǎn)都需要通過(guò)軟件配置一個(gè)ID表(在該節點(diǎn)的驗收濾波器單元中),如果總線(xiàn)上的數據包的ID號在該節點(diǎn)的ID表中存在,則數據包成功通過(guò)該節點(diǎn)的驗收濾波器單元的驗收,并將被送到上層軟件處理單元并進(jìn)行相應的數據處理,否則,該數據包被丟棄。舉例來(lái)說(shuō),若總線(xiàn)上的節點(diǎn)A想發(fā)送數據包到節點(diǎn)B,則該數據包的ID號必須位于節點(diǎn)B的ID表中,同理,若節點(diǎn)A想廣播數據包到總線(xiàn)上,則該數據包的ID號必須位于總線(xiàn)上所有其它節點(diǎn)的ID表中。如前所述,ID表是通過(guò)軟件進(jìn)行配置的,但驗收濾波功能卻是通過(guò)CAN控制器中的驗收濾波器這個(gè)硬件單元進(jìn)行的,所以從速度上來(lái)說(shuō),驗收造成的延遲很小。另外,采用這種地址機制的優(yōu)點(diǎn)還在于是采用此總線(xiàn)的系統具有很高的靈活性,即新加入或刪除的節點(diǎn)不會(huì )影響系統原有節點(diǎn)間的通信。
下面將以恩智浦公司的LPC2478芯片集成的CAN控制器為例,具體說(shuō)明CAN總線(xiàn)系統的地址配置方法。如圖3所示,首先根據總線(xiàn)上所需傳輸的數據包進(jìn)行分類(lèi),即對數據包ID和相應的節點(diǎn)進(jìn)行規劃,例如在我們的系統中主要有如下幾類(lèi)數據包:查詢(xún)數據包、控制命令數據包(包括動(dòng)作和參數數據包)、報警數據包及反饋參數數據包,對應的節點(diǎn)特性是查詢(xún)數據包和控制命令數據包主要是主站發(fā)送給各從站單元,而報警數據包和反饋參數數據包主要由從站各節點(diǎn)單元發(fā)送給主站單元節點(diǎn)。然后,根據ID分類(lèi)情況配置各節點(diǎn)的驗收濾波器單元,具體的配置方法是:首先根據節點(diǎn)特點(diǎn)配置相應的驗收濾波器工作模式:關(guān)閉模式(不接收總線(xiàn)報文)、旁路模式(接收總線(xiàn)上所有的報文)和正常工作模式(硬件濾波)。若配置為正常工作模式時(shí),接著(zhù)就需配置相應的驗收濾波器表(ID表),即將該節點(diǎn)需要接收的數據包ID號的填充到該節點(diǎn)控制器相應的ID表區域中,而這樣就完成了CAN總線(xiàn)節點(diǎn)的地址分配工作。一般而言,ID表分為如下4個(gè)區域:明確的標準幀標識符區、標準幀組格式標識符區、明確的擴展幀格式標識符區以及擴展幀組格式標識符區。其中,明確格式是單個(gè)獨立的ID標識符,而組格式區時(shí)連續編號的ID標識符。
濾波器相關(guān)文章:濾波器原理
濾波器相關(guān)文章:濾波器原理
路由器相關(guān)文章:路由器工作原理
數字通信相關(guān)文章:數字通信原理
通信相關(guān)文章:通信原理
路由器相關(guān)文章:路由器工作原理
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理
評論