0、CAN總線介紹
《【科普】CAN總線介紹及FPGA實(shí)現(xiàn)方案簡(jiǎn)介》

1、CAN權(quán)威文檔
CAN總線有兩個(gè)ISO國(guó)際標(biāo)準(zhǔn):ISO11898 和 ISO11519。其中:
ISO11898 定義了通信速率為 125 kbps~1 Mbps 的高速 CAN 通信標(biāo)準(zhǔn),屬于閉環(huán)總線,傳輸速率可達(dá)1Mbps,總線長(zhǎng)度 ≤ 40米。
ISO11519 定義了通信速率為 10~125 kbps 的低速 CAN 通信標(biāo)準(zhǔn),屬于開(kāi)環(huán)總線,傳輸速率為40kbps時(shí),總線長(zhǎng)度可達(dá)1000米。
3、【小梅哥FPGA】使用FPGA實(shí)現(xiàn)CAN通信的例子(NIOS+CAN IP)
?
https://bbs.elecfans.com/jishu_1385802_1_1.html
?
這是小梅哥FPGA開(kāi)發(fā)板上的實(shí)例,之所以放到第一個(gè)是因?yàn)檫@是目前FPGA實(shí)現(xiàn)CAN通信的比較完美的解決方案,單純使用硬件描述語(yǔ)言的IP,會(huì)有一些不可預(yù)知的BUG,但是使用軟核處理器是比較完美的。

上圖就是整個(gè)項(xiàng)目的系統(tǒng)方案,也很好理解,就不過(guò)多贅述了。
SJA100就是CAN控制器;
VP230就是CAN收發(fā)器。
PS:代碼在上訴鏈接中。
4、liteCAN
?
https://github.com/WangXuan95/liteCAN
?
基于 FPGA 的輕量級(jí)CAN總線控制器

此項(xiàng)目實(shí)現(xiàn)的是CAN控制器,CAN收發(fā)器還是需要外掛。
簡(jiǎn)介
CAN總線作為工業(yè)和汽車領(lǐng)域最常用的通信總線,具有拓?fù)浣Y(jié)構(gòu)簡(jiǎn)潔、可靠性高、傳輸距離長(zhǎng)等優(yōu)點(diǎn)。CAN總線的非破壞性仲裁機(jī)制依賴于幀ID,CAN2.0A和CAN2.0B分別規(guī)定了11bit-ID(短ID) 的標(biāo)準(zhǔn)幀和29bit-ID(長(zhǎng)ID) 的擴(kuò)展幀,另外,還有遠(yuǎn)程幀這種數(shù)據(jù)請(qǐng)求機(jī)制。關(guān)于CAN總線的更多知識(shí)可以參考這個(gè)科普文章。
CAN總線的復(fù)雜機(jī)制決定了控制器設(shè)計(jì)的復(fù)雜性。本庫(kù)實(shí)現(xiàn)了一個(gè)輕量化但完備的CAN控制器,特點(diǎn)如下:
本地ID可固定配置為任意短ID。
發(fā)送 : 僅支持以本地ID發(fā)送數(shù)據(jù)長(zhǎng)度為4Byte的幀。
接收 : 支持接收短ID或長(zhǎng)ID的幀,接收幀的數(shù)據(jù)長(zhǎng)度沒(méi)有限制 (即支持 0~8Byte ) 。
接收幀過(guò)濾 : 可針對(duì)短ID和長(zhǎng)ID獨(dú)立設(shè)置過(guò)濾器,只接收和過(guò)濾器匹配的數(shù)據(jù)幀。
自動(dòng)響應(yīng)遠(yuǎn)程幀 : 當(dāng)收到的遠(yuǎn)程幀與本地ID匹配時(shí),自動(dòng)將發(fā)送緩存中的下一個(gè)數(shù)據(jù)發(fā)送出去。若緩存為空,則重復(fù)發(fā)送上次發(fā)過(guò)的數(shù)據(jù)。
平臺(tái)無(wú)關(guān) :純 RTL 編寫(xiě) (SystemVerilog),可以在 Altera 和 Xilinx 等各種 FPGA 上運(yùn)行。
設(shè)計(jì)文件說(shuō)明
設(shè)計(jì)相關(guān)的4個(gè)文件在 RTL 文件夾中,各文件功能如下表。你只需將以上4個(gè)文件包含進(jìn)工程,就可以調(diào)用can_top.sv進(jìn)行更高層次的CAN通信業(yè)務(wù)的二次開(kāi)發(fā)。

此項(xiàng)目非常完整,項(xiàng)目由中文說(shuō)明,完備的TB及測(cè)試方案。
5、CAN-fpga
?
https://github.com/AlxyF/CAN-fpga
?
項(xiàng)目沒(méi)有任何介紹,看文件結(jié)構(gòu),是基于Quartus II建立的,結(jié)構(gòu)和上一項(xiàng)目完全沒(méi)什么區(qū)別。整個(gè)項(xiàng)目應(yīng)該是完備的,有興趣可以看看。
6、sja1000
?
https://github.com/zhaotliang/sja1000
?
這個(gè)就是Verilog編寫(xiě)的外掛SJA100的驅(qū)動(dòng)程序,這里就不過(guò)多介紹了。
7、Click_MCP25625
?
https://github.com/MikroElektronika/Click_MCP25625
?
這是MCP25625(控制器+收發(fā)器集合)的SPI驅(qū)動(dòng)(ARM單片機(jī)的)。

?
https://github.com/UberLambda/CANnuccia
?
這個(gè)項(xiàng)目和這個(gè)功能一樣,就不展開(kāi)描述了。
USB-CAN(調(diào)試?yán)鳎?/p>
因?yàn)楸酒跊](méi)幾個(gè)開(kāi)源項(xiàng)目,所以這里在推薦幾個(gè)開(kāi)源的USB-CAN方案,大部分都是可以直接打板使用的。
一、stm32f0 + CAN收發(fā)器TJA1051/3
?
https://canable.io/
?
?
https://codechina.csdn.net/mirrors/HubertD/candleLight?utm_source=csdn_github_accelerator
?
?
https://github.com/HubertD/candleLight/blob/master/export/v1.1/pdf/candleLight-v1.1.pdf
?
ta有完全開(kāi)源的軟硬件及上位機(jī)支持,支持windos和linux Stock can并且都免驅(qū)哦。且支持Python。


上述的方案某寶上也有成品。

二、KS22方案
?
http://bbs.eeworld.com.cn/thread-491860-1-1.html
?


相關(guān)文檔及上位機(jī):
三、open-usb-can
?
https://github.com/fabiobaltieri/open-usb-can
?

文檔很完備。
該項(xiàng)目是基于 ATMega32U2 和 MCP2515 SPI CANBus 控制器的 USB 轉(zhuǎn) CANBus 接口。
最后,還是感謝各個(gè)大佬開(kāi)源的項(xiàng)目,讓我們受益匪淺。后面有什么感興趣方面的項(xiàng)目,大家可以在后臺(tái)留言或者加微信留言,今天就到這,我是爆肝的碎碎思,期待下期文章與你相見(jiàn)。

審核編輯:劉清
-
收發(fā)器
+關(guān)注
關(guān)注
10文章
3823瀏覽量
111228 -
CAN總線
+關(guān)注
關(guān)注
145文章
2043瀏覽量
135241 -
CAN通信
+關(guān)注
關(guān)注
5文章
105瀏覽量
18901 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
1003瀏覽量
57104 -
STM32F0
+關(guān)注
關(guān)注
0文章
61瀏覽量
17874
原文標(biāo)題:優(yōu)秀的 Verilog/FPGA開(kāi)源項(xiàng)目- CAN通信
文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Verilog vhdl fpga
擁抱開(kāi)源!一起來(lái)做FPGA開(kāi)發(fā)板啦!
【開(kāi)源FPGA硬件】硬件黑客集結(jié):開(kāi)源FPGA開(kāi)發(fā)板測(cè)評(píng)活動(dòng)全網(wǎng)火熱招募中......
FPGA開(kāi)發(fā)板Verilog HDL例程說(shuō)明
【小梅哥FPGA】使用FPGA實(shí)現(xiàn)CAN通信的例子和詳細(xì)使用說(shuō)明(NIOS+CAN IP)
AD936x+ZYNQ搭建OpenWIFI 精選資料分享
FPGA實(shí)現(xiàn)CAN總線通信節(jié)點(diǎn)設(shè)計(jì)
優(yōu)秀的 Verilog/FPGA開(kāi)源項(xiàng)目介紹(一)
優(yōu)秀的 Verilog/FPGA開(kāi)源項(xiàng)目之 USB通信
Verilog/FPGA開(kāi)源項(xiàng)目介紹
AD936x+ZYNQ搭建OpenWIFI
TTL FPGA開(kāi)源項(xiàng)目
優(yōu)秀的IC/FPGA開(kāi)源項(xiàng)目:偽紅外圖像處理
優(yōu)秀的Verilog/FPGA開(kāi)源項(xiàng)目開(kāi)發(fā)-CAN通信篇
評(píng)論