基于C8051F040單片機(jī)的CAN總線測(cè)試模式研究
摘要:現(xiàn)場(chǎng)總線已成為數(shù)據(jù)總線領(lǐng)域中最為活躍的熱點(diǎn),CAN總線被公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一,CAN總線節(jié)點(diǎn)的設(shè)計(jì)、調(diào)試是CAN總線通訊系統(tǒng)設(shè)計(jì)的重點(diǎn)。在此介紹了C8051F040單片機(jī)內(nèi)部集成的CAN控制器,并基于C8051F040單片機(jī)設(shè)計(jì)了一個(gè)CAN通信節(jié)點(diǎn),并給出了CAN節(jié)點(diǎn)測(cè)試模式軟件設(shè)計(jì)程序,可以用于CAN總線模塊的測(cè)試,節(jié)省測(cè)試時(shí)間。
關(guān)鍵詞:C8051F040;CAN總線;測(cè)試模式;CAN控制器
現(xiàn)場(chǎng)總線能同時(shí)滿足過程控制和制造業(yè)自動(dòng)化的需求,因而現(xiàn)場(chǎng)總線已成為數(shù)據(jù)總線領(lǐng)域中最為活躍的一個(gè)領(lǐng)域。現(xiàn)場(chǎng)總線的研究和應(yīng)用已成為數(shù)據(jù)總線領(lǐng)域的熱點(diǎn)。CAN總線(Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,它是一種支持分布式控制和實(shí)時(shí)控制的串行通信網(wǎng)絡(luò)。CAN總線是德國博士公司在20世紀(jì)80年代為解決現(xiàn)代汽車中眾多的控制和測(cè)試儀器之間的數(shù)據(jù)通信而開發(fā)的一種串行通信協(xié)議。由于其高性能、高可靠性、及獨(dú)特的設(shè)計(jì),CAN總線越來越受到人們的重視,其應(yīng)用領(lǐng)域不再局限于汽車工業(yè),而向過程工業(yè)、機(jī)械工業(yè)、紡織工業(yè)、農(nóng)用機(jī)械、傳感器以及航空航天等領(lǐng)域發(fā)展。被公認(rèn)為最有前途的現(xiàn)場(chǎng)總線之一。
1 引言
Cygnal公司開發(fā)的51系列單片機(jī)C8051F040是完全集成的混合信號(hào)系統(tǒng)型微控制器,其上集成可實(shí)現(xiàn)全功能CAN的CAN總線控制器,完全符合CAN規(guī)范2.0A和2.0B。本文利用C8051F040單片機(jī)上集成的CAN控制器,外接一個(gè)CAN收發(fā)器(PCA82C250)設(shè)計(jì)了一個(gè)CAN通信節(jié)點(diǎn)的硬件電路,然后詳細(xì)介紹了CAN控制器測(cè)試模式的實(shí)現(xiàn),可以應(yīng)用于CAN通信節(jié)點(diǎn)的調(diào)試測(cè)試。
2 C8051F040單片機(jī)上集成的CAN控制器
CAN控制器包括CAN核,消息存儲(chǔ)器,消息處理器,控制寄存器和模塊接口等幾部分。CAN核用于協(xié)議控制和消息的串并轉(zhuǎn)換;消息存儲(chǔ)器用于存儲(chǔ)消息對(duì)象和標(biāo)志符;消息處理器用于控制CAN核和消息存儲(chǔ)器之間的數(shù)據(jù)傳輸;控制寄存器用于控制和配置CAN控制器;模塊接口用于MCU與CAN控制器之間交換數(shù)據(jù)。C8051F040單片機(jī)上集成的CAN控制器的消息存儲(chǔ)器上可以存儲(chǔ)32個(gè)消息對(duì)象,均可以被配置為發(fā)送或接收對(duì)象。CAN總線協(xié)議處理由CAN控制器獨(dú)立完成,不用MCU干預(yù),因此CAN通信占用的CPU帶寬很小,C8051F040集成CAN控制器原理如圖1所示。
3 CAN控制器工作模式
C8051F040單片機(jī)上集成的CAN控制器主要有2種工作模式:正常工作模式和測(cè)試模式??梢酝ㄟ^將CAN控制器寄存器中的Test位置1,進(jìn)入測(cè)試模式。在測(cè)試模式下,測(cè)試寄存器中的Tx1,Tx0,LBack,Silent以及Basic位均是可寫的。將Test位置0后,測(cè)試寄存器的所有功能將被禁止。測(cè)試模式又可細(xì)分為沉默模式(又叫監(jiān)測(cè)模式)、回送模式、基本模式以及回送和沉默模式結(jié)合等4種工作模式。通過將測(cè)試寄存器
中的Silent位置1,可將CAN核設(shè)置為沉默模式。在沉默模式下,CAN核能夠接收有效數(shù)據(jù)幀和有效遠(yuǎn)程幀,但是只能在總線上發(fā)送隱性位而不能進(jìn)行傳輸。圖2為在沉默模式下CAN_TX和CAN_RX信號(hào)同CAN核的聯(lián)系。通過將測(cè)試寄存器的LBack位置1,可以將CAN核設(shè)置為回送模式。在回送模式下,CAN核將它發(fā)送的消息當(dāng)作接收到的消息對(duì)待,并存儲(chǔ)在接收緩存中。
圖3為在回送模式下CAN_TX和CAN_RX信號(hào)同CAN核的聯(lián)系。通過將LBack和Silent同時(shí)置1,可以將回送模式和沉默模式結(jié)合。這種模式可以應(yīng)用于熱自檢,可以在不影響CAN系統(tǒng)運(yùn)行的情況下,對(duì)CAN節(jié)點(diǎn)進(jìn)行自檢。在這種模式下,CAN_RX引腳與CAN核斷開,CAN_TX引腳被保持為隱性位。圖4為在這種模式下CAN_TX和CAN_RX信號(hào)同CAN核的聯(lián)系。若將測(cè)試寄存器中的Basic置1,CAN核便工作于基本模式下。在這種模式下消息存儲(chǔ)器不工作,即不用消息隊(duì)列緩存交換數(shù)據(jù),而把IF1寄存器用作傳輸緩存,把IF2寄存器用作接收緩存。
4 CAN通信節(jié)點(diǎn)硬件設(shè)計(jì)
C8051F040上集成的CAN控制器是一個(gè)協(xié)議控制器,不能提供物理層驅(qū)動(dòng),需要外接CAN收發(fā)器才能掛接在CAN網(wǎng)絡(luò)上與其他節(jié)點(diǎn)通信。本文采用PCA82C250收發(fā)器作為物理層驅(qū)動(dòng)器。若在CAN控制器和PCA82C250之間加入光藕隔離器件可以提高系統(tǒng)的穩(wěn)定性和可靠性,但這會(huì)增加系統(tǒng)的復(fù)雜性。本文的目的主要是調(diào)試CAN控制器的測(cè)試模式,所以沒有使用光藕隔離器件。CAN通信節(jié)點(diǎn)原理圖如圖5所示。
5 軟件設(shè)計(jì)
基于C8051F040的CAN通信節(jié)點(diǎn)的軟件設(shè)計(jì)主要包括3個(gè)部分:CAN節(jié)點(diǎn)初始化、報(bào)文發(fā)送和報(bào)文接收。熟悉這3部分程序的設(shè)計(jì),就能寫出普通的CAN通信程序。
5.1 CAN初始化
初始化CAN控制器的一般步驟如下:
(1)將SFRPAGE寄存器設(shè)置為CAN0_PAGE。
(2)將CAN0CN寄存器的INIT和CCE位設(shè)置為“1”。
(3)設(shè)置時(shí)序參數(shù)。
(4)啟動(dòng)CAN控制器。
由于本文要研究的是測(cè)試模式,所以最后要進(jìn)入測(cè)試模式。