新聞中心

CAN總線使用總結(jié)

作者: 時(shí)間:2016-12-16 來源:網(wǎng)絡(luò) 收藏

控制域:由6個(gè)位組成,包括2個(gè)保留位(IDE,ro)用于CAN協(xié)議擴(kuò)展,4位數(shù)據(jù)長度碼,允許數(shù)據(jù)的

長度值為0~8。

數(shù)據(jù)域:發(fā)送緩沖區(qū)按照長度碼指示的數(shù)據(jù)長度進(jìn)行發(fā)送,接收的數(shù)據(jù)同樣如此,第一個(gè)字節(jié)的最高有

效位第一個(gè)被發(fā)送/接收。

循環(huán)冗余校驗(yàn)域(CRC):由CRC序列位(15位)和一個(gè)CRC邊界符(1個(gè)弱位)組成。CRC的范圍

包括起始域、仲裁域、控制域、數(shù)據(jù)域、CRC序列。之所以選用這種幀校驗(yàn)方式,因?yàn)椋哼@種CRC碼對于

少于127位的幀最佳。

應(yīng)答域:應(yīng)答域由發(fā)送方發(fā)送的兩位弱位組成(應(yīng)答空隙和應(yīng)答分界位),當(dāng)接收器正確地接收到有

效的報(bào)文時(shí),接收器就會(huì)在應(yīng)答間隙期間(發(fā)送ACK信號)向發(fā)送器發(fā)送一顯性位以示應(yīng)答。因此發(fā)送節(jié)

點(diǎn)一直監(jiān)測總線信號以確認(rèn)網(wǎng)絡(luò)中至少有一個(gè)節(jié)點(diǎn)正確接收到發(fā)信息。應(yīng)答分界位是應(yīng)答域中的第二個(gè)弱

位,有此可見,應(yīng)答空隙兩邊有兩個(gè)弱位:CRC分界位和應(yīng)答分界位。

幀結(jié)束域:每一個(gè)數(shù)據(jù)幀或遠(yuǎn)程幀一串7位的弱位幀結(jié)束域結(jié)束。

2.遠(yuǎn)程幀:請求數(shù)據(jù)

遠(yuǎn)程幀由6個(gè)域組成:起始域、仲裁域、控制域、CRC域、應(yīng)答域、幀結(jié)束域。

遠(yuǎn)程幀與數(shù)據(jù)幀不同之處在于:RTR位為高,無數(shù)據(jù)域。

3.錯(cuò)誤指示幀:用于指示傳送過程中的錯(cuò)誤信息

錯(cuò)誤指示幀由兩個(gè)不同的域組成:第一個(gè)域反映來自控制器的錯(cuò)誤標(biāo)志,第二個(gè)域?yàn)殄e(cuò)誤分界符。

錯(cuò)誤標(biāo)志:有兩種,一個(gè)由6個(gè)強(qiáng)位組成的主動(dòng)錯(cuò)誤標(biāo)志;另一個(gè)由6個(gè)弱位組成的被動(dòng)錯(cuò)誤標(biāo)志,

它是被其他CAN控制器強(qiáng)位改寫。 處于主動(dòng)錯(cuò)誤狀態(tài)的CAN節(jié)點(diǎn)檢測到錯(cuò)誤發(fā)出主動(dòng)錯(cuò)誤標(biāo)志,該錯(cuò)誤標(biāo)

志不滿足位填充規(guī)則,或者是破壞應(yīng)答域或結(jié)束域固定格式,所有其他節(jié)點(diǎn)都檢測到錯(cuò)誤狀態(tài),并發(fā)出該錯(cuò)

誤標(biāo)志。因此,這些從總線上監(jiān)測到的強(qiáng)位串是不同節(jié)點(diǎn)發(fā)出錯(cuò)誤標(biāo)志的結(jié)果,這一標(biāo)志最短為6個(gè),最長

為12個(gè)。被動(dòng)錯(cuò)誤標(biāo)志(不太理解。。。后續(xù))

錯(cuò)誤分界:它由8個(gè)弱位組成,與過載分界有相同的格式,當(dāng)錯(cuò)誤標(biāo)志發(fā)生后,每一個(gè)CAN節(jié)點(diǎn)監(jiān)測

總線,直到檢測到一個(gè)強(qiáng)位出現(xiàn),這表明所有CAN節(jié)點(diǎn)已經(jīng)完成錯(cuò)誤標(biāo)志的發(fā)送,并開始發(fā)送8個(gè)弱位的分

界符,之后網(wǎng)絡(luò)上的主動(dòng)錯(cuò)誤節(jié)點(diǎn)便可同時(shí)開始其他的發(fā)送。如果數(shù)據(jù)幀或遠(yuǎn)程幀在發(fā)送過程中發(fā)現(xiàn)錯(cuò)誤

后,當(dāng)前的信息作廢,并啟動(dòng)重新發(fā)送。如果CAN節(jié)點(diǎn)發(fā)現(xiàn)錯(cuò)誤指示幀錯(cuò)誤,則重發(fā),當(dāng)連續(xù)多次出現(xiàn)此錯(cuò)

誤時(shí),則相應(yīng)的節(jié)點(diǎn)變?yōu)楸粍?dòng)錯(cuò)誤節(jié)點(diǎn)。為正確結(jié)束錯(cuò)誤標(biāo)志,被動(dòng)態(tài)節(jié)點(diǎn)需要至少3個(gè)位周期。

4.過載幀:用于后續(xù)幀的延時(shí)

過載幀由兩個(gè)域組成:過載標(biāo)志和過載分界。

以下情況可以導(dǎo)致過載幀發(fā)送:

(1).接收未準(zhǔn)備好即接收方需要過多的時(shí)間處理當(dāng)前的數(shù)據(jù);

(2).在幀間空隙的第一位或第二位發(fā)現(xiàn)顯性位信號;

過載幀發(fā)送條件:

(1).在幀間空隙域的第一個(gè)位周期;

(2).在幀間空隙域中檢測到強(qiáng)位信號一個(gè)位周期后,方可啟動(dòng)過載幀發(fā)送。

過載標(biāo)志:由6個(gè)顯性位組成,與錯(cuò)誤標(biāo)志格式相同,當(dāng)超載標(biāo)志發(fā)生后,每個(gè)節(jié)點(diǎn)監(jiān)測總線狀態(tài),當(dāng)發(fā)

現(xiàn)線上有弱位后,此時(shí)所有節(jié)點(diǎn)已完成超載標(biāo)志的發(fā)送,并開始發(fā)8個(gè)弱位串;

過載分界符:由8個(gè)隱性位組成,與錯(cuò)誤分界符格式相同;

英飛凌(infineon)單片機(jī)XC800之CAN總線

CAN內(nèi)部硬件結(jié)構(gòu),如下圖所示

一,CAN處理機(jī)制

發(fā)送:根據(jù)報(bào)文緩存中的報(bào)文對象,由位流處理器產(chǎn)生的通過can總線發(fā)送的數(shù)據(jù)幀和過程幀,即從報(bào)

文緩存中取出的報(bào)文對象,位流處理器給它加上起始域,結(jié)束域和CRC校驗(yàn)數(shù)據(jù),組成一個(gè)完整的數(shù)據(jù)幀

和遠(yuǎn)程幀,此時(shí)位流控制器還在對總線進(jìn)行監(jiān)測,當(dāng)發(fā)現(xiàn)總線空閑時(shí),就啟動(dòng)數(shù)據(jù)的傳送,傳送過程中監(jiān)測

總線的信息,當(dāng)發(fā)現(xiàn)與傳送的信息不相符時(shí),就會(huì)產(chǎn)生一個(gè)“最近錯(cuò)誤”中斷請求。



關(guān)鍵詞: CAN總線使用總

評論


技術(shù)專區(qū)

關(guān)閉