1.CAN總線是什么,?
CAN(Controller Area Network)是ISO國(guó)際標(biāo)準(zhǔn)化的串行通信協(xié)議,。廣泛應(yīng)用于汽車、船舶等,。具有已經(jīng)被大家認(rèn)可的高性能和可靠性,。
CAN控制器通過組成總線的2根線(CAN-H和CAN-L)的電位差來(lái)確定總線的電平,在任一時(shí)刻,,總線上有2種電平:顯性電平和隱性電平,。
“顯性”具有“優(yōu)先”的意味,只要有一個(gè)單元輸出顯性電平,,總線上即為顯性電平,,并且,“隱性”具有“包容”的意味,,只有所有的單元都輸出隱性電平,,總線上才為隱性電平。(顯性電平比隱性電平更強(qiáng)),。
總線上執(zhí)行邏輯上的線“與”時(shí),,顯性電平的邏輯值為“0”,隱性電平為“1”,。
下圖顯示了一個(gè)典型的CAN拓?fù)溥B接圖,。
連接在總線上的所有單元都能夠發(fā)送信息,,如果有超過一個(gè)單元在同一時(shí)刻發(fā)送信息,,有最高優(yōu)先級(jí)的單元獲得發(fā)送的資格,所有其它單元執(zhí)行接收操作。
2.CAN總線的特點(diǎn)
CAN總線協(xié)議具有下面的特點(diǎn):
1) 多主控制
當(dāng)總線空閑時(shí),,連接到總線上的所有單元都可以啟動(dòng)發(fā)送信息,,這就是所謂的多主控制的概念。
先占有總線的設(shè)備獲得在總線上進(jìn)行發(fā)送信息的資格,。這就是所謂的CSMA/CR(Carrier Sense MultipleAccess/Collosion Avoidance)方法
如果多個(gè)設(shè)備同時(shí)開始發(fā)送信息,,那么發(fā)送最高優(yōu)先級(jí)ID消息的設(shè)備獲得發(fā)送資格。
2) 信息的發(fā)送
在CAN協(xié)議中,,所有發(fā)送的信息要滿足預(yù)先定義的格式,。當(dāng)總線沒有被占用的時(shí)候,連接在總線上的任何設(shè)備都能起動(dòng)新信息的傳輸,,如果兩個(gè)或更多個(gè)設(shè)備在同 時(shí)刻啟動(dòng)信息的傳輸,,通過ID來(lái)決定優(yōu)先級(jí)。ID并不是指明信息發(fā)送的目的地,,而是指示信息的優(yōu)先級(jí),。如果2個(gè)或者更多的設(shè)備在同一時(shí)刻啟動(dòng)信息的傳輸, 在總線上按照信息所包含的ID的每一位來(lái)競(jìng)爭(zhēng),,贏得競(jìng)爭(zhēng)的設(shè)備(也就是具有最高優(yōu)先級(jí)的信息)能夠繼續(xù)發(fā)送,,而失敗者則立刻停止發(fā)送并進(jìn)入接收操作。因?yàn)? 總線上同一時(shí)刻只可能有一個(gè)發(fā)送者,,而其它均處于接收狀態(tài),,所以,并不需要在底層協(xié)議中定義地址的概念,。
3) 系統(tǒng)的靈活性
連接到總線上的單元并沒有類似地址這樣的標(biāo)識(shí),,所以,添加或去除一個(gè)設(shè)備,,無(wú)需改變軟件和硬件,,或其它設(shè)備的應(yīng)用層軟件。
4) 通信速度
可以設(shè)置任何通訊速度,,以適應(yīng)網(wǎng)絡(luò)規(guī)模,。
對(duì)一個(gè)網(wǎng)絡(luò),,所有單元必須有相同的通訊速度,,如果不同,就會(huì)產(chǎn)生錯(cuò)誤,,并妨礙網(wǎng)絡(luò)通訊,,然而,不同網(wǎng)絡(luò)間可以有不同的通訊速度,。
5) 遠(yuǎn)程數(shù)據(jù)請(qǐng)求
可以通過發(fā)送“遙控幀”,,請(qǐng)求其他單元發(fā)送數(shù)據(jù),。
6) 錯(cuò)誤檢測(cè)、錯(cuò)誤通知,、錯(cuò)誤恢復(fù)功能
所有單元均可以檢測(cè)出錯(cuò)誤(錯(cuò)誤檢測(cè)功能),。
檢測(cè)到錯(cuò)誤的單元立刻同時(shí)通知其它所有的單元(錯(cuò)誤通知功能),。如果一個(gè)單元發(fā)送信息時(shí)檢測(cè)到一個(gè)錯(cuò)誤,,它會(huì)強(qiáng)制終止信息傳輸,,并通知其它所有設(shè)備發(fā)生了錯(cuò)誤,,然后它會(huì)重傳直到信息正常傳輸出去(錯(cuò)誤恢復(fù)功能)。
7) 錯(cuò)誤隔離
在CAN總線上有兩種類型的錯(cuò)誤:暫時(shí)性的錯(cuò)誤(總線上的數(shù)據(jù)由于受到噪聲的影響而暫 時(shí)出錯(cuò)),;持續(xù)性的錯(cuò)誤(由于設(shè)備內(nèi)部出錯(cuò)(如驅(qū)動(dòng)器壞了、連接有問題等)而導(dǎo)致的),。CAN能夠區(qū)別這兩種類型,,一方面降低常出錯(cuò)單元的通訊優(yōu)先級(jí)以阻 止對(duì)其它正常設(shè)備的影響,另一方面,,如果是一種持續(xù)性的錯(cuò)誤,,將這個(gè)設(shè)備從總線上隔離開,。
8) 連接
CAN總線允許多個(gè)設(shè)備同時(shí)連接到總線上且在邏輯上沒有數(shù)目上的限制,。然而由于延遲和負(fù)載能力的限制,實(shí)際可連接得設(shè)備還是有限制的,,可以通過降低通訊速度來(lái)增加連接的設(shè)備個(gè)數(shù)。相反,,如果連接的設(shè)備少,,通訊的速度可以增加。
3.錯(cuò)誤
3.1 錯(cuò)誤狀態(tài)
設(shè)備總是處于下面三個(gè)狀態(tài)之一:
1)主動(dòng)錯(cuò)誤狀態(tài)
在此狀態(tài)下,,設(shè)備能夠參加總線上的正常通訊,。如果處于主動(dòng)錯(cuò)誤狀態(tài)的設(shè)備檢測(cè)到一個(gè)錯(cuò)誤,它會(huì)發(fā)送一個(gè)主動(dòng)錯(cuò)誤標(biāo)志,,更細(xì)節(jié)見第6章的“CAN協(xié)議”,。
2)被動(dòng)錯(cuò)誤狀態(tài)
是指易于引起錯(cuò)誤的狀態(tài)。
盡管處于被動(dòng)錯(cuò)誤狀態(tài)的設(shè)備能夠參加總線上的通訊,,但是在接收期間,,它不可能主動(dòng)地向其它設(shè)備發(fā)送錯(cuò)誤通知,以避免影響它們的通訊,。處于被動(dòng)錯(cuò)誤狀態(tài)的設(shè) 備即使檢測(cè)到一個(gè)錯(cuò)誤,,如果其它處于主動(dòng)錯(cuò)誤狀態(tài)的設(shè)備沒曾檢測(cè)到錯(cuò)誤,,那么也認(rèn)為在總線上未曾出現(xiàn)過任何錯(cuò)誤。
當(dāng)處于被動(dòng)錯(cuò)誤狀態(tài)的設(shè)備檢測(cè)到一個(gè)錯(cuò)誤的時(shí)候,,它發(fā)送一個(gè)被動(dòng)錯(cuò)誤標(biāo)志。
另外,,處于被動(dòng)錯(cuò)誤狀態(tài)的單元在發(fā)送結(jié)束后不能立刻再次開始發(fā)送,。在開始下次發(fā)送前,在間隔幀期間內(nèi)必須插入“暫停發(fā)送期”(由8個(gè)位的隱性位組成),。
更細(xì)節(jié)見第6章的“CAN協(xié)議”,。
3)總線切斷狀態(tài)
處于此狀態(tài)下時(shí),設(shè)備不能參加總線的通訊,。設(shè)備所有的收發(fā)操作都被禁止,。
這些狀態(tài)是通過發(fā)送錯(cuò)誤計(jì)數(shù)器和接收錯(cuò)誤寄存器來(lái)管理,相關(guān)錯(cuò)誤狀態(tài)由這些計(jì)數(shù)器值的組合來(lái)標(biāo)識(shí),,錯(cuò)誤狀態(tài)和計(jì)數(shù)器值之間的關(guān)系見表1和圖4,。
3.2 錯(cuò)誤計(jì)數(shù)器的值
發(fā)送和接收錯(cuò)誤計(jì)數(shù)器的值按照規(guī)定的條件來(lái)改變,。
表2小結(jié)了錯(cuò)誤計(jì)數(shù)器值改變的條件,。
在一個(gè)數(shù)據(jù)收發(fā)操作中可能會(huì)發(fā)生多個(gè)條件重疊。
錯(cuò)誤計(jì)數(shù)器增加的時(shí)間發(fā)生在錯(cuò)誤標(biāo)志的第一bit位置,。
4.CAN協(xié)議的基本概念
CAN協(xié)議包括OSI參考模型的傳輸層,、數(shù)據(jù)鏈路層、物理層,。圖5顯示了CAN協(xié)議每個(gè)層的定義,。
數(shù)據(jù)鏈路層劃分為MAC(Medium Access Control媒體存取控制)和LLC(Logical Link Control羅輯鏈路控制)。MAC子層組成CAN協(xié)議的核心,。數(shù)據(jù)鏈路層的功能是將從物理層接收到的信號(hào)組織成有意義的信息,,提供如傳輸錯(cuò)誤控制等數(shù) 據(jù)傳輸控制流程。更具體來(lái)說(shuō),,包括:信息如何封裝成一幀,,數(shù)據(jù)沖突仲裁、應(yīng)答,、錯(cuò)誤的檢測(cè)或通知,。數(shù)據(jù)鏈路層的這些功能通常由CAN控制器硬件來(lái)實(shí)現(xiàn)。
物理層定義信號(hào)的實(shí)際傳輸方式,、位的時(shí)序,、位的編碼、同步的過程步驟,,然而,,CAN協(xié)議并沒有定義了信號(hào)電平,、通訊速度、采樣點(diǎn)值,、驅(qū)動(dòng)器和總線電氣特征,、連接器形式。對(duì)每個(gè)系統(tǒng),,這些特征由用戶自行確定,。
在BOSCH公司的CAN協(xié)議中,并沒有關(guān)于收發(fā)器和總線的電氣特征的定義,,而在ISO CAN協(xié)議中,,如ISO11898和ISO11519-2卻對(duì)此有明確的定義。