ECan總線模塊_第1頁
ECan總線模塊_第2頁
ECan總線模塊_第3頁
ECan總線模塊_第4頁
ECan總線模塊_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、ECan總線模塊訪問ECAN模塊可分為控制/狀態(tài)寄存器和32個(gè)郵箱的訪問。每個(gè)郵箱都有一個(gè)可編程接受屏蔽寄存器,其所占用的512字節(jié)RAM都可以配置為發(fā)送或接收郵箱。每個(gè)郵箱包括8字節(jié)數(shù)據(jù)區(qū),29位標(biāo)識(shí)符和幾個(gè)控制位,每個(gè)郵箱都是有4個(gè)32位的寄存器構(gòu)成。即:MSGID存儲(chǔ)消息ID;(消息標(biāo)志寄存器)MSGCTRL定義字節(jié)數(shù),發(fā)送極性,遠(yuǎn)程幀;(消息控制寄存器)MDL4字節(jié)數(shù)據(jù)MDH4字節(jié)數(shù)據(jù)ECAN控制器總共有15個(gè)32位的控制寄存器,控制著位定時(shí)器、郵箱的發(fā)送或接收使能、錯(cuò)誤狀態(tài)及CAN中斷等。其控制寄存器的狀態(tài)寄存器只能允許32位訪問,而接收屏蔽、時(shí)間標(biāo)識(shí)寄存器、超時(shí)寄存器和郵箱所在的C

2、AN范圍則可以以8位、16位和32位方式訪問。該程序中都是進(jìn)行32位訪問,通過設(shè)置影子寄存器可實(shí)現(xiàn)對位進(jìn)行操作。如以下程序:struct ECAN_REGS ECanbShadow; EALLOW; / EALLOW enables access to protected bitsECanbShadow.CANTIOC.all = ECanbRegs.CANTIOC.all;ECanbShadow.CANTIOC.bit.TXFUNC=1; /發(fā)送 ECanbRegs.CANTIOC.all = ECanbShadow.CANTIOC.all;EALLOW是指允許對受保護(hù)的寄存器操作,通常和E

3、DIS配套使用,EDIS是指恢復(fù)被保護(hù)寄存器的狀態(tài)。#define EALLOW asm(" EALLOW")#define EDIS asm(" EDIS") (device.h)初始化CAN步驟:1. 使能GPIO口(GPIO8為CANTX,GPIO10為CANRX);2. 設(shè)置CANTX和CANRX為CAN的通信引腳;3. 選擇是增強(qiáng)型還是標(biāo)準(zhǔn)型;4. 相關(guān)寄存器清零;(郵箱控制寄存器清0;復(fù)位TA;RMP寄存器所有位置1,表示郵箱中存在發(fā)送的數(shù)據(jù);清除所有中斷標(biāo)志)5. 設(shè)置時(shí)間配置寄存器的三個(gè)步驟(設(shè)置CCR=1,等待CER=1,然后設(shè)置CAN

4、BTC);ECanbShadow.CANMC.all = ECanbRegs.CANMC.all;ECanbShadow.CANMC.bit.CCR = 1 ; ECanbRegs.CANMC.all = ECanbShadow.CANMC.all;ECanbShadow.CANES.all = ECanbRegs.CANES.all;doECanbShadow.CANES.all = ECanbRegs.CANES.all; while(ECanbShadow.CANES.bit.CCE != 1 );配置時(shí)鐘程序此處省略。6. 配置CANBTC,確認(rèn)TSEG1和TSEG2不等于0,如果這兩

5、個(gè)同時(shí)為0,則CAN模塊不能退出初始化模式。 波特率計(jì)算公式: 波特率=SYSCLK/BRP*BT /*BRPreg,TSEG1,TSEG2存在于CANBTC寄存器*/BRP=BRPreg+1BT  =TSEG1+1+TSEG2+1+17.設(shè)置CANMC寄存器的位,請求正常運(yùn)行,設(shè)置CCR=0,等待CER=0;8.禁用所有郵箱;ECanbRegs.CANME.all = 0;9.通過對郵箱寄存器的配置設(shè)置擴(kuò)展性和給每個(gè)郵箱設(shè)置地址;10.將0-15個(gè)郵箱設(shè)置為Tx,16-31設(shè)置為Rx;ECanbRegs.CANMD.all = 0xFFFF0000;11.使能所有郵箱;E

6、CanbRegs.CANME.all = 0x00010001;12.設(shè)置郵箱控制寄存器的DLC位; ECanbMboxes.MBOXn.MSGCTRL.bit.DLC = 8;(0<=n<=15)指定數(shù)據(jù)為8位;13.設(shè)置郵箱中斷級(jí)別。 ECanbRegs.CANMIL.all = 0x00000000;14.使能接收郵箱全局中斷。 ECanbRegs.CANMIM.all = 0xFFFF0000;15.使能中斷0; ECanbRegs.CANGIM.all = 0x00000001;ECAN以報(bào)文的形式發(fā)送或接收信息,報(bào)文格式分為標(biāo)準(zhǔn)數(shù)據(jù)幀格式和擴(kuò)展數(shù)據(jù)幀格式;標(biāo)準(zhǔn)數(shù)據(jù)幀格式

7、: RTR位用于區(qū)分?jǐn)?shù)據(jù)幀和遠(yuǎn)程幀。對于標(biāo)準(zhǔn)數(shù)據(jù)幀,RTR位清零。 仲裁字段之后是一個(gè)6位的控制字段,提供關(guān)于報(bào)文內(nèi)容的更多信息??刂谱侄沃械牡谝晃皇菢?biāo)識(shí)符擴(kuò)展(Identifier Extension,IDE)位,用于區(qū)分報(bào)文是標(biāo)準(zhǔn)數(shù)據(jù)幀還是擴(kuò)展數(shù)據(jù)幀。在發(fā)送IDE位期間,標(biāo)準(zhǔn)數(shù)據(jù)幀使用顯性狀態(tài)(邏輯電平0)指示??刂谱侄沃械牡诙皇潜A簦≧B0)位,該位處于顯性狀態(tài)(邏輯電平0)??刂谱侄沃械淖詈?位表示數(shù)據(jù)長度編碼(Data LengthCode,DLC),它規(guī)定了報(bào)文中包含的數(shù)據(jù)字節(jié)數(shù)。 控制字段之后是數(shù)據(jù)字段。該字段承載報(bào)文數(shù)據(jù)數(shù)據(jù)幀的實(shí)際有效

8、載荷。該字段的長度可變,范圍為0至8字節(jié)。字節(jié)數(shù)可由用戶選擇。數(shù)據(jù)字段之后是循環(huán)冗余校驗(yàn)(CRC)字段,由一個(gè)15位的CRC序列和一個(gè)定界符位組成。 應(yīng)答(ACK)字段以隱性位(邏輯電平1)發(fā)送,會(huì)被已正確接收數(shù)據(jù)的任意接收器改寫為顯性位。不論接收過濾器比較的結(jié)果如何,接收器總是會(huì)應(yīng)答報(bào)文。最后一個(gè)字段是幀結(jié)束字段,由7個(gè)隱性位組成,指示報(bào)文結(jié)束。 擴(kuò)展數(shù)據(jù)幀格式:擴(kuò)展數(shù)據(jù)幀以SOF位開始,后面跟隨一個(gè)31位的仲裁字段。擴(kuò)展數(shù)據(jù)幀的仲裁字段包含29個(gè)標(biāo)識(shí)符位,這些位分布在由替代遠(yuǎn)程請求(Substitute Remote Request,SRR)位和IDE位隔開的

9、兩個(gè)字段中。SRR位決定報(bào)文是否是遠(yuǎn)程幀。對于擴(kuò)展數(shù)據(jù)幀,SRR = 0。IDE位指示數(shù)據(jù)幀類型。對于擴(kuò)展數(shù)據(jù)幀,IDE = 1。擴(kuò)展數(shù)據(jù)幀的控制字段由7位組成。第一位是RTR。對于擴(kuò)展數(shù)據(jù)幀,RTR = 0。接下來兩位RB1和RB0是保留位,處于顯性狀態(tài)(邏輯電平0)??刂谱侄沃械淖詈?位是數(shù)據(jù)長度編碼,它規(guī)定了報(bào)文中包含的數(shù)據(jù)字節(jié)數(shù)。擴(kuò)展數(shù)據(jù)幀中的其余字段在結(jié)構(gòu)上與標(biāo)準(zhǔn)數(shù)據(jù)幀相同。SOF標(biāo)識(shí)符11位SRRIDE標(biāo)識(shí)符18位RTRRB0RB1DLC4位數(shù)據(jù)8字節(jié)CRC16位ACK2位EOF7位IFS3位IDE為隱性(邏輯1);SRR

10、為顯性(邏輯0);RTR為顯性(邏輯0);RB0為顯性(邏輯0);RB1為顯性(邏輯0) 。 ECAN發(fā)送數(shù)據(jù): ECanbMboxes.MBOX0.MDL.all = mdl;ECanbMboxes.MBOX0.MDH.all = mdh; 往發(fā)送郵箱中寫數(shù)據(jù),分別寫低32位4字節(jié)和高32位4字節(jié).CanTrsData = 0x00000001;ECanbRegs.CANTRS.all = CanTrsData; 置位準(zhǔn)備發(fā)送,將發(fā)送請求位置位,使能郵箱發(fā)送功能. while(ECanbRegs.CANTA.all != CanTrsData)temp = ECanbRegs.CANES.a

11、ll;ECanbRegs.CANES.all = temp;if(temp&0x00070000)CanSndErr = 0x1;break;如果CANES(錯(cuò)誤狀態(tài)寄存器)中的(Warning status),(Error Passive status),(Bus-off status)位為,則說明發(fā)送錯(cuò)誤;退出發(fā)送。當(dāng)郵箱的消息被成功發(fā)送時(shí),發(fā)送應(yīng)答位TA將置1if(CanSndErr)ECanbRegs.CANTRR.all = CanTrsData; 如果發(fā)送錯(cuò)誤,取消這次發(fā)送請求ECanbRegs.CANTA.all = 0x0000FFFF; 寫1清零,準(zhǔn)備判別下一次發(fā)送與否ECAN接收數(shù)據(jù):if(ECanbRegs.CANRMP.all&0x10000)!=z0)當(dāng)接收消息成功是CANRNP(接收待決寄存器)置1;ECanbRegs.CANRMP.all=0x10000;接收待決位通過寫1清0;接受待決位若不清0則無法繼續(xù)接收數(shù)據(jù);*rec=ECanbMboxes.MBOX16.MDL.all;*(rec+1)

溫馨提示

  • 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)論