【正文】
參考文獻(xiàn)[1] 饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京航空航天大學(xué)出版社.2006:2036.[2] 梁海浪.DSPIC數(shù)字信號(hào)控制器C程序開(kāi)發(fā)及應(yīng)用[M].北京航天航空大學(xué)出版社,2006.[3] 朱濤.以太網(wǎng)與CAN總線通訊接口技術(shù)[D].武漢理工大學(xué),2006.[4] 智鵬,蔣兆,遠(yuǎn)楊進(jìn).基于CAN總線的分布式設(shè)備數(shù)據(jù)采集與監(jiān)控系統(tǒng)的研究與應(yīng)用[J].中國(guó)儀器儀表.2005.[5] 史久根.CAN數(shù)據(jù)傳送實(shí)時(shí)性研究及其應(yīng)用[J].信息與控制,2005,13(3):l822.[6] Leonardo da Vinci, Haggerty Road, Plymouth.Test Procedure for CAN Bus Susceptibility Evaluation Based on the Use of Radio Frequency Detectors[J] .2009.[7] D. Bishop,D. Dale, H. Hui, J. Lam, and .Distributed Power Supply Control Using CANBus[J]. .[8] MARCO D.Scheduling the CAN bus with earliest deadline[J].Industial electricOS,2007,1(3):。圖42 發(fā)送流程圖Fig 42 send flow5 結(jié)語(yǔ)CAN自誕生以來(lái),以其獨(dú)特的設(shè)計(jì)思想、優(yōu)良的性能和極高的可靠性越來(lái)越受到工業(yè)界的青睞。如果報(bào)文嘗試發(fā)送但仲裁失敗, TXLARB 位(CiTXnCON5)將被置位。如果報(bào)文嘗試發(fā)送但遇到出錯(cuò)情況, TXERR 位(CiTXnCON4)將被置位。如果發(fā)送第一次嘗試就成功完成,TXREQ位將清零,如果TXnIE位(CiINTECiINTE3和CiINTE4)已經(jīng)置位,還會(huì)產(chǎn)生一個(gè)中斷。當(dāng)模塊檢測(cè)到總線上有可用的SOF時(shí),發(fā)送開(kāi)始。當(dāng)TXREQ 置位時(shí), TXABT(CiTXnCON6)、TXLARB (CiTXnCON5)和TXERR(CiTXnCON4)標(biāo)志位將由模塊清零。必須置位TXREQ位(CiTXnCON3)來(lái)開(kāi)始發(fā)送報(bào)文。如果報(bào)文使用擴(kuò)展標(biāo)識(shí)符,CiTXnEID 寄存器和EID5:0位(CiTXnDLC15:10)會(huì)被加載并置位TXIDE位(CiTXnSID0)。至少,必須裝載標(biāo)準(zhǔn)標(biāo)識(shí)符寄存器CiTXnSID。TXnIF 位(CiINTFCiINTF3或CiINTF4)將被置位,并且TXREQ位(CiTXnCON3)清零,表明報(bào)文緩沖器完成了發(fā)送。最后一個(gè)字節(jié)是與每個(gè)報(bào)文相關(guān)的控制字節(jié)。其中的8 個(gè)字節(jié)用于存放發(fā)送的報(bào)文(最大8 個(gè)字節(jié))。圖41 接收流程圖Fig 41 receive flowchart 發(fā)送程序CAN 模塊有三個(gè)發(fā)送緩沖器。當(dāng)接收到報(bào)文時(shí),F(xiàn)ILHIT位(接收緩沖器0的CiRX0CON0和接收緩沖器1的CiRX1CON2:0)會(huì)表明報(bào)文的接收標(biāo)準(zhǔn)。如果RXnIE 位(CiINTE0或CiINTE1)置位,當(dāng)接收到報(bào)文時(shí)將會(huì)產(chǎn)生一個(gè)中斷。該位在CPU處理完緩沖器中的報(bào)文后將由CPU清零。當(dāng)接收到報(bào)文時(shí), RXnIF 標(biāo)志(CiINTF0 或CiINRF1)將置位。MAB將組合所有接收到的報(bào)文。當(dāng)一個(gè)接收緩沖器在接收?qǐng)?bào)文或保持上次接收到的報(bào)文時(shí), CPU仍可以使用另一個(gè)接收緩沖器工作。這個(gè)緩沖器叫做報(bào)文合成緩沖器(Message Assembly Buffer,MAB)。CAN初始化函數(shù)原型為:void *CAN_Create