CAN是ISO國際標準化的串行通信協議。由于性能高,可靠性高現被廣泛應用在汽車,醫療,船舶,工業自動化等其他方面。因為只需要兩根線就可在多個設備間進行數據通信所以被廣泛使用。本文基于EsDA開發平臺,為您簡單介紹如何用5分鐘快速建立CAN通信。
基本工作原理:通過USBCANFD-200U接口卡實現主板與PC實現CAN(FD)通信。
本應用選用 EPC6450-AWI開發板,USBCANFD-200U接口卡與PC連接,使其能與接入CAN(FD)網絡的開發板進行數據收發,USBCANFD不同系列產品支持1~8路CAN(FD)通信,可根據不同需求進行選擇,本文采用的200U系列僅支持2路通信。該實驗用到了timer,fscript,canfd_out,canfd_in,fscript和log節點。 前期準備若是剛開始接觸EsDA,可先閱讀EsDA其他系列文章,從零開始搭建環境和掌握基本開發流程,已有基礎的可以跳過:-
EsDAMPC-ZC1入門(一)——軟件安裝
-
EsDAMPC-ZC1入門(二)——LED控制
-
【EsDA應用】5分鐘實現一個串口通信業務
1. 硬件準備
1.1 準備一個USBCANFD-200U接口卡,并在PC上下載并安裝ZCANPRO的上位機軟件。
1.2 準備EPC6450-AWI開發板,并按照下圖所示連接好硬件。將EPC6450-AWI開發板上的CAN_0與USBCANFD-200U隨機一路進行連接,并將USBCANFD-200U接口卡的USB2.0連接到PC上,建立好硬件連接。
2. 節點介紹
實現CAN(FD)總線通信,需要使用到canfd相關的AWFlow節點,包括canfd_out,canfd_in和canfd三個節點。
2.1 canfdCANFD通信協議配置節點,屬于隱式節點,不會顯示在畫布中,需要配套相應功能節點一起使用。2.1.1 屬性
- 端口(port):設備端口路徑,用于系統打開設備;
- CAN控制器類型(can_type):設置CAN控制器類型。值為0表示CAN;值為1表示CANFD;
- 非標準ISO模式(non_iso_mode):開啟/關閉非標準ISO模式。值為0表示關閉;值為1表示開啟;
- 仲裁域波特率(nominal_bps):設置仲裁域波特率,單位是bps,值域是0~1000000;
- 仲裁域采樣點精確的分子值(nominal_spf):設置仲裁域采樣點精確的分子值,采樣點用分數來表示,如需要將采樣點設置為87.5%,則設置采樣點的分母為1000,分子為875即可。因硬件原因可能導致不能精確地配置采樣點,增加了兩個分子值來表示范圍。值域是0~10240;
- 仲裁域采樣點最小的分子值(nominal_spf_min):設置仲裁域采樣點最小分子值,值域是0~10240;
- 仲裁域采樣點最大的分子值(nominal_spf_max):設置仲裁域采樣點最大分子值,值域是0~10240;
- 仲裁域采樣點分母值(nominal_spd):設置仲裁域采樣點分母值,值域是0~10240數據域波特率(data_bps):設置數據域波特率,值域是0~5000000;
- 數據域采樣點精確的分子值(data_spf):設置數據域采樣點精確的分子值,采樣點用分數來表示,如需要將采樣點設置為87.5%,則設置采樣點的分母為1000,分子為875即可。因硬件原因可能導致不能精確地配置采樣點,增加了兩個分子值來表示范圍。值域是0~10240;
- 數據域采樣點最小的分子值(data_spf_min):設置數據域采樣點最小的分子值。值域是0~10240;
- 數據域采樣點最大的分子值(data_spf_max):設置數據域采樣點最大的分子值。值域是0~10240;
- 數據域采樣點分母值(data_spd):數據域采樣點分母值。值域是0~10240;
- 濾波器使能(filter_enable):開啟/關閉濾波器。值為0表示關閉;值為1表示開啟;
- 濾波表(filter_table):濾波表,濾波表采用json數組的形式設置,最大支持32條,符合濾波表條件的報文將被接收,不符合的報文會被過濾,但錯誤報文不會被過濾。濾波表格式如下:id表示報文ID;msk表示ID掩碼,ID掩碼部分相同的報文將被接收;recv_std表示是否接收標準幀;recv_ext表示是否接收擴展幀;recv_data表示是否接收數據幀;recv_rmt:是否接收遠程幀。
- 名稱(name):節點名稱,用于索引查找本節點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 關聯配置(config):綁定一個canfd的配置節點。
- payload:CAN報文,1-8字節為時間戳,9-12字節為ID,13-14字節為報文標志位【位0:發送幀標志(單次發送)。位1:CANFD幀標志,位2:遠程幀標志,位3:擴展幀標志,位4:錯誤幀標志,位5:轉換可變速率,位6:錯誤狀態指示(0:被動錯誤,1:主動錯誤)】,15-16字節為通道號(低5位)和數據長度(高11位),17字節到末尾為報文數據;
- payloadLength:負載長度。
- 名稱(name):節點名稱,用于索引查找本節點;
- 顯示名稱(displayName):用于畫布上顯示的名稱;
- 關聯配置(config):綁定一個canfd的配置節點。
- payload:CAN報文,1-8字節為時間戳,9-12字節為ID,13-14字節為報文標志位【位0:發送幀標志(單次發送),位1:CANFD幀標志,位2:遠程幀標志,位3:擴展幀標志,位4:錯誤幀標志,位5:轉換可變速率,位6:錯誤狀態指示(0:被動錯誤,1:主動錯誤)】,15-16字節為通道號(低5位)和數據長度(高11位),17字節到末尾為報文數據;
- payloadLength:負載長度。
1. 添加節點并連線
本實驗主要執行兩個步驟:
- EPC6450-AWI開發板上的CAN_0通過CAN通信協議,canfd_out節點定時向USBCANFD-200U接口卡發送0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,八個字節的數據,發送數據可在PC上的工具ZCANPRO上查看。
- PC上的工具ZCANPRO通過CAN總線通信協議定時發送0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77八個字節的數據,EPC6450-AWI開發板上通過canfd_in這個節點去接收數據,并通過log最終打印可查看。
buf=wbuffer_create()
wbuffer_write_int8(buf,202)
wbuffer_write_int8(buf,150)
wbuffer_write_int8(buf,9)
wbuffer_write_int8(buf,124)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,17)
wbuffer_write_int8(buf,1)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,1)
wbuffer_write_int8(buf,0)
wbuffer_write_int8(buf,1)
wbuffer_write_int8(buf,2)
wbuffer_write_int8(buf,3)
wbuffer_write_int8(buf,4)
wbuffer_write_int8(buf,5)
wbuffer_write_int8(buf,6)
wbuffer_write_int8(buf,7)
msg.payload=wbuffer_get_data(buf)msg.payloadLength=str(24)
雙擊canfd_in的消費者節點fscript,根據2.2節點介紹中對canfd_in的輸出參數描述,fscript的內容如下:
data_str="data:"
len=msg.payloadLength
rbuf=rbuffer_create(msg.payload,msg.payloadLength)
for(vari=0;i
data=rbuffer_read_uint8(rbuf);
//print("data:"+data)
data_str=data_str+data
if(i(len?-?1))?{
data_str=data_str+","
}
}
output.payload=data_str
3. 下載驗證因為EPC6450-AWI開發板是通過網口去下載流圖,所以打開AWFlow_Designer后需要配置目標板IP和端口號。點擊流圖下載,顯示下載流圖成功即可。打開上位機ZCANPRO并開啟對應的通道號,將波特率等參數選擇與流圖上的canfd配置節點參數同步一致。上位機CAN視圖可以查看從上位機發送出去的數據和接收到的數據如下。根據流圖中log節點的打印信息可知:數據內容和長度與上位機發送的數據是一致的。綜上測試結果可知:實驗效果已達成。技術交流群長按識別如下二維碼可加入“EsDA嵌入式系統設計自動化交流群”,與志同道合的朋友交流,并有專業技術人員為您答疑解惑,如有問題可以咨詢小致微信:zlgmcu-888。 ?
-
致遠電子
+關注
關注
13文章
406瀏覽量
31319
原文標題:【EsDA應用】如何用5分鐘快速建立CAN通信
文章出處:【微信號:ZLG_zhiyuan,微信公眾號:ZLG致遠電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論