CAN分幀發送程序說明


試驗平台 僅僅 需要一台主機 一台 周立功 CAN 助手, 一個232 助手就OK

ICAN 協議

資源節點地址 電腦 我認為是0x01

51單片機主機的地址 是 0x1f

建立連接的 功能碼 是0x04

 

發送分幀 和 一個 幀 的 資源 source ID 0X80

 

所以建立連接發送的時候 上位機的地址是 0023e4fe

所以發送分幀傳送的時候 上位機的地址就是 0x0023e180 0x80 是資源節點編號

 

 

這個程序 在 51單片機板 接收到CAN    消息以后 單片機板上的數碼管從0重新開始計數。

 

1 我用台式機發送數據 然后將這些數據放在串口調試住手中顯示

 

我用筆記本上用串口調試助手觀測

 

實現上部分功能 我用的是下面程序

上面程序是將一幀數據 13個字節 全部拷貝過來

其中0X88 代表的是幀信息

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

FF

RTR

X

X

DLC.3

DLC.2

DLC.1

DLC.0

1

0

0

0

1

0

0

0

表示 擴展幀 ,數據幀 數據長度 8

 

 

在調試本程序的時候 發現一個問題

如果我 僅定義了 一個指向unsigned char * 的指針變量 adrtemp

則我這樣寫程序, 最后拷貝的數據是不對的。

程序如下:

用周立功 發送 同樣的數據 我用筆記本的串口調試助手 接收的數據如下,是錯誤的

 

 

 

 

 

正確的做法 :

 

 

更改程序如下 僅僅顯示接收數據的部分

這樣僅僅顯示接收的00 01 02 03 04 05 06 7個數

 

分段幀的調試完成

試驗目的: 當接收完分段幀的最后一幀數據,則單片機將分段幀傳送的所有數據上傳到串口調試助手,並且發送出響應幀。

台式發送的分幀數據過程

步驟一:建立連接

步驟二:發送第一幀數據 從機接收完成數據以后,數碼管會從0重新開始計數

步驟三:發送第二幀數據 從機接收完成數據以后,數碼管會從0重新開始計數

步驟四:發送第三幀數據 在發送完第三幀數據以后,單片機發出應答幀

應答幀的ID號 0X03E03180 數據場為 00

同時 數碼管會從0 重新開始計數

 

 

 

 

 

 

 

串口調試助手檢測的數據

 

百度網盤

 

 

 


免責聲明!

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



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