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


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