基于FPGA的CAN接口开发
基于Xilinx的A7系列FPGA的CAN總線協(xié)議開發(fā)
一、CAN總線協(xié)議介紹
CAN是 Controller Area Network 的縮寫(以下稱為 CAN ),是 ISO 國際標(biāo)準(zhǔn)化的串行通信協(xié)議。可以用來滿足“多總線通信時,線束的數(shù)量過多”、“通過多個 LAN ,進(jìn)行大量數(shù)據(jù)的高速通信”的需要。它的出現(xiàn)為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。
CAN控制器根據(jù)兩根線上的電位差來判斷總線電平。總線電平分為顯性電平和隱性電平,二者必居其一。發(fā)送方通過使總線電平發(fā)生變化,將消息發(fā)送給接收方。
CAN協(xié)議具有以下特點(diǎn):
CAN總線采用差分信號傳輸,通常情況下只需要兩根信號線就可以進(jìn)行正常的通信。在差分信號中,邏輯0和邏輯1是用兩根差分信號線的電壓差來表示。當(dāng)處于邏輯1,CAN_H和CAN_L的電壓差小于0.5V,稱為隱性電平(Recessive);當(dāng)處于邏輯0,CAN_H和CAN_L的電壓差大于0.9V,稱為顯性電平(Dominant)。
CAN有四種幀類型:
◆ 數(shù)據(jù)幀:發(fā)送單元向接收單元傳送數(shù)據(jù)的幀
◆ 遠(yuǎn)程幀:總線單元發(fā)出遠(yuǎn)程幀,請求發(fā)送具有同一識別符的數(shù)據(jù)幀
◆ 錯誤幀:由檢測到錯誤的任何節(jié)點(diǎn)發(fā)送的幀
◆ 過載幀:在數(shù)據(jù)或遠(yuǎn)程幀之間注入延遲的幀
數(shù)據(jù)幀是唯一實(shí)際傳輸數(shù)據(jù)的幀,結(jié)構(gòu)上由7個段組成,其中根據(jù)仲裁段ID碼長度的不同,分為標(biāo)準(zhǔn)幀(CAN2.0A)和擴(kuò)展幀(CAN2.0B):
? 標(biāo)準(zhǔn)幀格式:具有11個標(biāo)識符位
? 擴(kuò)展幀格式:具有29個標(biāo)識符位
標(biāo)準(zhǔn)數(shù)據(jù)幀的構(gòu)成如下圖所示:
數(shù)據(jù)幀一般由7個段構(gòu)成,即:
(1)幀起始:表示數(shù)據(jù)幀開始的段。
(2)仲裁段:表示該幀優(yōu)先級的段。
(3)控制段:表示數(shù)據(jù)的字節(jié)數(shù)及保留位的段。
(4)數(shù)據(jù)段:數(shù)據(jù)的內(nèi)容,一幀可發(fā)送0~8個字節(jié)的數(shù)據(jù)。
(5)CRC段:檢查幀的傳輸錯誤的段。
(6)ACK段:表示確認(rèn)正常接收的段。
(7)幀結(jié)束:表示數(shù)據(jù)幀結(jié)束的段。
(詳細(xì)的CAN介紹可以參看 CAN介紹.pdf)
二、xilinx Artix 7系列FPGA介紹
Artix7系列是7系列中的普通青年,相對Spartan7系列則增加了串行收發(fā)器和DSP功能,其邏輯容量也更大,適合邏輯一些稍微復(fù)雜的中低端應(yīng)用。
三、FPGA的相關(guān)設(shè)計(jì)介紹
設(shè)計(jì)思路一:在FPGA內(nèi)部編寫CAN通信控制器
采用這個設(shè)計(jì)方案,本質(zhì)上是在FPGA內(nèi)部設(shè)計(jì)了一款CAN通信控制芯片。技術(shù)門檻較高。下面這個設(shè)計(jì)實(shí)例仿照的是SJA1000 CAN通信控制器的工作流程,用Verilog語言完成了CAN控制接口的開發(fā)。
CAN 總線的通信協(xié)議由 CAN 通信控制器完成。CAN 通信控制器由實(shí)現(xiàn) CAN 總線協(xié)議部分和微控制器部分的電路組成。下面將通過一個實(shí)例講解如何用 FPGA 實(shí)現(xiàn) CAN 通信控制器的功能。這個實(shí)例從功能和結(jié)構(gòu)上完全參照 SJA 1000 CAN 通信控制器。
網(wǎng)址一:基于FPGA的CAN總線控制器的設(shè)計(jì)(上) - 知乎 (zhihu.com)
網(wǎng)址二:基于FPGA的CAN總線控制器的設(shè)計(jì)(中) - 知乎 (zhihu.com)
網(wǎng)址三:基于FPGA的CAN總線控制器的設(shè)計(jì)(下) - 知乎 (zhihu.com)
上述資料是按照SJA1000 CAN通信控制器的內(nèi)部結(jié)構(gòu)用FPGA進(jìn)行了重新設(shè)計(jì)。
設(shè)計(jì)思路二:用FPGA通過串口或者SPI去配置外部的CAN控制器芯片實(shí)現(xiàn)通信。
這個設(shè)計(jì)方案一般用在單片機(jī)作主控的項(xiàng)目中,如果用FPGA作主控,有這么幾個缺點(diǎn),成本高、硬件設(shè)計(jì)繁瑣、受限于控制芯片的性能和發(fā)揮不出FPGA的性能。
CAN通信控制芯片:
- MCP2515(SPI通信)
- SJA1000
CAN接口驅(qū)動芯片:
- TJA1050芯片引腳圖
常用的外設(shè)電路設(shè)計(jì)
如上圖所示,CAN_TX和CAN_RX接CAN通信控制芯片,實(shí)現(xiàn)對驅(qū)動芯片轉(zhuǎn)換后的信息流的處理。
設(shè)計(jì)參考:
[參考一:xilinx 7系列FPGA分類簡介(轉(zhuǎn))_我看唔人生-CSDN博客](xilinx 7系列FPGA分類簡介(轉(zhuǎn))_我看唔人生-CSDN博客)
[參考二:基于FPGA的CAN總線控制器的設(shè)計(jì)(上) - 知乎 (zhihu.com)](基于FPGA的CAN總線控制器的設(shè)計(jì)(上) - 知乎 (zhihu.com))
[參考三:基于FPGA的CAN總線控制器的設(shè)計(jì)(中) - 知乎 (zhihu.com)](基于FPGA的CAN總線控制器的設(shè)計(jì)(中) - 知乎 (zhihu.com))
[參考四:基于FPGA的CAN總線控制器的設(shè)計(jì)(下) - 知乎 (zhihu.com)](基于FPGA的CAN總線控制器的設(shè)計(jì)(下) - 知乎 (zhihu.com))
[參考五:【正點(diǎn)原子】開拓者FPGA開發(fā)板資料 資料盤(A盤)_免費(fèi)高速下載|百度網(wǎng)盤-分享無限制 (baidu.com)](https://pan.baidu.com/s/11TVUTU89Hu-oTR4jUIn5cA#list/path=%2Fsharelink1102113311042-567528871234027%2F[正點(diǎn)原子]開拓者FPGA開發(fā)板資料 資料盤(A盤)%2F[正點(diǎn)原子]開拓者FPGA開發(fā)板 資料盤(A盤)&parentPath=%2Fsharelink1102113311042-567528871234027)
總結(jié)
以上是生活随笔為你收集整理的基于FPGA的CAN接口开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在计算机应用领域中深蓝,2015年计算机
- 下一篇: 大二学生的自我总结