在這個項目中,我們將了解MCP2515 CAN控制器模塊,如何將MCP2515 CAN總線控制器與Arduino接口,以及如何在兩個MCP2515 CAN的幫助下實現兩個Arduino板之間的通信控制器和CAN協議。
簡介
受控區域簡單CAN網絡是一種總線標準,允許微控制器及其外圍設備在不需要主機設備或計算機的情況下進行通信。
由Robert Bosch GmbH開發的CAN協議主要用于汽車,用于控制單元及其組件之間的通信。
例如,發動機控制單元是汽車中使用的主要控制裝置。該裝置連接到許多傳感器和執行器,如氣流,壓力,溫度,閥門控制,空氣控制電機等。這些模塊和控制單元之間的通訊是通過CAN總線進行的。
為了更多地了解CAN總線,CAN控制器和其他重要方面,MCP2515 CAN總線控制器模塊非常有用。
同時閱讀: SPI通訊基礎。
簡要說明MCP2515 CAN總線控制器模塊
MCP2515 CAN總線控制器是一個簡單的模塊,支持CAN協議版本2.0B,可用于1Mbps的通信。為了建立一個完整的通信系統,您需要兩個CAN總線模塊。
項目如下圖所示。
此特定模塊基于MCP2515 CAN控制器IC和TJA1050 CAN收發器IC 。 MCP2515 IC是一個獨立的CAN控制器,集成了SPI接口,用于與微控制器通信。
來自TJA1050 IC,它充當MCP2515 CAN控制器IC和物理CAN總線。
下圖顯示了典型MCP2515模塊上的組件和引腳。
MCP2515 CAN總線模塊示意圖
在查看模塊原理圖之前,您需要了解一個有關IC的一些事項,即MCP2515和TJA1050。
MCP2515 IC是主控制器,內部由三個主要子組件組成:CAN模塊,控制邏輯和SPI阻止。
CAN模塊負責在CAN總線上發送和接收消息。控制邏輯通過連接所有模塊來處理MCP2515的設置和操作。 SPI模塊負責SPI通信接口。
來到TJA1050 IC,由于它充當MCP2515 CAN控制器和物理CAN總線之間的接口,因此該IC負責從控制器獲取數據并將其中繼到總線上。
下圖顯示了MCP2515 CAN模塊的原理圖,并顯示了模塊上MCP2515 IC和TJA1050 IC的連接方式。
MCP2515與Arduino接口的電路圖
下圖顯示了電路圖MCP2515 CAN模塊與Arduino的接口以及兩個Arduino over CAN協議之間可能的通信。
如果MCP2515模塊的引腳不清楚,以下圖片可能有用。
所需組件
Arduino UNO x 2 [購買]
MCP2515 x 2 [在此處購買]
USB電纜x 2
連接線[在此處購買]
As前面提到過,CAN控制器IC有助于SPI通信協議與任何微控制器連接。因此,將SPI引腳即SC25,MOSI(SI),MISO(SO)和MCP2515模塊的CS連接到Arduino的相應SPI引腳(參見電路圖)。
進行兩次這樣的連接:一對作為發射器,另一對作為接收器。現在,對于此發送器和接收器之間的通信,連接每個MCP2515模塊的CANH和CANL引腳。
代碼
在進入代碼之前,您需要下載一個庫MCP2515模塊。有很多庫,但我使用了這個特定的庫。
下載并將提取的內容放在Arduino的libraries目錄中。
由于通信涉及發送器模塊和接收器模塊,因此代碼也分為發送器代碼和接收器代碼。
發送器代碼
接收器代碼
工作
此項目的工作非常簡單,因為所有工作都由庫(SPI和CAN)完成。由于CAN是基于消息的通信,因此您需要在0到8個字節之間的任何地方發送消息。
在此項目中,發送器正在發送消息為1 1 2 3 0 5 6 7.此消息通過CAN總線傳輸,接收器接收此消息并顯示在其串行監視器上。
此外,0 th 和4 th 位,即上述序列中的1和0由接收器分別提取,并接通和斷開連接到Arduino引腳2的LED。
應用
如前言所述,CAN廣泛應用于汽車領域。部分應用包括:
電子換檔系統
自動化中的主界面(如工業)
醫療設備
機器人技術
自動啟動/停止汽車發動機
-
總線控制器
+關注
關注
0文章
29瀏覽量
12584 -
Arduino
+關注
關注
187文章
6464瀏覽量
186677
發布評論請先 登錄
相關推薦
評論