CAN總線使用總結(jié)
控制域:由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ò)誤”中斷請求。
評論