can總線原理如何理解,can總線原理詳解
CAN總線是一種串行通信協(xié)議,能有效的支持具有很高安全等級(jí)的分布實(shí)時(shí)控制
應(yīng)用范圍十分廣泛,從高速網(wǎng)絡(luò)到低價(jià)位的多路接線都可以使用CAN,主要運(yùn)用于汽車電子航天等行業(yè),使用CAN連接發(fā)動(dòng)機(jī)的控制單元等汽車部件,CAN總線具有可靠,實(shí)時(shí)以及靈活的特性.
CAN總線以廣播的形式發(fā)送報(bào)文.當(dāng)CAN總線上的某個(gè)節(jié)點(diǎn)需要給其他節(jié)點(diǎn)發(fā)送消息時(shí),會(huì)以廣播的形式發(fā)送給總線上所有的節(jié)點(diǎn),因?yàn)榭偩€上的節(jié)點(diǎn)不適用地址來進(jìn)行配置CAN系統(tǒng),而是根據(jù)報(bào)文的開頭的11位標(biāo)識(shí)符決定是否要接受其他節(jié)點(diǎn)發(fā)來的報(bào)文.
每個(gè)節(jié)點(diǎn)都有自己的處理器和CAN總線接口控制器;當(dāng)一個(gè)節(jié)點(diǎn)需要發(fā)送數(shù)據(jù)到另一個(gè)節(jié)點(diǎn)時(shí),自身節(jié)點(diǎn)的處理器需要將要發(fā)送的數(shù)據(jù)和自己的標(biāo)識(shí)符傳給自身的總線控制接口,處于準(zhǔn)備狀態(tài);當(dāng)獲取到總線的使用權(quán)后,將數(shù)據(jù)和標(biāo)識(shí)符組裝成報(bào)文,將報(bào)文以一定格式發(fā)出,此時(shí)其他的節(jié)點(diǎn)處于接收狀態(tài).至于其他節(jié)點(diǎn)是否接收,由其他節(jié)點(diǎn)決定,是都會(huì)對(duì)某些報(bào)文進(jìn)行過濾.當(dāng)新增的節(jié)點(diǎn)僅僅是純粹的數(shù)據(jù)接收設(shè)備時(shí),只需要該設(shè)備直接從總線上接收數(shù)據(jù)即可.
首先 CAN 數(shù)據(jù)總線有兩條導(dǎo)線,一條是黃色的,一條是綠色的 ------ 分別是 CAN_High 線和 CAN_Low 線,當(dāng)靜止?fàn)顟B(tài)時(shí),這兩條導(dǎo)線上的電平一樣,這個(gè)電平稱為靜電平,大約為 2.5 伏。
這個(gè)靜電平狀態(tài)就是隱形狀態(tài),也稱隱性電平,也就是沒有任何干擾的時(shí)候的狀態(tài)稱為隱性狀態(tài)。當(dāng)有信號(hào)修改時(shí),CAN_High 線上的電壓值變高了,一般來說會(huì)升高至少 1V;而 CAN_Low 線上的電壓值會(huì)降低一個(gè)同樣值,也是 1v。那么這時(shí)候,CAN_High 就是 2.5v+1v=3.5v,它就處于激活狀態(tài)了。而 CAN_Low 降為 2.5v-1v=1.5v。
由此我們得到,在隱性狀態(tài)下CAN_High 線與 CAN_Low 沒有電壓差,這樣我們看到?jīng)]有任何變化也就檢測(cè)不到信號(hào)。但是在顯性狀態(tài)時(shí),改值最低為 2V,我們就可以利用這種變化才傳輸數(shù)據(jù)了。所以出現(xiàn)了那些幀,那些幀中的場(chǎng),那些場(chǎng)中的位等等。
在總線上通常邏輯 1 表示隱性。而 0 表示顯性。這些 1 啊,0 啊,就可以利用起來為我們傳數(shù)據(jù)了。利用這種電壓差,我們可以接收信號(hào)。
一般來說,控制單元通過收發(fā)器連接到 CAN 驅(qū)動(dòng)總線上,這個(gè)收發(fā)器(顧名思義,可發(fā)送,可接收)內(nèi)有一個(gè)接收器,該接收器是安裝在接收一側(cè)的差動(dòng)信號(hào)放大器。然后,這個(gè)放大器很自然地就放大了 CAN_High 和 CAN_Low 線的電平差,然后傳到接收區(qū)。
CAN 的報(bào)文格式有兩種,不同之處其實(shí)就是識(shí)別符長(zhǎng)度不同,具有 11 位識(shí)別符的幀稱為標(biāo)準(zhǔn)幀,而還有 29 位識(shí)別符的幀為擴(kuò)展幀,CAN 報(bào)文有以下 4 個(gè)不同的幀類型。分別是:
(1) 數(shù)據(jù)幀:數(shù)據(jù)幀將數(shù)據(jù)從發(fā)送器傳輸?shù)浇邮掌?
(2) 遠(yuǎn)程幀:總線節(jié)點(diǎn)發(fā)出遠(yuǎn)程幀,請(qǐng)求發(fā)送具有同一標(biāo)識(shí)符的數(shù)據(jù)幀;
(3) 錯(cuò)誤幀:任何節(jié)點(diǎn)檢測(cè)到總線錯(cuò)誤就發(fā)出錯(cuò)誤幀;
(4) 過載幀:過載幀用已在先行的后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一附加的延時(shí)。
下面詳細(xì)介紹一下數(shù)據(jù)幀,用于CAN傳送數(shù)據(jù),包括幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)和CRC場(chǎng)。
幀起始:標(biāo)志一個(gè)數(shù)據(jù)幀的開始,僅由一個(gè)顯性位構(gòu)成,只有在總線空閑期間才能夠發(fā)送。
仲裁場(chǎng):在標(biāo)準(zhǔn)幀中,仲裁場(chǎng)由11位標(biāo)識(shí)符和RTR位組成;在擴(kuò)展幀中,仲裁場(chǎng)由29位標(biāo)識(shí)符、SRR位、IDE位和RTR位組成。
ID(標(biāo)識(shí)符)是用來確定一條報(bào)文,表明報(bào)文含義及優(yōu)先級(jí),如上面舉例的0x100。
RTR(遠(yuǎn)程傳送請(qǐng)求位),數(shù)據(jù)幀RTR位必須為顯性電平(RTR=0),遠(yuǎn)程幀RTR位必須為隱性電平(RTR=1)。
IDE(標(biāo)識(shí)符擴(kuò)展位)在標(biāo)準(zhǔn)幀屬于控制場(chǎng),在擴(kuò)展幀中屬于仲裁場(chǎng)。在標(biāo)準(zhǔn)幀中IDE為顯性電平(IDE=0),在擴(kuò)展幀中IDE為隱性電平(IDE=1)
SRR(遠(yuǎn)程代替請(qǐng)求位)在擴(kuò)展幀中始終為隱性電平(SRR=1)
控制場(chǎng):由6位組成。在標(biāo)準(zhǔn)幀中,控制場(chǎng)包括IDE(此時(shí)為顯性電平0)、保留位r(此時(shí)為顯性電平0)以及占4個(gè)bit的數(shù)據(jù)場(chǎng)長(zhǎng)度碼DLC。在擴(kuò)展幀中,控制場(chǎng)沒有IDE位,而是兩個(gè)保留位r0和r1,此時(shí)同樣均為顯性電平0。
數(shù)據(jù)場(chǎng):包含CAN數(shù)據(jù)幀發(fā)送的數(shù)據(jù),0~8個(gè)byte,如上面舉例的主要信息就是圍繞數(shù)據(jù)場(chǎng)來說明的,這也是整車電子工程師討論得最多的一部分內(nèi)容,如果你不是專門的CAN設(shè)計(jì)工程師,其他的格式內(nèi)容僅作了解即可。
CRC場(chǎng):包括CRC序列CRC界定符DEL,CRC校驗(yàn)是為了通信雙方的安全可靠性制定的”暗號(hào)“,只有發(fā)送方根據(jù)發(fā)送信息計(jì)算的CRC值與接收方根據(jù)接收信息計(jì)算的CRC值對(duì)上,才能判斷這次通信成功了,否則就會(huì)報(bào)錯(cuò)。
CAN總線是一種多主方式的串行通訊總線,基本設(shè)計(jì)規(guī)范要求有高的位速率,高抗電子干擾性,并且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤。CAN總線可以應(yīng)用于汽車電控制系統(tǒng)、電梯控制系統(tǒng)、安全監(jiān)測(cè)系統(tǒng)、醫(yī)療儀器、紡織機(jī)械、船舶運(yùn)輸?shù)阮I(lǐng)域。