CAN總線實驗報告(共9頁)_第1頁
CAN總線實驗報告(共9頁)_第2頁
CAN總線實驗報告(共9頁)_第3頁
CAN總線實驗報告(共9頁)_第4頁
CAN總線實驗報告(共9頁)_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、CAN總線數據通訊 實驗項目CAN總線數據通訊實驗目的基于SJA1000 CAN總線控制器和單片機系統完成CAN總線數據收發實驗、掌握CAN總線波特率設置、消息ID和接收濾波器配置,完成兩個以上節點的數據通訊。實驗儀器設備SJA1000 CAN接口模塊單片機最小系統板串行下載線(USB轉TTL電平串口線)USB轉DC5.5mm供電線杜邦線實驗原理 1、CAN通信板原理圖 復位電路 TJA1050T外圍電路振蕩電路2、單片機板原理圖單片機最小系統主要包括3部分:電源,晶振和復位電路。晶振采用11.0592MHz,復位采用RC電路。由于單片機P0口開漏輸出,需要外接10K的上拉電阻。3、原理簡述S

2、JA1000通過并行總線與MCU連接,包括地址/數據線、讀/寫控制信號、片選、中斷等十多根信號線。通過對單片機進行編程,來控制CAN節點的初始化、幀的發送和接受等。初始化流程:數據發送流程:中斷接收流程:查詢接收流程: 實驗內容 (1)硬件連接1、單片機和SJA1000的連接使用杜邦把CAN模塊的P0口連接到單片機開發板的P0擴展口上;把ALE,WR,RD,INT0,CS,KEY分別對應連接到單片機的ALE,P3.6,P3.7,P3.2,P2.0和P2.5上;把5V和GND分別對應接到單片機的電源接口上。2、SJA1000節點間的連接將兩個SJA1000節點的CAN_H,CAN_L對應連接,即

3、高接高,低接低,即可完成通信線路的連接。3、單片機與下載器的連接按如下圖所示的接線方式連接下載器(即USB轉TTL電平串口)和51單片機系統板。其中5V、3.3V電源線不接,只連接GND并交叉連接RX和TX,即TX接單片機的P3.0,RX接單片機的P3.1。可三根采用杜邦線將下載器的三個引腳接至51系統板的排插相應引腳上。(2)軟件編程1、在KeilC開發環境下編寫STC89C52程序,測試程序的下載和運行。2、編寫STC89C52串行通訊程序,能夠通過串口向PC機發送字符,顯示程序運行狀態。3、編寫SJA1000芯片CAN數據發送程序和查詢方式的數據接收程序,完成CAN數據幀的發送和接收。4

4、、編寫SJA1000芯片CAN數據發送程序和中斷方式的數據接收程序。實驗數據記錄及處理 1、查詢收發數據每次按下CAN實驗板上的按鍵KEY,則該CAN節點發送數據幀,單片機通過串口與PC通訊,顯示SEND MSG n,(0xc) ,其中n表示第n次發送。一個CAN節點發送數據幀后,另一個CAN節點通過查詢方式接收數據,同樣利用串口顯示RECV MSG n:data,其中n表示第n次接收,data表示接收的數據。實驗結果如下圖所示:2、中斷收發數據發送數據同上,一個CAN節點發送數據幀后,另一個CAN節點進入中斷,接收數據幀,利用串口顯示RECV MSG by INT0 n:data,其中n表示

5、第n次接收,data表示接收的數據。實驗結果如下圖所示:實驗出現的問題及解決辦法問題1:程序無法下載到單片機解決辦法:更新下載軟件STC_ISP,成功下載程序。問題2:CAN節點只能發送一次分析原因:由于發送后沒有節點接受應答,故不能進行下一次發送。解決辦法:通過把兩個CAN節點相連,成功實現了數據的收發。問題3:利用中斷接收數據解決辦法:編寫中斷服務程序,進入中斷后,調用CAN_RecvMsg()函數,進行數據的接收。實驗結論 通過對單片機進行編程,利用SJA1000 CAN總線控制器構成CAN總線數據收發系統,通過修改寄存器的值可以進行CAN總線初始化,可以進行CAN總線波特率設置、消息I

6、D和接收濾波器配置等操作。CAN總線控制器的基地址與連接方式有關,本次實驗用線選法,把CS與單片機的P2.0相連,故基地址為0XFE00。接收方式可以分為查詢法和中斷法。通過這次實驗,實現了兩個節點的數據通訊,每個節點都可以發送和接收數據,順利地完成了本次實驗。 回答思考題1、若已知CAN接口板的基地址=7F00H,請問PeliCAN模式下,SJA1000的控制寄存器的物理地址=?答:7F00H2、請將BasicCAN下地址分配表中的32個單元地址,用C語言宏常量定義方法,定義成SJA1000.h文本文件,并在Keil工程文件中調用。#define CAN_ADDR 0XFE00 /P2.0為

7、初始地址#define REG_CONTROL CAN_ADDR+0x00 /內部控制寄存器#define REG_COMMAND CAN_ADDR+0x01 /命令寄存器#define REG_STATUS CAN_ADDR+0x02 /狀態寄存器#define REG_INTERRUPT CAN_ADDR+0x03 /中斷寄存器#define REG_INTENABLE CAN_ADDR+0x04 /中斷使能寄存器#define REG_BTR0 CAN_ADDR+0x06 /總線定時寄存器0#define REG_BTR1 CAN_ADDR+0x07 /總線定時寄存器1#define R

8、EG_OCR CAN_ADDR+0x08 /輸出控制寄存器#define REG_TEST CAN_ADDR+0x09 /測試寄存器#define REG_RESVER1 CAN_ADDR+0x0A /保留1#define REG_ARBITRATE CAN_ADDR+0x0B /仲裁丟失捕捉#define REG_ERRCATCH CAN_ADDR+0x0C /錯誤代碼捕捉#define REG_ERRLIMIT CAN_ADDR+0x0D /錯誤報警限額#define REG_RXERR CAN_ADDR+0x0E /接收錯誤計數器#define REG_TXERR CAN_ADDR+0x

9、0F /發送錯誤計數器#define REG_ACR1 CAN_ADDR+0x10 /驗收代碼寄存器#define REG_ACR2 CAN_ADDR+0x11 /驗收代碼寄存器#define REG_ACR3 CAN_ADDR+0x12 /驗收代碼寄存器#define REG_ACR4 CAN_ADDR+0x13 /驗收代碼寄存器#define REG_AMR1 CAN_ADDR+0x14 /驗收屏蔽寄存器#define REG_AMR2 CAN_ADDR+0x15 /驗收屏蔽寄存器#define REG_AMR3 CAN_ADDR+0x16 /驗收屏蔽寄存器#define REG_AMR4

10、 CAN_ADDR+0x17 /驗收屏蔽寄存器#define REG_TXBuffer1 CAN_ADDR+0x10 /發送緩沖區1#define REG_TXBuffer2 CAN_ADDR+0x11 /發送緩沖區2#define REG_TXBuffer3 CAN_ADDR+0x12 /發送緩沖區3#define REG_TXBuffer4 CAN_ADDR+0x13 /發送緩沖區4#define REG_TXBuffer5 CAN_ADDR+0x14 /發送緩沖區5#define REG_TXBuffer6 CAN_ADDR+0x15 /發送緩沖區6#define REG_TXBuffe

11、r7 CAN_ADDR+0x16 /發送緩沖區7#define REG_TXBuffer8 CAN_ADDR+0x17 /發送緩沖區8#define REG_TXBuffer9 CAN_ADDR+0x18 /發送緩沖區9#define REG_TXBuffer10 CAN_ADDR+0x19 /發送緩沖區10#define REG_TXBuffer11 CAN_ADDR+0x1A /發送緩沖區11#define REG_TXBuffer12 CAN_ADDR+0x1B /發送緩沖區12#define REG_TXBuffer13 CAN_ADDR+0x1C /發送緩沖區13#define RE

12、G_RXBuffer1 CAN_ADDR+0x10 /接收緩沖區1#define REG_RXBuffer2 CAN_ADDR+0x11 /接收緩沖區2#define REG_RXBuffer3 CAN_ADDR+0x12 /接收緩沖區3#define REG_RXBuffer4 CAN_ADDR+0x13 /接收緩沖區4#define REG_RXBuffer5 CAN_ADDR+0x14 /接收緩沖區5#define REG_RXBuffer6 CAN_ADDR+0x15 /接收緩沖區6#define REG_RXBuffer7 CAN_ADDR+0x16 /接收緩沖區7#define R

13、EG_RXBuffer8 CAN_ADDR+0x17 /接收緩沖區8#define REG_RXBuffer9 CAN_ADDR+0x18 /接收緩沖區9#define REG_RXBuffer10 CAN_ADDR+0x19 /接收緩沖區10#define REG_RXBuffer11 CAN_ADDR+0x1A /接收緩沖區11#define REG_RXBuffer12 CAN_ADDR+0x1B /接收緩沖區12#define REG_RXBuffer13 CAN_ADDR+0x1C /接收緩沖區13#define REG_RXCOUNT CAN_ADDR+0x1D /RX報文計數器#define REG_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論