郭丹丹 楊瀛陸
摘 要:本文介紹了CAN總線(xiàn)的概念,給出了SJA1000控制器的基本功能,原理框圖,描述了軟件設(shè)計(jì)的流程,分為初始化、發(fā)送和接收流程,給出了上位機(jī)測(cè)試軟件界面,總結(jié)SJA1000是很好的CAN通訊控制器。
關(guān)鍵詞:CAN;SJA1000控制器;硬件設(shè)計(jì)框圖
中圖分類(lèi)號(hào):TN915 文獻(xiàn)標(biāo)識(shí)碼:A
1 CAN總線(xiàn)概述
CAN總線(xiàn)(Controller Area Network)是眾多現(xiàn)場(chǎng)通信總線(xiàn)的一種,它屬于串行數(shù)據(jù)通訊總線(xiàn)。CAN網(wǎng)絡(luò)最大通訊距離為10km(5kbps),通訊速率可配置最高可達(dá)1Mbps(40m)。
2 SJA1000獨(dú)立控制器簡(jiǎn)介
CAN總線(xiàn)器件有兩種:一種是獨(dú)立CAN控制器;另外一種是片上微控制器的總線(xiàn)控制器。SJA1000CAN控制器屬于獨(dú)立的CAN控制器,因?yàn)樗С諧AN2.0B規(guī)約,軟件和硬件都兼容之前的同類(lèi)型芯片PCA82C200,技術(shù)相對(duì)比較成熟,并能應(yīng)用在汽車(chē)和工業(yè)環(huán)境下,因此應(yīng)用的范圍比較廣泛。SJA1000的主要特性為:
(1)硬件的外特性與CAN總線(xiàn)控制器PCA82C200兼容;(2)軟件操作和使用與PCA82C200兼容;(3)增加了擴(kuò)展接收緩沖器;(4)在通信上支持CAN2.0B協(xié)議;(5)同時(shí)支持11位和29位標(biāo)識(shí)符;(6)通訊速率1Mbits/s;(7)對(duì)于增強(qiáng)CAN模式的支持;(8)時(shí)鐘頻率可以支持到24MHz;(9)對(duì)于微處理器接口支持多種;(10)CAN輸出配置可編程;芯片的工作溫度范圍-40℃~+125℃。
3 硬件設(shè)計(jì)框圖
板卡集成了1片PCI9054總線(xiàn)接口芯片,它負(fù)責(zé)PCI總線(xiàn)接口的轉(zhuǎn)換;1片Cyclone III系列的FPGA(EP3C25F324),它負(fù)責(zé)輸出控制信號(hào)和初始化CAN控制器;4片CAN控制器(SJA1000),它負(fù)責(zé)并行數(shù)據(jù)總線(xiàn)到CAN總線(xiàn)協(xié)議的轉(zhuǎn)換;4片CAN總線(xiàn)接口控制器(PCA82C250),它負(fù)責(zé)TTL的CAN總線(xiàn)信號(hào)到符合ISO 11898標(biāo)準(zhǔn)的CAN總線(xiàn)信號(hào)的轉(zhuǎn)換;2片高速數(shù)字隔離器(ADuM1410),它實(shí)現(xiàn)CAN總線(xiàn)控制器的數(shù)字信號(hào)與CAN總線(xiàn)接口控制器的數(shù)字信號(hào)的隔離。另外,板卡還集成了電平轉(zhuǎn)換芯片(TXS0108EPWR)、隔離電源模塊、EEPROM(93LC56)配置芯片、Flash存儲(chǔ)器(EPCS16)、狀態(tài)指示燈和JTAG/AS下載座等。
4 軟件設(shè)計(jì)
軟件設(shè)計(jì)思想:
CAN通信分為兩種模式:基本模式和擴(kuò)展模式,擴(kuò)展模式較為復(fù)雜,本文以基本模式為范例講述CAN的通信流程。
軟件從整體上分為:初始化,發(fā)送和接收三個(gè)部分。
注意一些寄存器只在PeliCAN 模式有效控制寄存器就僅在BasicCAN 模式里有效而且一些寄存器是只讀的或只寫(xiě)的還有一些只能在復(fù)位模式中訪(fǎng)問(wèn)。
4.1 初始化。SJA1000的初始化只有在復(fù)位模式下才可以進(jìn)行。芯片的初始化包括工作方式的設(shè)定、芯片的接收屏蔽寄存器(AMR)設(shè)置和芯片的接收代碼寄存器(ACR)的設(shè)置、芯片的總線(xiàn)時(shí)序寄存器的設(shè)置、芯片的輸出模式寄存器和芯片的中斷寄存器的設(shè)置等。初始化設(shè)置完成,需要設(shè)定SJA1000芯片進(jìn)入工作模式,然后就可以進(jìn)行正常的通訊。芯片的初始化步驟如下:(1)關(guān)閉中斷,進(jìn)入復(fù)位模式;(2)配置接收屏蔽寄存器(AMR)和配置接收代碼寄存器(ACR);(3)配置波特率;(4)輸出寄存器的配置(建議選擇開(kāi)開(kāi)漏輸出);(5)配置basican模式,關(guān)閉CLKOUT輸出;(6)打開(kāi)數(shù)據(jù)溢出中斷、錯(cuò)誤中斷、發(fā)送中斷和接收中斷(中斷寄存器);(7)進(jìn)入工作模式。
4.2 發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)的流程相對(duì)簡(jiǎn)單主要是配置設(shè)備的ID,發(fā)送數(shù)據(jù)長(zhǎng)度,然后把需要發(fā)送數(shù)據(jù)放到buffer即可,(表1為發(fā)送區(qū)列表)發(fā)送數(shù)據(jù)流程如下:(1)首先判斷上次發(fā)送數(shù)據(jù)是否完成;(2)判斷發(fā)送緩沖區(qū)是否鎖定;(3)如果數(shù)據(jù)發(fā)送完成并且發(fā)送緩沖區(qū)沒(méi)有鎖定;(4)啟動(dòng)發(fā)送。
4.3 接收數(shù)據(jù)
(1)判斷中斷寄存器是否有接收中斷;(2)如果有接收中斷則判斷狀態(tài)寄存器是否有數(shù)據(jù);(3)狀態(tài)寄存器中有數(shù)據(jù)那么判斷報(bào)文是否有效;(4)如果有效,那么從接收buffer中獲取接收數(shù)據(jù)的長(zhǎng)度和數(shù)據(jù)屬于遠(yuǎn)程幀還是數(shù)據(jù)幀,然后開(kāi)始接收數(shù)據(jù);(5)接收數(shù)據(jù)完成清buffer,以便下次接收數(shù)據(jù)。
結(jié)語(yǔ)
本文以使用SJA1000作為CAN通信的控制芯片進(jìn)行數(shù)據(jù)發(fā)送和接收,在基本模式下滿(mǎn)足了通信的需要并且滿(mǎn)足了對(duì)于CAN通信參數(shù)的設(shè)置,在效率測(cè)試中可以實(shí)現(xiàn)1ms周期接收數(shù)據(jù)64小時(shí)不丟包。通過(guò)搭建的測(cè)試界面,不但大大地方便了通信的調(diào)試,而且驗(yàn)證了邏輯功能以及驅(qū)動(dòng)和動(dòng)態(tài)庫(kù)的可靠性。
參考文獻(xiàn)
[1]郭發(fā)東.P89V51RD2與SJA1000實(shí)現(xiàn)CAN節(jié)點(diǎn)實(shí)例[J].山東科學(xué),2006.