柚子快報激活碼778899分享:單片機 ESP32的CAN通信
目錄
一、ESP32的CAN通信說明1.1、片內(nèi)外設(shè)1.2、CAN庫的查找1.3、MCP2515和SJA1000介紹1.4、CAN庫的安裝1.4.1、先下載庫,再導(dǎo)入到arduino IDE中1.4.2、通過“庫管理器”安裝。
二、硬件說明2.1、硬件準備2.2、硬件連接
三、代碼調(diào)試3.1、打開示例3.2、修改代碼3.3、編譯上傳
四、其它說明
SimpleFOC、ODrive和VESC 教程鏈接匯總:請點擊
一、ESP32的CAN通信說明
1.1、片內(nèi)外設(shè)
CAN在ESP32芯片中叫TWAI,如下圖:
1.2、CAN庫的查找
ESP32官方提供的arduino庫不支持CAN通信,也沒有對應(yīng)的例程,所以需要使用第三方庫。 ? Arduino官網(wǎng)查找對應(yīng)的庫,如下圖:
? arduino官方庫中不支持CAN通信,更沒有ESP32的CAN通信庫,如下圖:
? 往下翻,社區(qū)貢獻的庫,如下圖: 這名字一看就是擅長營銷的人起的,前面帶個“A”,排名可以靠前。 ? 繼續(xù)往下翻,又找到一些,如下圖:
這些庫我只是大概看了看,簡單使用了下,大家可以自行對比測試。 ?
1.3、MCP2515和SJA1000介紹
上面的庫里都提到了MCP2515,所以簡單介紹下。在Arduino中,考慮到跨平臺的兼容性,這個芯片被拿出來頻繁使用。在一些沒有CAN外設(shè)的單片機上,比如UNO上古老的MEGA328P就沒有CAN功能,還必須使用MCP2515。MCP2515簡單來說是一個把SPI接口轉(zhuǎn)換為CAN接口的轉(zhuǎn)換芯片,在單片機普遍沒有集成CAN外設(shè)的年代,他可以做為外掛實現(xiàn)CAN通信。但現(xiàn)在的單片機基本都已經(jīng)集成了CAN,比如STM32和ESP32,所以這個芯片的使用價值就大打折扣了,而且它需要占用大量的IO口,同時多了這個芯片的成本,所以我本人是不推薦大家使用這個芯片的。 SJA1000和MCP2515一樣,都是本世紀初期的芯片。這個芯片我覺得目前應(yīng)該是已經(jīng)被淘汰了,ESP32把它集成到芯片內(nèi)部做為片內(nèi)外設(shè),ESP官方手冊中并沒有說明,但是在arduino庫中,第三方說明了這個情況。當然大家不用研究這個芯片的使用方法,知道這個情況就行。
1.4、CAN庫的安裝
庫的安裝有兩種方法:先下載再安裝 或者 通過庫管理器安裝。
1.4.1、先下載庫,再導(dǎo)入到arduino IDE中
接上面1.2節(jié),下載0.3.1最新版本,壓縮包要放在沒有中文的路徑下,如下圖: 導(dǎo)入下載的壓縮包,
1.4.2、通過“庫管理器”安裝。
? 兩種庫的安裝效果是完全一樣的,安裝完畢后,可以看到示例,如下圖:
二、硬件說明
2.1、硬件準備
序號名稱數(shù)量1ESP32drive12CAN通信芯片13CAN盒14USB轉(zhuǎn)TTL1512V電源16杜邦線若干
ESP32drive 購買鏈接:https://item.taobao.com/item.htm?ft=t&id=662591519566,圖銳科技 ?
2.2、硬件連接
2.2.1、CAN通信芯片
? 2.2.2、通信原理圖
? 2.2.3、接線
ESP32drive 購買鏈接:https://item.taobao.com/item.htm?ft=t&id=662591519566,圖銳科技 ?
三、代碼調(diào)試
3.1、打開示例
3.2、修改代碼
默認的通信引腳是GPIO4和5,需要修改為21和22,示例為只讀文件,修改后需要另存為,不要保存到中文路徑下。需要說明下,代碼中設(shè)置的CAN波特率為500K,但實際只有250K。如果希望實際波特率為500K,需要設(shè)置為“1000E3”。波特率不正確,CAN盒無法收到數(shù)據(jù)且沒有任何提示,這個問題浪費我一周時間。
3.3、編譯上傳
四、其它說明
OBD就是 汽車故障診斷儀,這個示例很高大上。CAN總線據(jù)說就是起源于汽車電子,CAN通信本身很簡單,但在實際使用過程中有著非常復(fù)雜的協(xié)議機制,您仍然需要查找更多的資料去學(xué)習(xí)掌握。 ? ? ? (完) ?
柚子快報激活碼778899分享:單片機 ESP32的CAN通信
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。