20世紀(jì)80年代,Robert Bosch 公司在SAE(汽車工程協(xié)會)大會上介紹了一種新型的串行總線——CAN控制器局域網(wǎng),那也是CAN誕生的時刻。今天,在歐洲幾乎每一輛新客車均裝配有CAN局域網(wǎng)。同樣,CAN也用于其他類型的交通工具,從火車到輪船或者用于工業(yè)控制。CAN 已經(jīng)成為全球范圍內(nèi)最重要的總線之一 —— 甚至領(lǐng)導(dǎo)著串行總線。
CAN總線的工作原理
CAN總線使用串行數(shù)據(jù)傳輸方式,可以1Mb/s的速率在40m的雙絞線上運行,也可以使用光纜連接,而且在這種總線上總線協(xié)議支持多主控制器。CAN與I2C總線的許多細(xì)節(jié)很類似,但也有一些明顯的區(qū)別。
當(dāng)CAN總線上的一個節(jié)點(站)發(fā)送數(shù)據(jù)時,它以報文形式廣播給網(wǎng)絡(luò)中所有節(jié)點。對每個節(jié)點來說,無論數(shù)據(jù)是否是發(fā)給自己的,都對其進行接收。每組報文開頭的11位字符為標(biāo)識符,定義了報文的優(yōu)先級,這種報文格式稱為面向內(nèi)容的編址方案。在同一系統(tǒng)中標(biāo)識符是唯一的,不可能有兩個站發(fā)送具有相同標(biāo)識符的報文。當(dāng)幾個站同時競爭總線讀取時,這種配置十分重要。
當(dāng)一個站要向其他站發(fā)送數(shù)據(jù)時,該站的CPU將要發(fā)送的數(shù)據(jù)和自己的標(biāo)識符傳送給本站的CAN芯片,并處于準(zhǔn)備狀態(tài);當(dāng)它收到總線分配時,轉(zhuǎn)為發(fā)送報文狀態(tài)。CAN芯片將數(shù)據(jù)根據(jù)協(xié)議組織成一定的報文格式發(fā)出,這時網(wǎng)上的其他站處于接收狀態(tài)。每個處于接收狀態(tài)的站對接收到的報文進行檢測,判斷這些報文是否是發(fā)給自己的,以確定是否接收它。