A節點pelican協議下,擴展幀 單濾波方式
A節點的接收濾波器 ID號 設置為 0x19881205
設置過程 (1) pelican模式設置
設置時鍾分頻寄存器CDR.7 =1 使SJA1000工作在pelican模式
(2) 是單濾波模式
單濾波模式 設置 模式寄存器的第3位 MOD.3 為 1 表示是 單濾波方式
(3) 接收器的接收的是擴展幀 實際上選擇了pelican 模式 接收緩沖器就變為了13個字節。 就是接收的擴展幀的格式。
(4) 驗收代碼寄存器 和驗收屏蔽寄存器的設置
ACR0 |
ACR1 |
ACR2 |
ACR3 |
|||||||||||||||||||||||||||||||||||||
0 |
0 |
ACR0 |
ACR1 |
ACR2 |
ACR3 |
|||||||||||||||||||||||||||||||||||||
0 |
0 |
我制作的pelican協議, 擴展幀格式 單濾波方式
程序調試的時候,相比於以前的 pelican 協議 標准幀模式 單濾波方式
之前在標准幀的方式下, 是從第4個字節 開始讀數據
標准幀數據存放格式如下圖:
對應從第四幀讀數據如下圖
現在我用的是 pelican協議 擴展幀格式 單濾波方式
對應的程序修改:
試驗過程:
主機發送幀的ID號為 0X19881205
從機接收的幀的單濾波器 為 0X 19881205
則主機發送的數據 從機 均可以正常接收 。
(2) 若更改從機的ID號 為 0x19900424
更改從機的程序以后,刷寫程序, 發現主機按下按鍵發送數據,從機不接收
總結:
對最終的程序總結以及調試方式進行總結:
可以把這個程序上傳到淘寶或者咸魚上賣出去,我覺得是可以的。一方面也是給自己積累經驗。也是把經驗換成錢。
我最終把文件 存放的路徑C:\can_prictise\20180218
分為 主機 和從機 文件夾
首先主機 和 從機 均采用pelican協議 擴展幀格式 單濾波方式
主機發送一個字節的ID 是0X19881205
主機接收器單濾波 接收器的ID號 是0x19900424
從機發送一個字節的ID是0X19900424
從機接收器單濾波 接收器的ID號 是 0X19881205
主機程序設置的相關部分
-
在置位復位請求的時候 順便使能了 單濾波方式
(2)在復位模式下,是SJA1000工作在pelican模式
(3)由於采用了pelican模式,所以接收器 和 發送器都是擴展幀格式
(4) 設置主機單濾波器的驗收代碼寄存器ACR(4個) 和接收屏蔽寄存器AMR(4個)
使主機的接收郵箱是0x19900424
(5) 由於是擴展幀 所以在SJA1000的接收中斷里做如下處理。
(6) 按鍵觸發 主機發送的時候, 發送的ID號 是 0x19881205
從機設置的相關部分:
-
在置位復位請求的時候 順便設置了單濾波方式
-
在復位模式下 是SJA1000控制器工作了pelican模式下
(3)由於是pelican模式,所以接收器和發送器都是擴展幀的格式
(4)設置從機單濾波器的 驗收代碼寄存器和接收屏蔽代碼寄存器
(5) 設置了從機的接收ID號為0x19881205
相應的在SJA1000接收中斷的函數里
從機的發送郵箱ID 號碼是 0x19900424
程序 運行的現象:
當主機按下按鍵 的時候 會觸發 發送 從機會正常接收,數碼管正常顯示
當從機按下按鍵的時候 會觸發從機 發送, 主機會正常 接收, 主機的數碼管正常顯示
用戶kvaser 監控
我儲存的log如下:
程序 百度 網盤 的地址