基于AT89C51單片機的CAN/LIN網關設計
引言
本文引用地址:http://m.butianyuan.cn/article/273493.htm現場總線技術已經廣泛應用于工業(yè)控制中,尤其是CAN(Controler Area Nerwork)總線由于具有可靠性高、成本低、容易實現等優(yōu)點,在現場總線實際工程應用中占有了較大份額。伴隨著總線技術發(fā)展,LIN(Local Interconnect Network)總線作為一種低成本串行通信網絡,其目標是為現有現場總線控制網絡提供輔助功能,特別是汽車控制網絡中總線應用,因此必然存在一個LIN總線和其它總線通信接口實現,本文以CAN總線為例,提出了一種基于AT89C51CC03單片機CAN-LIN網關設計方案。
LIN是一種低成本串行通訊網絡用于實現汽車中分布式電子系統控制,LIN目標是為現有汽車網絡(例如CAN總線)提供輔助功能,因此LIN總線是一種輔助總線網絡,在不需要CAN總線帶寬和多功能場合比如智能傳感器和制動裝置之間通訊,使用LIN總線可大大節(jié)省成本。LIN通訊是基于SCI(UART)數據格式,采用單主控制器/多從設備模式,僅使用一根12V信號總線和一個無固定時間基準節(jié)點同步時鐘線。
網關硬件設計
整個網關模塊包括LIN接口、CAN接口、CAN波特率設置、LIN波特率設置、電源模塊、狀態(tài)燈六個子模塊(圖1)。
圖1 系統結構框圖
AT89C51CC03是Atmel公司一款內嵌CAN控制器8位單片機。本設計中以AT89C51CC03單片機為基礎,選擇TJA1020作為LIN總線收發(fā)器,采用單片機UART接口,在CAN模塊設計部分選擇PCA82C250作為CAN總線收發(fā)器,具體電路連接如圖2、圖3、圖4所示。
圖2 單片機電路
圖3 CAN接口電路
圖4 LIN接口電路
在電路中我們設計了一個5位撥碼開關,由于在各個不同工作系統中,LIN總線和CAN總線傳輸是不一樣,這就需要改換軟件,因此在此設計中用一個5位撥碼開關用于波特率設置,三位用于LIN波特率設置,兩位用于CAN波特率設置。同時為了展示網關工作狀態(tài),特意設計了工作指示燈,在接收和發(fā)送信號時分別以一定頻率閃爍,當有故障出現時,兩個燈同時點亮。
為增強CAN節(jié)點抗干擾能力,單片機TXDC和RXDC引腳并不是直接與PCA82C250ATXD和RXD引腳相連,而是通過高速光耦6N137相連(圖3)。這樣很好實現了總線上各個節(jié)點間電氣隔離,光耦部分電路所采用兩個電源VCC和VDD必須是完全隔離,否則采用光耦也就失去了意義。
網關軟件設計
網關軟件設計主要包括主控程序模塊和CAN模塊軟件設計以及LIN模塊軟件設計,CAN模塊軟件設計主要有三個子函數,一個是CAN初始化CAN_INIT(),另外兩個是CAN_RE_ISR()和CAN_SEND()。CAN_INIT()主要是設置CAN通信波特率和CAN基本設置,波特率可以根據撥碼開關值來設定,在系統上電之后通過自檢程序自動掃描,查預先設定好波特率表格,設定CAN通信波特率。
CAN_RE_ISR()負責信息接收和處理,CAN_SEND()負責信息發(fā)送。
LIN模塊軟件設計主要包括幾個文件:LIN.H、LIN.C、TEMR0.H TEMRO.C,其中LIN.H、LIN.C分別實現LIN規(guī)范設定以及UART波特率設定和LIN信息接收與發(fā)送,TEMR0.H TEMRO.C用于產生LIN總線波特率。主控程序設計主要完成整個網關信息轉發(fā)功能,當CAN接收中斷發(fā)生時,置LIN發(fā)送標志位,準備轉發(fā)CAN信息到LIN網絡;同樣,當LIN接收中斷生時,置CAN發(fā)送標志位,準備發(fā)送LIN信息到CAN網絡。
整個軟件以C51編寫,并利用KEIL公司仿真軟件進行軟件調試,最后將完整程序燒寫到AT89C51CC01flash空間。
結語
本文提出了基于AT89C51CC01單片機CAN-LIN網關設計,解決了現場總線控制中CAN總線控制網絡和LIN總線控制網絡之間信息傳輸問題,為現場總線靈活應用提供了基礎。本設計經過現場實驗,實驗結果表明網關運行良好,工作可靠穩(wěn)定,并已應用到實際工作中。
光耦相關文章:光耦原理
51單片機相關文章:51單片機教程
單片機相關文章:單片機教程
單片機相關文章:單片機視頻教程
單片機相關文章:單片機工作原理
燃氣報警器相關文章:燃氣報警器原理
評論