時間:2007-07-03 11:56:00來源:shixiang
 圖1 系統結構框圖[/align]
    AT89C51CC03是Atmel公司的一款內嵌CAN控制器的8位單片機。本設計中以AT89C51CC03單片機為基礎,選擇TJA1020作為LIN總線收發器,采用單片機的UART接口,在CAN模塊設計部分選擇PCA82C250作為CAN總線收發器,具體的電路連接如圖2、圖3、圖4所示。
[align=center]
圖1 系統結構框圖[/align]
    AT89C51CC03是Atmel公司的一款內嵌CAN控制器的8位單片機。本設計中以AT89C51CC03單片機為基礎,選擇TJA1020作為LIN總線收發器,采用單片機的UART接口,在CAN模塊設計部分選擇PCA82C250作為CAN總線收發器,具體的電路連接如圖2、圖3、圖4所示。
[align=center] 圖2 單片機電路
圖2 單片機電路
 圖3 CAN接口電路
圖3 CAN接口電路
 圖4 LIN接口電路[/align]
    在電路中我們設計了一個5位的撥碼開關,由于在各個不同的工作系統中,LIN總線和CAN總線的傳輸是不一樣的,這就需要改換軟件,因此在此設計中用一個5位的撥碼開關用于波特率設置,三位用于LIN波特率設置,兩位用于CAN波特率設置。同時為了展示網關的工作狀態,特意設計了工作指示燈,在接收和發送信號時分別以一定的頻率閃爍,當有故障出現時,兩個燈同時點亮。 
    為增強CAN節點的抗干擾能力,單片機的TXDC和RXDC引腳并不是直接與PCA82C250A的TXD和RXD引腳相連,而是通過高速光耦6N137相連(圖3)。這樣很好的實現了總線上各個節點間的電氣隔離,光耦部分電路所采用的兩個電源VCC和VDD必須是完全隔離的,否則采用光耦也就失去了意義。 
網關軟件設計 
    網關的軟件設計主要包括主控程序模塊和CAN模塊軟件設計以及LIN模塊軟件設計,CAN模塊軟件設計主要有三個子函數,一個是CAN初始化CAN_INIT(),另外兩個是CAN_RE_ISR()和CAN_SEND()。CAN_INIT()主要是設置CAN通信的波特率和CAN基本設置,波特率可以根據撥碼開關的值來設定,在系統上電之后通過自檢程序自動掃描,查預先設定好的波特率表格,設定CAN通信波特率。
CAN_RE_ISR()負責信息的接收和處理,CAN_SEND()負責信息發送。 
    LIN模塊軟件設計主要包括幾個文件:LIN.H、LIN.C、TEMR0.H TEMRO.C,其中LIN.H、LIN.C分別實現LIN規范的設定以及UART波特率的設定和LIN信息的接收與發送,TEMR0.H TEMRO.C用于產生LIN總線波特率。主控程序設計主要完成整個網關的信息轉發功能,當CAN接收中斷發生時,置LIN發送標志位,準備轉發CAN信息到LIN網絡;同樣,當LIN接收中斷生時,置CAN發送標志位,準備發送LIN信息到CAN網絡。 
    整個軟件以C51編寫,并利用KEIL公司的仿真軟件進行軟件調試,最后將完整程序燒寫到AT89C51CC01的flash空間。
結語 
    本文提出了基于AT89C51CC01單片機的CAN-LIN網關設計,解決了現場總線控制中的CAN總線控制網絡和LIN總線控制網絡之間的信息傳輸問題,為現場總線的靈活應用提供了基礎。本設計經過現場實驗,實驗結果表明網關運行良好,工作可靠穩定,并已應用到實際工作中。 
參考文獻:
 
1.  TJA1020 LIN 收發器手冊,廣東周立功發展有限公司 
2.  LIN Protocol Implementation on the AT89C51CC03,Atmel公司,4189B-AUTO-04/05
圖4 LIN接口電路[/align]
    在電路中我們設計了一個5位的撥碼開關,由于在各個不同的工作系統中,LIN總線和CAN總線的傳輸是不一樣的,這就需要改換軟件,因此在此設計中用一個5位的撥碼開關用于波特率設置,三位用于LIN波特率設置,兩位用于CAN波特率設置。同時為了展示網關的工作狀態,特意設計了工作指示燈,在接收和發送信號時分別以一定的頻率閃爍,當有故障出現時,兩個燈同時點亮。 
    為增強CAN節點的抗干擾能力,單片機的TXDC和RXDC引腳并不是直接與PCA82C250A的TXD和RXD引腳相連,而是通過高速光耦6N137相連(圖3)。這樣很好的實現了總線上各個節點間的電氣隔離,光耦部分電路所采用的兩個電源VCC和VDD必須是完全隔離的,否則采用光耦也就失去了意義。 
網關軟件設計 
    網關的軟件設計主要包括主控程序模塊和CAN模塊軟件設計以及LIN模塊軟件設計,CAN模塊軟件設計主要有三個子函數,一個是CAN初始化CAN_INIT(),另外兩個是CAN_RE_ISR()和CAN_SEND()。CAN_INIT()主要是設置CAN通信的波特率和CAN基本設置,波特率可以根據撥碼開關的值來設定,在系統上電之后通過自檢程序自動掃描,查預先設定好的波特率表格,設定CAN通信波特率。
CAN_RE_ISR()負責信息的接收和處理,CAN_SEND()負責信息發送。 
    LIN模塊軟件設計主要包括幾個文件:LIN.H、LIN.C、TEMR0.H TEMRO.C,其中LIN.H、LIN.C分別實現LIN規范的設定以及UART波特率的設定和LIN信息的接收與發送,TEMR0.H TEMRO.C用于產生LIN總線波特率。主控程序設計主要完成整個網關的信息轉發功能,當CAN接收中斷發生時,置LIN發送標志位,準備轉發CAN信息到LIN網絡;同樣,當LIN接收中斷生時,置CAN發送標志位,準備發送LIN信息到CAN網絡。 
    整個軟件以C51編寫,并利用KEIL公司的仿真軟件進行軟件調試,最后將完整程序燒寫到AT89C51CC01的flash空間。
結語 
    本文提出了基于AT89C51CC01單片機的CAN-LIN網關設計,解決了現場總線控制中的CAN總線控制網絡和LIN總線控制網絡之間的信息傳輸問題,為現場總線的靈活應用提供了基礎。本設計經過現場實驗,實驗結果表明網關運行良好,工作可靠穩定,并已應用到實際工作中。 
參考文獻:
 
1.  TJA1020 LIN 收發器手冊,廣東周立功發展有限公司 
2.  LIN Protocol Implementation on the AT89C51CC03,Atmel公司,4189B-AUTO-04/05標簽:
                                 
                            
上一篇:傳感器法透濕性測試儀的檢測優勢
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-08-06
2025-07-08
2025-06-30
2025-06-16
2025-06-09
2025-06-06