Controller Area Network(CAN BUS) ON STM32
前言 控制器區域網路 (Controller Area Network,簡稱CAN或者CAN bus) 是一種功能豐富的車用匯流排標準。被設計用於在不需要主機(Host)的情況下,允許網路上的單晶片和儀器相互通信。 它基於訊息傳遞協定,設計之初在車輛上採用復用通信線纜,以降低銅線使用量,後來也被其他行業所使用。在碩士班論文底下有使用dsPIC30F4011(Microchip)晶片來實作CAN bus系統,如今因客戶需求開始研究起STM32 Can Bus的操作這邊會介紹接線與Can Bus範例程式等等操作 Can Bus接線 CAN 物理層的形式主要有兩種,左圖中的 CAN 通訊網路是一種遵循 ISO11898 標準的高速、短距離「閉環網路」,它的匯流排最大長度為 40m,通訊速度最高為 1Mbps,匯流排的兩端各要求有一個「120 歐」的電阻。 右圖中的是遵循 ISO11519-2 標準的低速、遠距離「開環網路」,它的最大傳輸距離為 1km,最高通訊速率為 125kbps,兩根匯流排是獨立的、不形成閉環,要求每根匯流排上各串聯有一個「2.2千歐」的電阻。 PS:這邊硬體接線請注意必加電阻與CAN transceiver ,千萬不要傻傻的MCU的Can腳位直接接出來!!!! MESSAGE TRANSFER(CAN通訊的資料格式) CAN2.0有兩種版本,CAN2.0A(Standard),CAN2.0B(Extended)。 Start of Frame(SOF):送出1位元dominant(0),用來同步。 Arbitration Field:表示節點的優先權,用來判別優先權。若多個節點同時傳送,在仲裁欄位逐一比對優先權, 位元為dominant(0)可優先傳送。長度有兩種11bits(Standard identifier)和29bits(Extended Identifier)。 RTR :為優先判斷與資料接收與否的識別 RTR=dominant(0),表資料要傳出,RTR=recessive(1),表要接收資料。 IDE: 標準格式(Standard identifier)為dominant(0);延伸格式(Extended Identifier)為 recessive(1)。 R0:保留 CAN Bus上的傳輸圖解 可以看到下圖分別有3個傳輸裝置分別是A、B、C會把資料同時放到Bus線路上這邊只要留意每個裝置傳輸時候給予微小delay時間即可避免資料傳輸重疊衝突 STM32cubeMX設置與範例程式 怎麼設定波特率呢? […]
Controller Area Network(CAN BUS) ON STM32 Read More »