STM32 CAN通訊的基本知識及硬件設計


原標題:STM32 CAN通訊的基本知識及硬件設計
一、STM32 CAN通訊的基本知識
1. CAN通訊概述
CAN(Controller Area Network,控制器局域網絡)是一種國際標準的串行通信協議,由德國BOSCH公司開發,并最終成為國際標準(ISO11519以及ISO11898)。它是國際上應用最廣泛的現場總線之一,具有高可靠性和多主控制等特點,廣泛應用于汽車電子、工業自動化等領域。
2. CAN協議幀類型
CAN協議定義了多種類型的幀,其中數據幀是最常用且復雜的幀類型。數據幀一般由7個段構成,包括幀起始、仲裁段、控制段、數據段、CRC段、應答段和幀結束。具體說明如下:
* **幀起始(SOF)**:1bit,顯性信號,表示數據幀(或遠程幀)的開始。 * **仲裁段**:包括標識符位(Identifier field-ID)和遠程發送請求位(Remote TransferRequest,RTR)。標準幀的ID位是11位,范圍是0x000~0x7FF;而擴展幀的ID是29位。ID決定報文的優先級高低,也決定拓撲結構的節點是否接收此ID的幀數據。遠程發送請求位用于區分該幀是數據幀還是遠程幀,顯性信號(0)代表數據幀,隱性信號(1)代表遠程幀。 * **控制段**:標準幀中由擴展標識符位(Identifier Extension bit-IDE,1bit)、保留位0(Reseved bit0-r0,1bit)、數據長度編碼位(Data Length Code-DLC,4bits)組成;擴展幀由兩個保留位(Reseved bit,2bit)、數據長度編碼位(Data Length Code-DLC,4bits)組成。 * **數據段**:發送數據的內容,最多8個字節(64bit),實際長度會寫到前面的數據長度編碼位DLC里。 * **循環校驗段(CRC Field)**:包括循環校驗序列和界定符。循環校驗序列用于校驗傳輸是否正確。 * **確認段(ACK Field)**:包括確認位和界定符。確認位在節點收到正確的CRC序列時,發送端的ACK位被置位。 * **幀結束(End of Frame-EOF)**:7位長度,隱性信號,表示幀的結束。
3. CAN通訊物理層
CAN總線物理層主要有兩種形式:
* 一種是遵循ISO11898標準的高速、短距離“閉環網絡”,總線最大長度為40m,通信速度最高為1Mbps,總線的兩端各要求有一個“120歐”的電阻。 * 另一種是遵循ISO11519-2標準的低速、遠距離“開環網絡”,最大傳輸距離為1km,最高通訊速率為125kbps,兩根總線是獨立的、不形成閉環,要求每根總線上各串聯有一個“2.2千歐”的電阻。
4. CAN通訊節點組成
CAN通訊節點由一個CAN控制器及CAN收發器組成。控制器與收發器之間通過CAN_Tx及CAN_Rx信號線相連,收發器與CAN總線之間使用CAN_High及CAN_Low信號線相連。這種差分信號傳輸方式具有抗干擾能力強、能有效抑制電磁干擾、時序定位精確等優點。
5. STM32 CAN控制器簡介
STM32系列微控制器內置了CAN控制器,支持CAN 2.0A和CAN 2.0B Active版本協議。其中,CAN 2.0A只能處理標準數據幀,擴展幀的內容會識別為錯誤;CAN 2.0B Active則可以處理標準數據幀和擴展數據幀。STM32的CAN控制器通過硬件自動處理幀格式、錯誤檢測、自動重傳等功能,降低了CPU處理CAN通信的開銷。
二、STM32 CAN通訊的硬件設計
1. 硬件電路設計
在進行STM32 CAN通訊的硬件設計時,需要考慮CAN控制器的引腳配置、時鐘開啟等前置工作。此外,還需要根據應用需求選擇合適的CAN收發器,并將其與STM32的CAN控制器正確連接。同時,在CAN總線的兩端需要接入120歐的終端電阻,以匹配總線阻抗,減少回波反射,提高數據通信的抗干擾能力以及可靠性。
2. 波特率配置
波特率是指每秒傳輸的位數,是CAN通訊中的一個重要參數。在STM32中,可以通過設置位時序參數(如同步段、傳播段、相位緩沖段等)來確定合適的波特率。這些參數的設置會影響到CAN通訊的可靠性和實時性,因此需要根據具體的應用需求進行配置。
3. 過濾器配置
STM32的CAN控制器提供了多個可配置的過濾器組,用于篩選接收到的報文。通過配置過濾器的模式、位寬、標識符等參數,可以確定哪些報文可以被接收,哪些報文需要被忽略。這有助于減少CPU處理CAN通信的開銷,并提高系統的實時性。
4. 發送和接收流程
在STM32中進行CAN通訊時,發送和接收流程是關鍵的部分。發送流程包括選擇一個空置的郵箱、設置報文的ID、數據長度以及要發送的數據、請求發送等步驟。接收流程則包括配置過濾器、等待接收中斷或輪詢接收FIFO的狀態、讀取接收到的報文等步驟。
綜上所述,STM32 CAN通訊的基本知識及硬件設計涉及多個方面,包括CAN協議幀類型、物理層特性、通訊節點組成、STM32 CAN控制器簡介以及硬件電路設計、波特率配置、過濾器配置和發送接收流程等。在實際應用中,需要根據具體的需求和場景進行選擇和配置。
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。