新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > CAN總線工作原理

        CAN總線工作原理

        作者: 時間:2016-12-12 來源:網絡 收藏
        CAN是控制器局域網絡(Controller Area Network, CAN)的簡稱。CAN總線有兩條信號線構成,分別是CANL和CANH。相比于RS485總線構成的網絡,CAN總線構成的網絡更有優勢。

        CAN的報文格式
        在總線中傳送的報文,每幀由7部分組成。CAN協議支持兩種報文格式,其唯一的不同是標識符(ID)長度不同,標準格式為11位,擴展格式為29位。
        在標準格式中,報文的起始位稱為幀起始(SOF),然后是由11位標識符和遠程發送請求位 (RTR)組成的仲裁場。RTR位標明是數據幀還是請求幀,在請求幀中沒有數據字節。
        控制場包括標識符擴展位(IDE),指出是標準格式還是擴展格式。它還包括一個保留位 (ro),為將來擴展使用。它的最后四個位用來指明數據場中數據的長度(DLC)。數據場范圍為0~8個字節,其后有一個檢測數據錯誤的循環冗余檢查(CRC)。
        應答場(ACK)包括應答位和應答分隔符。發送站發送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站發送主控電平(邏輯0)覆蓋它。用這種方法,發送站可以保證網絡中至少有一個站能正確接收到報文。
        報文的尾部由幀結束標出。在相鄰的兩條報文間有一很短的間隔位,如果這時沒有站進行總線存取,總線將處于空閑狀態。

        本文引用地址:http://www.104case.com/article/201612/328785.htm

        如上圖所示,幀格式包括擴展幀和標準幀兩種。幀類型包括數據幀和遠程幀。數據部分最大長度共8個字節。在編程時,如下的數據結構可以用來描述一個CAN消息:

        1. typedefstruct
        2. {
        3. uint32_tid;/**<29bitidentifier,itdependon"format"value
        4. -ifformat=STD_ID_FORMAT,idshouldbe11bitidentifier
        5. -ifformat=EXT_ID_FORMAT,idshouldbe29bitidentifier
        6. */
        7. uint8_tdataA[4];/**
        8. uint8_tdataB[4];/**
        9. uint8_tlen;/**
        10. -0000b-0111b:0-7bytes
        11. -1xxxb:8bytes
        12. */
        13. uint8_tformat;/**
        14. -STD_ID_FORMAT:StandardID-11bitformat
        15. -EXT_ID_FORMAT:ExtendedID-29bitformat
        16. */
        17. uint8_ttype;/**ission,shouldbe:
        18. -DATA_FRAME:thenumberofdatabytescalledoutbytheDLC
        19. fieldaresendfromtheCANxTDAandCANxTDBregisters
        20. -REMOTE_FRAME:RemoteFrameissent
        21. */
        22. }CAN_MSG_Type;

        另外,還有如下圖所示的參數可以進行設置。如CAN總線的波特率,工作模式,過濾器里的內容等。



        關鍵詞: CAN總線工作原

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 昆明市| 连云港市| 平陆县| 和龙市| 万宁市| 龙海市| 新龙县| 稷山县| 霍邱县| 略阳县| 西和县| 怀安县| 平泉县| 博客| 宽城| 扶余县| 神池县| 体育| 临洮县| 武鸣县| 垦利县| 孝义市| 多伦县| 开江县| 鲁山县| 沁水县| 岚皋县| 班戈县| 芦山县| 札达县| 邳州市| 越西县| 武城县| 榆林市| 漳浦县| 眉山市| 寻甸| 阿拉善盟| 全南县| 蒙山县| 略阳县|