CAN通訊基本設置


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

 

主機程序設置的相關部分

  1. 在置位復位請求的時候 順便使能了 單濾波方式

     

     

    (2)在復位模式下,是SJA1000工作在pelican模式

     

    (3)由於采用了pelican模式,所以接收器 和 發送器都是擴展幀格式

    (4) 設置主機單濾波器的驗收代碼寄存器ACR(4個) 和接收屏蔽寄存器AMR(4個)

    使主機的接收郵箱是0x19900424

    (5) 由於是擴展幀 所以在SJA1000的接收中斷里做如下處理。

     

(6) 按鍵觸發 主機發送的時候, 發送的ID號 是 0x19881205

 

從機設置的相關部分:

  1. 在置位復位請求的時候 順便設置了單濾波方式

  1. 在復位模式下 是SJA1000控制器工作了pelican模式下

    (3)由於是pelican模式,所以接收器和發送器都是擴展幀的格式

    (4)設置從機單濾波器的 驗收代碼寄存器和接收屏蔽代碼寄存器

    (5) 設置了從機的接收ID號為0x19881205

    相應的在SJA1000接收中斷的函數里

從機的發送郵箱ID 號碼是 0x19900424

 

程序 運行的現象:

 

當主機按下按鍵 的時候 會觸發 發送 從機會正常接收,數碼管正常顯示

 

當從機按下按鍵的時候 會觸發從機 發送, 主機會正常 接收, 主機的數碼管正常顯示

 

 

用戶kvaser 監控

 

 

 

 

 

我儲存的log如下:

 

 

 

程序  百度 網盤地址  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM