CAN總線使用總結
控制域:由6個位組成,包括2個保留位(IDE,ro)用于CAN協議擴展,4位數據長度碼,允許數據的
長度值為0~8。
數據域:發送緩沖區按照長度碼指示的數據長度進行發送,接收的數據同樣如此,第一個字節的最高有
效位第一個被發送/接收。
循環冗余校驗域(CRC):由CRC序列位(15位)和一個CRC邊界符(1個弱位)組成。CRC的范圍
包括起始域、仲裁域、控制域、數據域、CRC序列。之所以選用這種幀校驗方式,因為:這種CRC碼對于
少于127位的幀最佳。
應答域:應答域由發送方發送的兩位弱位組成(應答空隙和應答分界位),當接收器正確地接收到有
效的報文時,接收器就會在應答間隙期間(發送ACK信號)向發送器發送一顯性位以示應答。因此發送節
點一直監測總線信號以確認網絡中至少有一個節點正確接收到發信息。應答分界位是應答域中的第二個弱
位,有此可見,應答空隙兩邊有兩個弱位:CRC分界位和應答分界位。
幀結束域:每一個數據幀或遠程幀一串7位的弱位幀結束域結束。
2.遠程幀:請求數據
遠程幀由6個域組成:起始域、仲裁域、控制域、CRC域、應答域、幀結束域。
遠程幀與數據幀不同之處在于:RTR位為高,無數據域。
3.錯誤指示幀:用于指示傳送過程中的錯誤信息
錯誤指示幀由兩個不同的域組成:第一個域反映來自控制器的錯誤標志,第二個域為錯誤分界符。
錯誤標志:有兩種,一個由6個強位組成的主動錯誤標志;另一個由6個弱位組成的被動錯誤標志,
它是被其他CAN控制器強位改寫。 處于主動錯誤狀態的CAN節點檢測到錯誤發出主動錯誤標志,該錯誤標
志不滿足位填充規則,或者是破壞應答域或結束域固定格式,所有其他節點都檢測到錯誤狀態,并發出該錯
誤標志。因此,這些從總線上監測到的強位串是不同節點發出錯誤標志的結果,這一標志最短為6個,最長
為12個。被動錯誤標志(不太理解。。。后續)
錯誤分界:它由8個弱位組成,與過載分界有相同的格式,當錯誤標志發生后,每一個CAN節點監測
總線,直到檢測到一個強位出現,這表明所有CAN節點已經完成錯誤標志的發送,并開始發送8個弱位的分
界符,之后網絡上的主動錯誤節點便可同時開始其他的發送。如果數據幀或遠程幀在發送過程中發現錯誤
后,當前的信息作廢,并啟動重新發送。如果CAN節點發現錯誤指示幀錯誤,則重發,當連續多次出現此錯
誤時,則相應的節點變為被動錯誤節點。為正確結束錯誤標志,被動態節點需要至少3個位周期。
4.過載幀:用于后續幀的延時
過載幀由兩個域組成:過載標志和過載分界。
以下情況可以導致過載幀發送:
(1).接收未準備好即接收方需要過多的時間處理當前的數據;
(2).在幀間空隙的第一位或第二位發現顯性位信號;
過載幀發送條件:
(1).在幀間空隙域的第一個位周期;
(2).在幀間空隙域中檢測到強位信號一個位周期后,方可啟動過載幀發送。
過載標志:由6個顯性位組成,與錯誤標志格式相同,當超載標志發生后,每個節點監測總線狀態,當發
現線上有弱位后,此時所有節點已完成超載標志的發送,并開始發8個弱位串;
過載分界符:由8個隱性位組成,與錯誤分界符格式相同;
英飛凌(infineon)單片機XC800之CAN總線
CAN內部硬件結構,如下圖所示
一,CAN處理機制
發送:根據報文緩存中的報文對象,由位流處理器產生的通過can總線發送的數據幀和過程幀,即從報
文緩存中取出的報文對象,位流處理器給它加上起始域,結束域和CRC校驗數據,組成一個完整的數據幀
和遠程幀,此時位流控制器還在對總線進行監測,當發現總線空閑時,就啟動數據的傳送,傳送過程中監測
總線的信息,當發現與傳送的信息不相符時,就會產生一個“最近錯誤”中斷請求。
評論