eCAN總線模塊的初始化步驟
在CAN模塊正常操作及初始化之前,必須使能模塊的時鐘??梢酝ㄟ^寄存器PCLKCR的14位使能/屏蔽CAN模塊的時鐘。在不使用CAN模塊時,通過該位屏蔽CAN的時鐘可以降低功耗。該位不能控制CAN模塊的低功耗模式,同其他外設(shè)一樣,復(fù)位后CAN模塊的時鐘被屏蔽。模塊時鐘的配置一般在處理器初始化中完成,eCAN模塊的初始化步驟如下。
(1)使能CAN模塊的時鐘。
(2)設(shè)置CANTX和CANRX作為CAN通信引腳:
◇寫CANTIOC.3:0=0x08;
◇寫CANRIOC.3:0=Ox08。
(3)復(fù)位后,OCR(CANMC.12)位和CCE(CANES.4)位置1,允許用戶配置位時間配置寄存器(CANBTC)。如果CCE位置1(CANES.4=1),進(jìn)行下一步;否則將CCR位置1(CAN-MC,12=1),然后等待直到CCE置1(CANES.4=1)。
(4)使用適當(dāng)?shù)闹祵ANBTC進(jìn)行配置,確認(rèn)TSEG1和TSEG2不等于0。如果兩個值等于0,則CAN模塊不能退出初始化模式。
(5)對于標(biāo)準(zhǔn)CAN模式(SCC),現(xiàn)在對接收屏蔽寄存器編程。如寫LAM(3)=0x3C0000。
(6)對主控制寄存器(CANMC)編程,具體如下:
◇清除OCR(CANMC.12)=0
◇清除PDR(CANMC.11)=0
◇清除DBO(CANMC.10)=0
◇清除WUBA(CANMC.9)=0
◇清除CDR(CANMC.8)=0
◇清除ABO(CANMC.7)=0
◇清除STM(CANMC.6)=0
◇清除SRES(CANMC.5)=0
◇清除MBNR(CANMC.4~0)=0
(7)將MSGCTRLn寄存器的所有位清零進(jìn)行初始化。
(8)檢查CCE是否被清零(CANES.4=0),如果被清零則表明CAN模塊已經(jīng)配置完成。
評論