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