CAN硬件設(shè)計(jì)課件_第1頁
CAN硬件設(shè)計(jì)課件_第2頁
CAN硬件設(shè)計(jì)課件_第3頁
CAN硬件設(shè)計(jì)課件_第4頁
CAN硬件設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

6CAN的開發(fā)與設(shè)計(jì)

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用CAN節(jié)點(diǎn)結(jié)構(gòu)系統(tǒng)構(gòu)成通信控制:寄存器設(shè)置、收發(fā)緩沖器、認(rèn)可濾波器軟件:初始化:設(shè)置各個(gè)寄存器(中斷設(shè)置、波特率設(shè)置、輸出方式設(shè)置等)。數(shù)據(jù)接收:讀取接收緩沖區(qū)的數(shù)據(jù);采用查詢還是中斷。(20-29)數(shù)據(jù)發(fā)送:向CAN總線控制器發(fā)送緩沖器中寫數(shù)據(jù)。(10-19)6.4.1初始化

SJA1000在上電或硬復(fù)拉后,必須初始化以便進(jìn)行通信。在運(yùn)行過程中還可以通過主控制器對其組態(tài)進(jìn)行修改(重新組態(tài)),在進(jìn)行重新組態(tài)時(shí),首先要進(jìn)入復(fù)位狀態(tài)。圖6-12給出了初始化程序的流程。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用上電復(fù)位后,主控制器要運(yùn)行其復(fù)位子程序,然后進(jìn)入初始化SJA1000的子程序,因?yàn)橐M態(tài)的寄存器只有在復(fù)位模式(ResetMode)下,才能被寫入。主控制器必須在復(fù)位模式下對控制段的下列寄存器進(jìn)行設(shè)置。(1)控制寄存器選擇下列運(yùn)行方式:復(fù)位或運(yùn)行概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用(2)時(shí)鐘分頻寄存器:BasicCAN或PeliCAN模式時(shí)鐘輸出(CLKOUT)是否有效接收比較器是否旁路TX1輸出腳是否用作專用接收中斷輸出(3)認(rèn)可碼與認(rèn)可碼屏蔽寄存器:定義要接收報(bào)文的認(rèn)可碼定義認(rèn)可碼與報(bào)文進(jìn)行比較的相關(guān)位

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用上述的組態(tài)信息寫入SJA1000的控制段后,就可以通過清除R/R標(biāo)志進(jìn)入運(yùn)行狀態(tài),但必須檢驗(yàn)這個(gè)標(biāo)志位是否真正被清除了,并且確已進(jìn)入運(yùn)行模式,否則程序不應(yīng)繼續(xù)往下執(zhí)行。在設(shè)置SJA1000寄存器前,主控制器應(yīng)該通過讀R/R(Resetmode/Request)標(biāo)志來確認(rèn)SJA1000確在復(fù)位方式,因?yàn)橐M態(tài)的寄存器只有在復(fù)位模式(ResetMode)下,才能被寫入。(RR復(fù)位請求在控制寄存器(CR)中)概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用參數(shù)定義(起始地址:8000H)CONEQU8000H;控制寄存器

CMREQU8001H;命令寄存器

SR EQU8002H;狀態(tài)寄存器

CDR EQU801FH;時(shí)鐘分頻器

ACR EQU8004H;認(rèn)可碼寄存器

AMR EQU8005H;認(rèn)可碼屏蔽寄存器

BTR0 EQU8006H;總線定時(shí)寄存器0 BTR1 EQU8007H;總線定時(shí)寄存器1 OCR EQU8008H;輸出控制寄存器

CANTXDEQU800AH;發(fā)送緩沖區(qū)

CANRXDEQU8014H;接收緩沖區(qū)

CINIT:MOVDPTR,#CON;控制寄存器

MOVA,#01H;復(fù)位SJA1000 MOVX@DPTR,A波特率=1/(tTseg1+tTseg2+tSYN)tSYN=

tSCL例:24MHz晶振,BTR0=0C5H,BTR1=0A5H。

BTR0=11000101;BTR1=1010

0101tSCL=2×(4×1+2×0+1+1)/24×106=0.5×10-6tTseg1=(8×0+4×1+2×0+1+1)×tSCL=6tSCLtTseg2=(4×0+2×1+1×0+1)×tSCL=3tSCL波特率=1/(tTseg1+tTseg2+tSCL)=1/10tSCL=200×103MOVDPTR,#AMR ;接收屏蔽寄存器

MOVA,#DAMRMOVX@DPTR,AMOVDPTR,#ACR;認(rèn)可碼寄存器

MOVA,#DACRMOVX@DPTR,A

報(bào)文的發(fā)送是CAN控制器SJA1000依據(jù)CAN協(xié)議規(guī)范自動(dòng)進(jìn)行的;主控制器將要發(fā)送的報(bào)文寫入SJA1000的發(fā)送緩沖區(qū),并將發(fā)送請求位(TransmitRequest)置1;發(fā)送過程既可以采用中斷方式,也可以采用查詢方式(查詢SJA1000控制段的狀態(tài)標(biāo)志)。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用6.4.2數(shù)據(jù)的發(fā)送1)采用中斷方式的數(shù)據(jù)發(fā)送

查詢方式的報(bào)文發(fā)送在查詢方式下CAN發(fā)送中斷應(yīng)被屏蔽。一旦報(bào)文開始發(fā)送,發(fā)送緩沖器寫閉鎖,因此主控制器要查詢“發(fā)送緩沖器狀態(tài)”標(biāo)志,確定是否可以將一個(gè)新的報(bào)文寫入發(fā)送緩沖器(TXBuffer)。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用TS2:MOVDPTR#CANTXD;SJA1000發(fā)送緩存區(qū)首址

MOVA#88H;

MOVX@DPTRAINCDPTR MOVA,#88H ;標(biāo)識(shí)符10001000100 MOVX@DPTR,A向發(fā)送緩沖區(qū)寫數(shù)據(jù)MOVR1,#08H;數(shù)據(jù)長度

MOVR0,#TRDATA;cpu發(fā)送數(shù)據(jù)區(qū)首地址

MTBF: MOVA,@R0 INCDPTR MOVX@DPTR,A INCR0 DJNZR1,MTBFMOVDPTR,#CMR ;命令寄存器地址MOVA,#01H;發(fā)送請求置1MOVX@DPTR,A ;啟動(dòng)SJA1000發(fā)送RET6.4.4接收報(bào)文接收報(bào)文是CAN控制器依據(jù)CAN協(xié)議規(guī)范自動(dòng)進(jìn)行,接收報(bào)文被放在接收緩沖器RXBuffer中。一個(gè)報(bào)文是否可以傳送給主控制器,由狀態(tài)寄存器的接收緩沖器狀態(tài)RBS和接收中斷標(biāo)志確定(若中斷開放)。主控制器要將有效數(shù)據(jù)讀入其內(nèi)存,釋放接收緩沖器RXBuffer,并對報(bào)文進(jìn)行處理。傳送過程既可由中斷控制,也可通過查詢狀態(tài)寄存器標(biāo)志來完成。概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用CAN控制器的接收中斷應(yīng)屏蔽,主控制器讀SJA1000狀態(tài)寄存器(周期性的)、查詢接收緩沖器狀態(tài)標(biāo)志RBS,看接收緩沖器中是否有報(bào)文存在。

概述系統(tǒng)構(gòu)成CAN通信的控制CAN通信的應(yīng)用1)查詢方式的接收過程若接收緩沖器空,主控制器繼續(xù)其它的程序,直到下一個(gè)查詢接收緩沖器狀態(tài)命令。若接收緩沖器狀態(tài)標(biāo)志指示“滿”,接收緩沖器中已接收到一個(gè)或多個(gè)報(bào)文。

接收子程序REC:MOVDPTR,#SRMOVXA,@DPTR

JBACC.4,REC

;判斷sja1000是否正在接收報(bào)文,是則等待

JNBACC.0,REC

;讀出狀態(tài)寄存器中的值,判斷是否有報(bào)文,有則接收,無則返回ACCEPT:MOVDPTR,#CANRXDINCDPTRMOVXA,@DPTRANLA,#0FH;截取字節(jié)長度

MOVR2,AMOVR1,#CPURBFRDATA:INCDPTR;數(shù)據(jù)第一字節(jié)

MOVXA,@DPTRMOV@R1,AINCR1DJNZR2,RDATA;循環(huán)讀取數(shù)據(jù)RELE:MOVDPTR,#CMR MOVA,#04H;釋放CAN接收緩沖區(qū)

MOVX@DPTR,ARET綜合設(shè)計(jì)(作業(yè))

利用8051單片機(jī)、SJA1000CAN控制器以及其他相關(guān)芯片設(shè)計(jì)一基于CAN總線的數(shù)據(jù)采集系統(tǒng),要求使用相關(guān)芯片設(shè)計(jì)該系統(tǒng)的CAN節(jié)點(diǎn),該節(jié)點(diǎn)能夠采集8路開關(guān)量。主要有關(guān)的芯片的管腳定義隨題給出。要求:A、畫出CAN節(jié)點(diǎn)的原理連接簡圖;B、給出CAN節(jié)點(diǎn)的詳細(xì)初始化程序框圖(包括SJA1000的初始化);C、假設(shè)系統(tǒng)的通信速率為250Kbps,系統(tǒng)振蕩頻率為24MHz,設(shè)置相應(yīng)的SJA1000的寄存器;D、給出中斷方式報(bào)文的接收和發(fā)送程序框圖。CAN總線數(shù)據(jù)收發(fā)實(shí)驗(yàn)由裝置甲來發(fā)送數(shù)據(jù),裝置乙的數(shù)碼管來顯示接收到的數(shù)據(jù),具體通信過程如下:1、甲的單片機(jī)將數(shù)據(jù)處理后發(fā)送到CAN總線控制器的發(fā)送緩沖區(qū)中,并將數(shù)據(jù)通過CAN總線發(fā)送給裝置乙。2、乙裝置將數(shù)據(jù)從CAN總線控制器的接收緩沖區(qū)中提取出來并通過數(shù)碼管顯示出來。CH451顯示模塊CH451是一個(gè)整合了數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制以及μP監(jiān)控的多功能外圍芯片。CH451內(nèi)置RC振蕩電路,可以動(dòng)態(tài)驅(qū)動(dòng)8位數(shù)碼管或者64位LED,具有BCD譯碼、閃爍、移位等功能;同時(shí)還可以進(jìn)行64鍵的鍵盤掃描;CH451通過可以級(jí)聯(lián)的串行接口與單片機(jī)等交換數(shù)據(jù);并且提供上電復(fù)位和看門狗等監(jiān)控功能。單片機(jī)向CH451輸出串行數(shù)據(jù)的過程:①輸出一位數(shù)據(jù),即向DIN輸出最低位數(shù)據(jù)B0,并向DCLK輸出低電平脈沖(從高電平變?yōu)榈碗娖皆倩謴?fù)為高電平),其中包括一個(gè)上升沿使CH451輸入位數(shù)據(jù);②以同樣的方式,輸出位數(shù)據(jù)B1-B11;③向LOAD輸出低電平脈沖,其中包括一個(gè)上升沿使CH451加載串行數(shù)據(jù)。CH451的操作命令均為12位,下表列出了CH451的各個(gè)操作命令所對應(yīng)的12位串行數(shù)據(jù)。其中,標(biāo)注為x的位表示該位可以是任意值;標(biāo)有名稱的位表示該位在CH451芯片內(nèi)部具有相應(yīng)的寄存器類別判斷命令設(shè)置或顯示的數(shù)據(jù)編碼初始化START:CLRDIN;輸出一個(gè)低電平脈沖,以通知CH451為4線串行接口

SETBDCLK;置為默認(rèn)的高電平

SETBDIN SETBLOAD SETBDOUT MOVB,#04H;設(shè)置系統(tǒng)參數(shù)命令

MOVA,#07H;WATCH-DOG使能,開鍵盤、顯示功能

LCALLWRITE MOVB,#05H;設(shè)置顯示參數(shù)

MOVA,#0DH;不譯碼,4位顯示,亮度為D級(jí)

LCALLWRITE數(shù)據(jù)讀取WRITE:CLRET0;禁止鍵盤中斷

CLRLOAD;命令開始

MOVR7,#08H

;將ACC中8位送出WRITE_8:

RRCA

;低位在前,高位在后

CLRDCLK MOVDIN,C

;送出一位數(shù)據(jù)

SETBDCLK

;產(chǎn)生時(shí)鐘上升沿通知

DJNZR7,WRITE_8

;位數(shù)據(jù)未完,繼續(xù)

MOVA,B MOVR7,#04H;將B中4位送出WRITE_4:RRCA;低位在前,高位在后

CLRDCLK MOVDIN,C SETBDCLK DJNZR7,WRITE_4 SETBLOAD;產(chǎn)生加載上升沿通知

SETBET0;開鍵盤中斷

RET低8位高4位

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論