CAN總線入門如此簡單
時間:2018-03-15作者:華清遠見
很難找到一篇能夠適合初學者CAN總線原理的文章,因此小編本著通俗易懂的原則編寫此文!
什么是CAN總線? CAN總線應用于汽車,實現(xiàn)電子控制器和傳感器之間的通信 Ø 高可靠性、低成本的通信協(xié)議。 Ø 最初由Robert Bosch于1986年開發(fā)。 Ø 主要應用于汽車、卡車、拖拉機、工業(yè)機器人。 想象一下,一輛汽車就像一個人:
Ø CAN總線是神經(jīng)系統(tǒng),使身體各部分之間的通信得以實現(xiàn)。 Ø ECU通過CAN總線連接,該總線相當于一個中央網(wǎng)絡系統(tǒng)。 什么是ECU? Ø 在汽車CAN總線系統(tǒng)中,ECUs可以是發(fā)動機控制單元、安全氣囊或音頻系統(tǒng)。 Ø 一輛現(xiàn)代汽車最多可以有70輛ECUs。 CAN總線5大特性
Ø 低成本:ECUs通過單個CAN接口進行通信,布線成本低。 Ø 高集成:CAN總線系統(tǒng)允許在所有ECUs上進行集中錯誤診斷和配置。 Ø 可靠性:該系統(tǒng)對子系統(tǒng)的故障和電磁干擾具有很強的魯棒性,是汽車控制系統(tǒng)的理想選擇。 Ø 高效率:可以通過id對消息進行優(yōu)先級排序,以便最高優(yōu)先級的id不被中斷。 Ø 靈活性:每個ECU包含一個用于CAN總線收發(fā)芯片,隨意添加CAN總線節(jié)點。 CAN總線發(fā)展史
Ø 未出現(xiàn)前:汽車ECUs依靠越來越復雜的點對點布線。 Ø 1986年:Bosch公司開發(fā)了CAN總線協(xié)議作為汽車電子解決方案,并在SAE大會上發(fā)布。 Ø 1991年:Bosch公司發(fā)布了CAN2.0,包涵CAN 2.0A (11 位) 和CAN 2.0B (29 位)。 Ø 1993年:CAN總線列入標準(ISO 11898)。 Ø 2012年:Bosch公司發(fā)布了CAN FD 1.0 Ø 今天:幾乎每一輛汽車都有CAN總線系統(tǒng),它廣泛應用于卡車、公共汽車、工業(yè)車輛、船舶、飛機和工業(yè)自動化。 CAN總線的未來 展望未來,CAN總線將繼續(xù)前行——而且更有可能是隨著云計算、物聯(lián)網(wǎng)和自動駕駛汽車的興起。這些趨勢還將增加可以使用WiFi /蜂窩網(wǎng)絡連接的CAN總線的需求——允許無線傳輸?shù)腃AN總線數(shù)據(jù),例如云服務器。
為了實現(xiàn)這一目標,CAN FD將是一個關鍵的組成部分;旧,今天的CAN總線系統(tǒng)面臨一個主要的障礙:1 Mbit/s的速度限制隨著數(shù)據(jù)速度的復雜性和需求的增加(更多的ECUs,數(shù)據(jù)),這是一個越來越大的挑戰(zhàn)。 Ø CAN FD提供兩個關鍵的指標: n 數(shù)據(jù)傳輸速率達到8Mbit/s——遠遠超出常規(guī)的1Mbit/s。 n 64字節(jié)的數(shù)據(jù)包——而不是8字節(jié)。 CAN總線物理結構與特性 CAN總線網(wǎng)絡
CAN總線網(wǎng)絡主要掛在CAN_H和CAN_L,各個節(jié)點通過這兩條線實現(xiàn)信號的串行差分傳輸,為了避免信號的反射和干擾,還需要在CAN_H和CAN_L之間接上120歐姆的終端電阻,但是為什么是120歐姆呢?那是因為電纜的特性阻抗為120歐。 CAN收發(fā)器 CAN收發(fā)器的作用是負責邏輯電平和信號電平之間的轉換。
即從CAN控制芯片輸出邏輯電平到CAN收發(fā)器,然后經(jīng)過CAN收發(fā)器內(nèi)部轉換將邏輯電平轉換為差分信號輸出到CAN總線上,CAN總線上的節(jié)點都可以決定自己是否需要總線上的數(shù)據(jù)。具體的管教定義如下:
CAN信號表示 CAN總線采用不歸零碼位填充技術,也就是說CAN總線上的信號有兩種不同的信號狀態(tài),分別是顯性的(Dominant)邏輯0和隱形的(recessive)邏輯1,信號每一次傳輸完后不需要返回到邏輯0(顯性)的電平。
CAN收發(fā)器有TXD,RXD是與CAN控制器連接的。發(fā)送器接到網(wǎng)絡的是CL和CH。CL與CH是差分電路。CAN網(wǎng)絡上是用CL于CH的電壓差來表示邏輯“0”和邏輯“1”。所以CAN網(wǎng)絡中只能單向傳輸。 CAN仲裁 只要總線空閑,總線上任何節(jié)點都可以發(fā)送報文,如果有兩個或兩個以上的節(jié)點開始傳送報文,那么就會存在總線訪問沖突的可能。但是CAN使用了標識符的逐位仲裁方法可以解決這個問題。
在仲裁期間,每一個發(fā)送器都對發(fā)送的電平與被監(jiān)控的總線電平進行比較。如果電平相同,則這個單元可以繼續(xù)發(fā)送。如果發(fā)送的是一"隱性"電平而監(jiān)視到的是一"顯性"電平,那么這個節(jié)點失去了仲裁,必須退出發(fā)送狀態(tài)。如果出現(xiàn)不匹配的位不是在仲裁期間則產(chǎn)生錯誤事件。 幀ID越小,優(yōu)先級越高。由于數(shù)據(jù)幀的RTR位為顯性電平,遠程幀為隱性電平,所以幀格式和幀ID相同的情況下,數(shù)據(jù)幀優(yōu)先于遠程幀;由于標準幀的IDE位為顯性電平,擴展幀的IDE位為隱形電平,對于前11位ID相同的標準幀和擴展幀,標準幀優(yōu)先級比擴展幀高。 CAN總線通信協(xié)議 協(xié)議格式
如何解析 下面是使用CANLoggerX000的汽車的一個示例日志文件: # Logger type: CANLogger2000 # HW rev: 6.xx # FW rev: 5.51 # Logger ID: ID0001 # Session No.: 9 # Split No.: 3 # Time: 20170508T064128 # Value separator: ";" # Time format: 4 # Time separator: "" # Time separator ms: "" # Date separator: "" # Time and date separator: "T" # Bit-rate: 500000 # Silent mode: false # Cyclic mode: false Timestamp;Type;ID;Data 08T064254150;0;34d;1003fafa000d00ff 如果我們查看上面的原始CAN總線數(shù)據(jù)樣本,可能會注意到: 原始的CAN總線數(shù)據(jù)沒有意義! 這是因為我們需要將數(shù)據(jù)轉換成按比例計算的工程值——也就是人類可讀的形式。 要做到這一點,我們需要知道一些事情:
例如,在34d中的64位數(shù)據(jù)中,可能會有3個不同參數(shù)的數(shù)據(jù),每個參數(shù)都有一個特定的起始點和位長。 針對這3個不同參數(shù)的數(shù)據(jù),我們需要要知道如何解碼: 每個參數(shù)都需要偏移量和刻度值 [數(shù)據(jù)值]=[偏移]+[刻度]x[原始數(shù)據(jù)值] 相關資訊
發(fā)表評論
|
全國咨詢電話:400-611-6270,雙休日及節(jié)假日請致電值班手機:15010390966
在線咨詢: 曹老師QQ(3337544669), 徐老師QQ(1462495461), 劉老師 QQ(3108687497)
企業(yè)培訓洽談專線:010-82600901,院校合作洽談專線:010-82600350,在線咨詢:QQ(248856300)
Copyright 2004-2018 華清遠見教育科技集團 版權所有 ,京ICP備16055225號,京公海網(wǎng)安備11010802025203號