資源簡介
CAN總線通信時目前使用最普片的一種總線!其通信協(xié)議CAN2.0B為主流協(xié)議。
廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com 1.介紹 控制器局域網(wǎng)(CAN)為串行通訊協(xié)議,能有效地文持具有很高安全等級的分布實時控制。CAN的應(yīng) 用范圍很廣,從高速的網(wǎng)絡(luò)到低價位的多路接線都可以使用CAN。在汽車電∫行業(yè)里,使用CAN連接發(fā) 動機控制單元、傳感器、防剎車系統(tǒng)、等等,其傳輸速度可達1Mbi'S。同時,可以將CAN安裝在卡車本 體的電子控制系統(tǒng)里,諸如車燈組、電氣車窗等等,用以代替接線配線裝置 這木技術(shù)規(guī)范的目的是為了在任何兩個CAN儀器之閆建立兼容性。可是,兼容性有不同的方面,比如 電氣特性和數(shù)據(jù)轉(zhuǎn)換的解釋。為了達到設(shè)計透明度以及實現(xiàn)柔韌性,CAN被細分為以下不同的層次: ·CAN對象層( the object layer) ·CAN傳輸層( the transfer layer) 物理層( the phyical layer) 對象層和傳輸層包括所有由lso/○S模型定義的藪據(jù)鏈路層的服務(wù)和功能。對象層的作用范圍包括: 查找被發(fā)送的報文 確定由實際要使用的傳輸層接收哪一個報文。 為應(yīng)用層相關(guān)硬件提供接口 在這里,定義對象處理較為靈汘。傳輸層的作用主要是傳送規(guī)則,也就是控制幀結(jié)構(gòu)、執(zhí)行仲裁、錯 淏檢測、岀錯標(biāo)定、故障界定??偩€上什么時候開始發(fā)送新報文及什么時候開娢接牧報文,均在傳輸層里 確定。位定時的一些普通功能也可以看作是傳輸層的一部分。理所當(dāng)然,傳輸層的修改是受到限制的。 物理層的作用是在不同節(jié)點之根據(jù)所有的電氣屬性進行位信息的實際傳輸。當(dāng)然,同一網(wǎng)絡(luò)內(nèi),物 理層對于所有的節(jié)點必須是相同的。盡管如此,在選擇物理層方面還是很白由的 這本技術(shù)規(guī)范的目的是定義傳輸層,并定義CAN協(xié)議于周圍各層當(dāng)中所發(fā)揮的作用(所具有的意義) 2.基本概念 CAN具有以下的屬性: ·報文的優(yōu)先權(quán) ·保證延遲時間 ·設(shè)置靈活 ·時間同步的多點接收 系統(tǒng)寬數(shù)據(jù)的連貫性 ·多主機 ·錯誤檢測和標(biāo)定 ·只要總線一處丁空閑,就自動將破壞的報文車新傳輸 ·將節(jié)點的暫刑性錯誤和永久性錯誤區(qū)分開來,并且可以自動關(guān)閉錯誤的節(jié)點 3 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com CAN節(jié)點的層結(jié)構(gòu)( Layered Structure od a CAn node) 應(yīng)用層 對象層 報文濾波 報文和狀態(tài)的處理 傳輸層 故障界定 錯誤檢測和標(biāo)定 報文校驗 應(yīng)答 仲裁 報文分幀 傳輸速率和定時 物理層 信號電平和位表示 傳輸媒休 ●物理層定義實際信號的傳輸方法。本技術(shù)規(guī)范沒有定義物理層,以便允許根據(jù)它們的應(yīng)用,對發(fā) 送媒體和信號電平進行優(yōu)化。 ●傳輸層是CAN協(xié)議的核心。它把接收到的報文提供給對象層,以及接收來自對象層的報文ε傳輸 層負責(zé)位定時及同步、報文分幀、仲裁、應(yīng)答、錯誤檢測和標(biāo)定、故障界定 ●對象層的功能是報文濾波以及狀態(tài)和報文的處坦。 這木技術(shù)規(guī)范的目的是為了定義傳輸層及定義CAN協(xié)議在周步各層中所發(fā)揮的作用(所具有的意義)。 報文( Messages) 總線上的信息以不同的固定報文格式發(fā)送,但長度受限(見第3節(jié)的報文傳輸)。當(dāng)總線空閑時任何 連接的單元都可以開始發(fā)送新的報文。 信息路由( nformation Routing 在CAN系統(tǒng)里,節(jié)點不使用任何關(guān)于系統(tǒng)氈置的信息(比如,站地址)。以下是兒個重要的概念。 系統(tǒng)靈活性:不需要改變仼何節(jié)烹的應(yīng)用層及相關(guān)的軟件或硬作,就可以在CAN網(wǎng)絡(luò)中直接添加 節(jié)點 ●報文路由:報文的內(nèi)容由識別符命名。識別符不指出報文的目的地,但解釋數(shù)據(jù)的含義。因此 網(wǎng)絡(luò)上所有的節(jié)點可以通過報文濾波確定是否應(yīng)對該數(shù)據(jù)做出反應(yīng) 多播:由于引入了報文濾波的概念,仁何數(shù)目的節(jié)點都可以接收報文,并同時對此報文做出反應(yīng) 數(shù)據(jù)連貫性:在CAN網(wǎng)絡(luò)內(nèi),可以確保文同時被所冇的節(jié)點接收(或同時不被接收)。因此, 系統(tǒng)的數(shù)據(jù)連貫性是通過多播和錯誤處理的原珥實現(xiàn)的。 位速率( Bit rate) 不同的系統(tǒng),CAN的速度不同??墒?在一給定的系統(tǒng)里,位速率是唯一的,并且是固定的 優(yōu)先權(quán)( Priorities): 在總線訪問期間,識判符定義一靜態(tài)的報文優(yōu)先權(quán)。 4 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com 遠程數(shù)據(jù)請求〈 Remote Data Request 通過發(fā)送遠稈幀,需要數(shù)據(jù)的節(jié)點可以請求另一節(jié)點發(fā)送相應(yīng)的數(shù)據(jù)幀。數(shù)據(jù)幀和相應(yīng)的遠稈幀是由 相同的識別符( IDENTIFIER)命名的。 多主機( Multimaster) 總線空閑時,仨何單元都可以開始傳送報文。具有較高優(yōu)先權(quán)報文的單元可以獲得總線訪問權(quán)。 仲裁( Arbitration): 只要總線空閑,任何單元都可以開始發(fā)送報文。如果2個或2個以上的單元同時開始傳送報文,那么 就會有總線訪問沖突。通過使用識別符的位形式仲裁可以解決這個沖突。仲裁的札制確保信息和時間均不 會損矢。當(dāng)具有相同識別符的數(shù)據(jù)幀和遠程幀冋時初始化時,數(shù)據(jù)幀優(yōu)先于遠程幀。仲裁期間,每一個發(fā) 送器都對發(fā)送位的電平與被監(jiān)控的總線電平進行比較。如果電平相同,則這個單元可以繼續(xù)發(fā)送。如果發(fā) 送的是“隱性”電半而監(jiān)控視到一“顯性”電半(見總線值),那么該單元就失去了仰裁,必須退出發(fā)送 狀態(tài)。 安全性( Safety): 為了獲得最安全的數(shù)據(jù)發(fā)送,CAN的每一個節(jié)點均采取了強有力的措施以進行錯誤檢測、錯誤標(biāo)定及 錯誤自檢。 錯誤檢測( Error detection): 為了檢測錯誤,必須采取以下措施: 監(jiān)視(發(fā)送器對發(fā)送位的電平與被監(jiān)控的總線電平進行比較) 循壞幾余檢查 位填充 報文格式檢査 錯詼檢測的執(zhí)行( Performance of error detection): 錯誤檢測的機制要具有以下的屬性: 檢測到所有的全局錯誤 檢測到發(fā)送器所有的局部錯誤 可以檢測到一報文里多達5個仟意分布的錯誤 檢測到報文里長度低于15(位)的突發(fā)性錯誤 檢測到一報文里任一奇數(shù)個的錯誤 對于沒有被檢測到的錯誤報文,其娀余的錯誤叫能性概率低于:報文錯誤率*4.7*10-11。 錯誤標(biāo)定和恢復(fù)時間( Error Sinalling and Recovery Time): 任何檢測到錯誤的節(jié)點會標(biāo)志出已損壞的報文。此報文會失效并將自動地開始重新傳送。如果不再出 現(xiàn)新錯誤的話,從檢測到錯誤到卜一報文的傳送開始為止,恢復(fù)時間最多為29個位的時間。 故障界定( Fault confinement CAN節(jié)點能夠把水久故障和短暫擾動區(qū)分開來。永久故障的節(jié)點會被關(guān)閉 連接( Connections) CAN串行通訊鏈路是可以連接許多單元的總線。理論上,可連接無數(shù)多的單元。但由于實際上受延遲 時間以及/或者總線線路上電氣負載的影響,連接單元的數(shù)量是有限的。 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com 單通道( Single Channel): 總線是由單一進行雙向位信號傳送的通道組成。通過此通道可以獲得數(shù)據(jù)的再同步信息。要使此通道 實現(xiàn)通訊,有許多的方法可以釆用,如使用單芯線(加上接地)、2條差分線、光纜笭等。這本技術(shù)規(guī)范 不限制這些實現(xiàn)方法的使用,即未定義物理層。 總線值( Bus value): 總線可以具有兩種互補的邏輯值之一:“顯性”或“隱性”。“顯性”位和“隱性”位同時傳送時,總 線的結(jié)果值為“顯性”。比如,在執(zhí)行總線的“線與”時,邏輯0代表“顯性”笭級,邏輯1代表“隱性” 等級。本技術(shù)規(guī)范不給出表示這些邏輯電平的物理狀態(tài)(比如,電壓、光)。 應(yīng)答( Acknowledgment): 所有的接收器檢査報文的連貫性。對于連貫的報文,接收器應(yīng)答;對于不連貫的報文,接收器作出標(biāo) 睡眠模式/喚醒( Sleep Mode/Wake-up): 為了減少系統(tǒng)電源的功率消耗,可以將CAN器件沒為睡眠模式以便停止內(nèi)部活動及斷開與總線驅(qū)動器 的連接。CAN器件可由總線激活,或系統(tǒng)內(nèi)部狀態(tài)而被喚酲ε喚醒時,雖然傳輸層要等待一段時間使系統(tǒng) 振蕩器穩(wěn)定,然后還要等待一段時間直到與總線活動同步(通過檢査11個連續(xù)的“隱性”的位),但在總 線驅(qū)動器被重新設(shè)置為“總線在線”之前,內(nèi)部運行已重新開始。為了喚醒系統(tǒng)上正處于睡眠模式的其他 節(jié)點,可以使用一特殊的喚醒報文,比報文具有專門的、最低等級的識別符。( rrr rrrd rrrr;r=‘隱性’d =‘顯性’) 3.報文傳輸 3.1幀類型 報文傳輸由以下4個不同的幀類型所表示和控伺: 數(shù)據(jù)幀:數(shù)據(jù)嗩攜帶數(shù)據(jù)從發(fā)送器至接收器。 遠程幀:總線單元發(fā)岀遠程幀,請求發(fā)送具有同·識別符的數(shù)據(jù)幀。 錯誤幀:任何單元檢測到一總線錯誤就發(fā)出錯誤幀 過載幀:過載嗩用以在先行的和后續(xù)的數(shù)據(jù)幀(或遠程幀)之間提供一附加的延時。 數(shù)據(jù)幀(或遠程幀)通過幀間空間與前述的各幀分開。 3.11數(shù)據(jù)幀 數(shù)據(jù)幀由7個不同的位場組成: 幀起始、仲祓場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答場、幀結(jié)尾。數(shù)據(jù)場的長度可以為0。 幀起始 它標(biāo)志數(shù)據(jù)幀和遠程幀的起始,由一個單獨的“顯性”位組成。 只在總線空閑〈參覽“總線空閑”)時,才允許站開始發(fā)送(信號)。所有的站必須同步于首元開始 發(fā)送信息的站的幀記始前沿(參見“砭同步”) 6 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com Interframe DATA FRAME Interframe Space S pac Frame Start of frame Arbitration field Cont rol field Data F ield CRCF ield ACKF ield End of frame 仲裁場 仲裁場包括識別符和遠程發(fā)送請求位(RTR)。 識別符:識別符的長度為11位。這些位的發(fā)送順序是從ID-10到|D-0。最低位是ID0。最高的7位 (DD-10到-4)必須不能全是“隱性” RTR位:該位在數(shù)據(jù)幀旦必須為“顯性”,而在遠程幀里必須為“隱性”。 Interframe S art ARBI TRATION FIELD D Cont ro Space of F rame Fie ld RT RB Identifi 控制場 控制場由6個位組成,包括數(shù)據(jù)長度代碼和兩個將來作為擴展用的保留位。所發(fā)送的保留位必須為“顯 性”。接收器接收所有由“顯性”和“隱性”組合仁一起的位。 數(shù)扼長度代碼:數(shù)據(jù)長度代碼指示了數(shù)據(jù)場中字節(jié)數(shù)量。數(shù)據(jù)長度代碼為4個位,在控制場里被發(fā)送。 CO NTRO L FIELD Data Field Field DLC1 DLC O CRC Field reserved Dat a Lengt h code b its 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com 數(shù)據(jù)長度代碼中數(shù)據(jù)字數(shù)的編碼( DATA LENGTH CODE) 縮寫 d-“顯性” r“隱性 Number of data Data Leng th Code Bytes DLC3DLC2 DLC1 DLCO d 2345678 dddddddd r d 數(shù)捱幀:允許的數(shù)據(jù)字節(jié)數(shù):{0,1,…,7,8}。其他的數(shù)值不允許使用。 數(shù)據(jù)場 數(shù)摭場由數(shù)據(jù)幀中的發(fā)送數(shù)據(jù)組成。它可以為0~8個字節(jié),每字節(jié)包含了8個位,首先發(fā)送MSB CRC場 CRC場包括CRC序列( CRC SEQUENCE),其后是CRC界定符( CRC DELIMITER) CRCF ELD Field Fie ld CRC Del imiter CRCS equence CRC序列:由循環(huán)冗余碼求得的幀檢查序列最適用于位數(shù)低于127位〈BCH碼)的幀。為進行CRC 計算,被除的多項式系數(shù)由無填充位流給定,組成這些位流的成分是:幀起始、仲裁場、控制場、數(shù)據(jù)場 (假如有),而15個最低位的系數(shù)是0。將此多項式被下面的多項式發(fā)生器除(其系數(shù)以2為模 15 X 14 +X10+X8+X7+Ⅹ4+X3+1 這個多項式除法的余數(shù)就是發(fā)送到總線上的CRC序列( CRC SEQUENCE)。為了實現(xiàn)這個功能, 可以使用15位的位移寄存器 CRC RG(14:0)。如果用 NXTBIT標(biāo)記指小位流的下一位,它由從幀的起 始到數(shù)據(jù)場木尾都由無填充的位序列給定 CRC序列( CRC SEQUENCE)的計算如: CRC RG=0 ∥初始化移位寄存器 REPEAT 8 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com CRCNXT= NXTBIT EXOR CRC RG(14) CRC RG(14: 1)=CRC RG(13: 0) ∥寄存器左移1位 CRC RG(0)=0 IF CRCNXT THEN CRC RG(14: 0) =CRC RG(14: 0) EXOR (4599hex ENDIF UNTL(CRC序列開始或存在一個錯誤條件) 在傳送接收數(shù)據(jù)場的最后一位以后, CRC RG包含有cRC序列。CRc序列之后是CRc界定符,它 包含一個單獨的“隱性”位。 應(yīng)答場 應(yīng)答場長度為2個位,包含應(yīng)答間隙( ACK SLOT)和應(yīng)答界定符( ACK DELIMITER)。在應(yīng)答場 里,發(fā)送站發(fā)送兩個“隱性”位。當(dāng)接收器正確地接收到有效的報文,接收器就會在應(yīng)答間隙( ACK SLOT) 期間(發(fā)送ACK信號)向發(fā)送器發(fā)送一“顯性”的位以示應(yīng)答。 CRC ACKF IELD End of Field Fr ame ACK Delimiter ACKS ot 應(yīng)答間隙:所有接收到匹配CRC序列( CRC SEQUENCE)的站會在應(yīng)答間隙( ACK SLOT)期間 用“顯性”的位與入發(fā)送器的“隱性”位來作出回答。 ACK界定符:ACK界定符是ACK場的第二個位,并且是一個必須為“隱性”的位。因此,應(yīng)答間隙 ( ACK SLOT)被兩個“隱性”的位所包圍,也就是CRC界定符( CRC DELIMITER)和ACK界定符(ACK DELIMITER) 幀結(jié)尾 每一個數(shù)據(jù)幀和遠程幀均由一標(biāo)志序列界定。這個標(biāo)志序列由7個“隱性”位組成。 3.1.2遠程幀 通過發(fā)送遠程幀,作為某數(shù)據(jù)接攻器的站通過其資源節(jié)點對不同的數(shù)據(jù)傳送進行初始化設(shè)置。 遠程幀由6個不同的位場組成 幀起始、仲裁場、控制場、CRC場、應(yīng)答場、幀末尾。 與藪據(jù)幀相反,遠程幀的RTR位是“隱性”的。它沒有數(shù)據(jù)場,數(shù)據(jù)長度代碼的藪值是不受制約的(可 以標(biāo)注為容許范圍里0.8的任何數(shù)值)。此數(shù)值是相應(yīng)于數(shù)據(jù)幀的數(shù)據(jù)長度代碼。 廣州周立功單片機發(fā)展有限公司Te:020-3873097638730977Fax:38730925ht/www.zlGmcu.Com Inter REMOTE FRAME Inter Frame Fr ame Space Space Overlay Fr Start of frame Arbitration Field Con trol field CRCF ield ACKF ield End of frame RTR位的極性表示了所發(fā)送的幀是一數(shù)據(jù)幀(RTR位“顯性”)還是一遠程幀(RTR“隱性” 3.13錯誤幀 錯誤幀由兩個不冋的場組成。第一個場用作為不同站提供的錯誤標(biāo)志( ERROR FLAG)的疊加。第二 個場是錯誤界定符。 Data ERRO RE RAME Interframe Fame Space or Error Flag Over load Frame superposition of Error Flags Error del imiter 為了能正確地終止錯誤幀,一“錯誤被動”的節(jié)點要求總線至少有長度為3個位時間的總線空閑(如 果“錯誤被動”的接收器有本地錯誤的話)。因此,總線的載荷不應(yīng)為100% 有兩種形式的錯誤標(biāo)志,主動錯誤標(biāo)志( Active error flag)和被動錯誤標(biāo)志( Passive error flag)。 主動錯誤標(biāo)志由6個連續(xù)的“顯性”位組成。被動錯誤標(biāo)志由6個連續(xù)的“隱性”的位組成,除非被其他 節(jié)點的“顯性”位重寫 檢測到錯誤條件的“錯誤主動”的站通過發(fā)送主動錯誤標(biāo)志,以指示錯誤。錯誤標(biāo)志的形式破壞了從 幀起始到CRC界定符的位填允規(guī)則(參見“編碼”),或者破壞了應(yīng)答場或幀末尾場的固定形式,所有 其他的站由此檢測到錯誤條件并與此同時開始發(fā)送錯誤標(biāo)志。因此,“顯性”位(此“顯性”位可以在總 線上監(jiān)視)的序列導(dǎo)致一個結(jié)果,這個結(jié)果就是把各個單獨站發(fā)送的不同的錯誤標(biāo)志疊加在一起。這個順 序的總長度最小為6個位,最大為12個位。 檢測到錯誤條件的“錯誤被動”的站試圖通過發(fā)送被動錯誤標(biāo)志,以指示錯誤。“錯誤被動”的站等 待6個相同極性的連續(xù)位(這6個位處于被動錯誤標(biāo)志的開始)。當(dāng)這6個相同的位被檢測到時,被動錯 誤標(biāo)志的發(fā)送就完成了。
代碼片段和文件信息
評論
共有 條評論