龍芬
摘要:隨著智能制造及CAN總線的迅猛發展,急需大量掌握現場總線的技術人才,而大多數高職院校的單片機實驗設備落后,教學內容需要更新。為解決這一問題,設計了基于CAN總線的單片機實驗教學系統,該設計以SJA1000為總線控制器,以TJA1040作為通信模塊的總線收發器,可實現CAN總線報文的點到點、一點到多點的接收發送。結果表明,通過本教學系統的學習,能提高學生對CAN總線技術的設計與開發能力。
關鍵詞:CAN總線;51單片機;SJA1000;TJA1040
中圖分類號:TP368.2 文獻標識碼:A 文章編號:1009-3044(2019)06-0139-03
Design of MCU Experiment Teaching System Based on CAN Bus
LONG Fen
(Institute of Technology of XianNing Vocational Technical College, XianNing 437100, China)
Abstract:With the rapid development of intelligent manufacturing and CAN bus, there is an urgent need to master a lot of technical personnel of CAN bus, and most of the higher vocational colleges MCU experimental equipment backward, teaching content needs to be updated. In order to solve this problem, a experiment teaching system based on CAN bus is designed. The design uses SJA1000 as the bus controller and TJA1040 as the bus transceiver of the communication. It can send and receive of the point-to-point, point to many point. The results show that, through the study of this teaching system, CAN bus technology can improve students' design and development ability.
Key words: CAN bus; MCS-51; SJA1000; TJA1040
隨著智能制造的發展,CAN現場總線得以迅速發展,目前已經廣泛應用于汽車、工業控制、安防監控、工程機械、樓宇自動化等領域,社會對掌握現場總線的人才需求量很大。作為培養高級技術型人才的高職院校,單片機的教學主要還是停留在51系列,通信部分主要學習的是串行通信,由于沒有合適的實驗設備儀器,基本上沒有開設CAN現場總線的課程。因此,以CAN現場總線為基礎的實驗設備的開發和引進是非常有必要的。
1 CAN總線概述
CAN(Controller Area Network)即控制器局域網絡,是由德國Bosch公司為汽車應用而開發的多主機局域網絡,最初主要應用于汽車的監測和控制[1]。作為通信總線的一種,CAN總線具有以下幾個突出優點:可靠性高、功能完善、成本較低,且具有良好的實時性和靈活性。目前,CAN已經形成國際標準,最遠傳輸距離可達10km,數據傳輸速率高達1Mbit/s[1]。由于CAN總線的突出特性,Intel、NXP、Siemens、Freescale等芯片生產廠商都推出了獨立的CAN控制芯片,或者帶有CAN控制器的MCU芯片。
2 CAN總線與51系列單片機硬件電路設計
利用高職院校現有的實驗教學條件,設計了一款基于CAN總線的單片機實訓系統。系統框圖如圖1所示,整個電路主要由5部分構成:微控制器STC85C52、CAN控制器SJA1000、CAN收發器TJA1040、DC/DC電源隔離模塊、高速光電耦合器6N137。
SJA1000是NXP半導體公司的一種獨立CAN控制器,可以在Basic CAN、PeliCAN兩種協議下工作:Basic CAN支持CAN 2.0A協議,PeliCAN工作方式支持具有很多新特性的CAN 2.0B協議[1]。工作方式通過時鐘分頻寄存器中的CAN方式位來選擇,上電復位默認工作方式是BasicCAN方式[2]。
TJA1040是CAN驅動器和物理總線之間的接口,速度可達1Mbit/s。TJA1040可以為總線提供差動的發送功能,為CAN控制器提供差動的接收功能,有良好的電磁兼容性,在不上電狀態下有理想的無源性能,可以進行低功耗管理,支持遠程喚醒功能[2]。
2.1 CAN控制電路的設計
STC89C52通過控制SJA1000實現數據的收發功能。如圖2所示為CAN控制器電路,單片機的P0口與SJA1000的AD0~AD7相連,單片機的P2.7連接到SJA1000的CS腳,當P2.7輸出為低電平時SJA1000被選中,SJA1000的RD、WR、ALE、INT引腳分別與單片機的第17腳、18腳、30腳、12腳。單片機可通過中斷方式訪問SJA1000。
2.2 DC/DC電源隔離電路的設計
在實際應用中,供電電源可能存在干擾信號多、電壓波動大等缺點。為了抑制干擾,提高通信的可靠性,CAN總線電源必須采用DC/DC電源隔離電路。電路如圖3所示,電源隔離模塊我們選用B0505D-1W。為了滿足其輸出最小負載不能小于滿負載的20%,我們在輸出端并聯了兩個120Ω的電阻[3]。
2.3 光電隔離電路的設計
為了實現總線上各CAN節點的電氣隔離,增強CAN總線的抗干擾能力,SJA1000的TX0、RX0引腳通過兩個高速光耦6N137與TJA1040的TXD、RXD引腳相連。光電隔離電路如圖4所示,光耦部分電路所采用的兩個電源VCC和CAN-V必須完全隔離,否則光耦也就失去了意義[4]。
2.4 CAN收發器電路的設計
為了保護TJA1040免受過流的沖擊,我們利用電阻的限流作用,在TJA1040的CANH和CANL引腳處接了一個5Ω的電阻,然后再與CAN總線相連,具體的收發電路如圖5所示。
3 雙節點CAN總線通信系統軟件設計
下面我們以雙節點CAN總線通信實驗為例,說明單片機教學系統軟件設計的流程。設計的實驗內容為:用兩塊CAN總線實訓板,實訓板A每隔一定時間將連接在P1口的按鍵狀態發送給實訓板B;實訓板B接收到A發送過來的數據后,通過LED燈顯示出來,并通過CAN轉232串口程序,把接收到的數據上傳到PC機上[5]。
通過分析實驗內容,節點A只需通過CAN總線發送數據,節點B不僅要接收PC機發來的命令,執行對CAN總線的操作,還需要在CAN總線的其他節點有報文傳來的時候,接收報文并發給PC機。其軟件流程如圖6所示。
4 小結
本系統以51單片機為核心,對基于CAN總線的單片機實驗板進行了詳細的設計,形成了CAN實驗的最小系統,配置了基本的外圍電路,實現了各個節點之間的通信及節點與PC機的通信,使學生可以通過實際操作掌握CAN總線的基本設計與開發技能。本系統還可以進行功能擴展,開發出可以實現不同實驗的功能模塊,以適應不同專業的學習要求,為學生充分掌握CAN現場總線提供更好的技術支持。
參考文獻:
[1] 牛躍聽,周立功.從入門到實踐CAN總線嵌入式開發[M].北京:北京航空航天大學出版社,2012(1):45-52
[2] 蔣榮.基于CAN總線的教學實驗系統研究和開發[D].東南大學,2006:18-33
[3] 張明軒,胡卓敏.基于STC89C51的CAN總線點對點通信模塊設計[J].新特器件應用,2010(6):1-4
[4] 謝桂波.基于SPI的CAN總線控制器與MCS-51單片機的接口設計[J].電子設計應用,2010(1):50-52
[5] 錢震宇,肖昌漢,李志新.基于51單片機的CAN總線轉串口通信卡的設計與實現[J].船電技術,2011(12):32-34
【通聯編輯:王力】