姚宇陽 黃志堅 蔡鵬
【摘 要】CAN是控制器局域網(wǎng)的簡稱,是德國Bosch公司為解決現(xiàn)在汽車中眾多測量控制部件之間的數(shù)據(jù)交換問題而開發(fā)的一種數(shù)據(jù)通信總線。本文主要介紹了基于SJA1000的雙CAN通訊實現(xiàn),通過硬件與軟件的設(shè)計,在keil 5中編寫程序、下載、運行,進而實現(xiàn)雙CAN通訊及控制。
【關(guān)鍵詞】CAN總線;SJA1000;數(shù)據(jù)通信
中圖分類號: TN859 文獻標識碼: A文章編號: 2095-2457(2019)04-0028-002
DOI:10.19694/j.cnki.issn2095-2457.2019.04.011
Communication Implementation of Double CAN Transceiver Based on SJA1000
YAO Yu-yang HUANG Zhi-jian CAI Peng
(College of Electornic & Information Engineering,Suzhou Vocational University,Suzhou Jiangsu 215021)
【Abstract】CAN is the abbreviation of controller local area network (LAN), which is a data communication bus developed by Bosch Company to solve the problem of data exchange between many measurement and control parts in automobile.This paper mainly introduces the realization of dual can communication based on SJA1000.Through the design of hardware and software,write program in keil5,download,run,and then achieve communication control.
【Key words】CAN bus;SJA1000
0 引言
CAN控制器是一種獨立控制器,用于移動目標和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制,全稱為Controller Area Network,即控制器局域網(wǎng).CAN是國際上應(yīng)用最廣泛的現(xiàn)場總線之一,它在通信能力、可靠性、實時性、靈活性、易用性以及傳輸距離方面有很好的優(yōu)勢。起初,CAN主要用于解決汽車內(nèi)部信號連接的問題;如今,其應(yīng)用范圍已擴展到了機械工業(yè)、交通工業(yè)、醫(yī)療設(shè)備、建筑、環(huán)境控制等等。本課題使用STM32F107VC單片機編寫程序,實現(xiàn)CAN總線中簡單的通訊,達到雙CAN遠程通信控制的目的。
1 理論分析
CAN模塊是一個通信控制器,其支持2.0A與2.0B協(xié)議,同時支持的類型有標準數(shù)據(jù)幀、擴展數(shù)據(jù)幀、遠成幀、出錯幀、過載幀和空閑幀。目前CAN總線器件有兩大類:一是獨立的CAN控制器,如82C200,SJA1000;另一類是帶有芯片CAN的微控制器,如P8XC582。
本課題使用獨立CAN控制器SJA1000,SJA1000有兩種工作模式:基本模式和增強模式。在基本模式下,SJA1000只可以收發(fā)標準數(shù)據(jù)幀,并且不能修改錯誤報警的極限值;而在增強模式下,SJA1000不僅可以接收標準數(shù)據(jù)幀,還可以接收擴展數(shù)據(jù)幀,也可以修改錯誤報警的極限值[1]。
為簡化編程,采用CAN的基本模式,即上電后直接使用。通過使用軟件編程、下載進而實現(xiàn)通訊功能。
在使用前,還需要對SJA1000收發(fā)器進行初始化,收發(fā)報文的處理以及對節(jié)點脫離總線的檢測與處理等等。同時SJA1000需要進行加電自檢,通過自發(fā)自收一組報文來判斷控制節(jié)點是否處于總線上。
2 硬件部分
硬件部分結(jié)構(gòu)圖如圖1,CPU類型為STM32F107VC,STM32F107VC是意法半導體推出全新STM32互連型(Connectivity)系列微控制器中的一款性能較強產(chǎn)品,此芯片集成了各種高性能工業(yè)標準接口,且STM32不同型號產(chǎn)品在引腳和軟件上具有完美的兼容性,可以輕松適應(yīng)更多的應(yīng)用。
SJA1000一種獨立的CAN 控制器,一般用于區(qū)域網(wǎng)絡(luò)控制,它的材料為PHILIPS半導體且PCA82C200CAN 控制器BasicCAN的替代產(chǎn)品,它增加了一種新的工作模式PeliCAN, 這種模式支持具有很多新特性的CAN 2.0B協(xié)議。
LED驅(qū)動芯片采用CH452。CH452是數(shù)碼管顯示驅(qū)動和鍵盤掃描控制芯片,內(nèi)置時針振蕩電路,可以動態(tài)驅(qū)動八位數(shù)碼管及64鍵的鍵盤掃描。CH452通過可以級聯(lián)的四線串行借口與單片機交換數(shù)據(jù),并且可以對單片機提供上電復(fù)位信號。
CAN通信模式采用自回環(huán)模式,包括CPU內(nèi)核功能測試,位綁定,特權(quán)模式。CPU調(diào)試使用方法包含中斷控制器即中斷喚醒低功耗,IRQ通道配置,中斷優(yōu)先級,中斷向量表重定位低功耗測試(STANDBY模式,STOP模式)[2]。
CPU驅(qū)動電源為3.3V,SJA1000驅(qū)動電源為5V,同時一個芯片的數(shù)據(jù)輸出引腳和另一個芯片的數(shù)據(jù)接收引腳采用3.3V和1k的上拉電路,引腳上拉可以保證數(shù)據(jù)傳輸?shù)目煽啃?,同時消除部分干擾信號。
如圖1所示,CPU(STM32F107VC)通過CAN1、CAN2、SJA1000、上拉電路發(fā)送信息,引腳J7是連接插針,可以實現(xiàn)線路的互通,CPU接收信息后經(jīng)過H與L兩條通道在兩個CAN通信模塊之間實現(xiàn)互相的調(diào)用。
3 軟件部分
軟件部分結(jié)構(gòu)圖如圖2,軟件部分主要包括初始化、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收三部分。
SJA1000初始化只有在復(fù)位模式下才可以進行。初始化包括工作方式、接收屏蔽寄存器(AMR)和接收代碼寄存器和中斷寄存器(ACR)、總線時序寄存器、輸出模式寄存器和中斷寄存器的設(shè)置等。
發(fā)送部分當復(fù)位鍵(reset)按下后,再通過key1與key2按鍵由GPIO口傳送數(shù)據(jù),通道為can的1H與2H,1L與2L間。最后接收數(shù)據(jù),LED燈點亮即可表明實現(xiàn)了雙CAN數(shù)據(jù)通信。
SJA1000提供了兩種數(shù)據(jù)操作模式,中斷模式和狀態(tài)查詢模式。由于查詢模式需占用大量的CPU內(nèi)存,是實時要求較高的自動化儀表中常用中斷方式,因此采用中斷模式。通訊模塊的程序包括SJA1000的初始化、節(jié)點自測、通訊波特率偵測程序。通訊模塊的中斷處理程序包括錯誤處理子程序、發(fā)送接收、放棄發(fā)送子程序等[3]。
4 結(jié)束語
本文主要講述了利用SJA1000芯片實現(xiàn)雙CAN控制器簡單的通訊,即CAN1、CAN2間互相傳送接收數(shù)據(jù)從而實現(xiàn)通信操控。通過研究了解了基于SJA1000收發(fā)器的雙CAN通信的硬件配置,軟件配置,實驗結(jié)果驗證了理論分析。學校在目前的總線課程教學過程中,主要是基于目前實驗室現(xiàn)有的profibubus總線開展,本實驗為后續(xù)開展CAN總線教學打下了一定的基礎(chǔ)。
【參考文獻】
[1]郭丹丹、楊瀛陸,基于SJA1000的CAN通信,《中國新技術(shù)新產(chǎn)品》,2015.08.
[2]來清民,手把手教你學CAN總線[M].北京航空航天大學出版社,2010.
[3]邵玉華,基于SJA1000的CAN總線通信系統(tǒng)的設(shè)計,《鐵道通信信號》.