摘要: 本文以AT89C51CC03單片機(jī)為基礎(chǔ),提出了一種CAN—LIN網(wǎng)關(guān)的解決方案,并給出了其硬件設(shè)計(jì)電路和軟件設(shè)計(jì)。
關(guān)鍵詞: AT89C51CC03;CAN總線;LIN總線;網(wǎng)關(guān)
引言
現(xiàn)場(chǎng)總線技術(shù)已經(jīng)廣泛的應(yīng)用于工業(yè)控制中,尤其是CAN(Controler Area Nerwork)總線由于具有可靠性高、成本低、容易實(shí)現(xiàn)等優(yōu)點(diǎn),在現(xiàn)場(chǎng)總線的實(shí)際工程應(yīng)用中占有了較大的份額。伴隨著總線技術(shù)的發(fā)展,LIN(Local Interconnect Network)總線作為一種低成本的串行通信網(wǎng)絡(luò),其目標(biāo)是為現(xiàn)有的現(xiàn)場(chǎng)總線控制網(wǎng)絡(luò)提供輔助功能,特別是汽車控制網(wǎng)絡(luò)中的總線應(yīng)用,因此必然存在一個(gè)LIN總線和其它總線的通信接口實(shí)現(xiàn),本文以CAN總線為例,提出了一種基于AT89C51CC03單片機(jī)的CAN-LIN網(wǎng)關(guān)設(shè)計(jì)方案。
LIN是一種低成本的串行通訊網(wǎng)絡(luò)用于實(shí)現(xiàn)汽車中的分布式電子系統(tǒng)控制,LIN 的目標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN 總線)提供輔助功能,因此LIN總線是一種輔助的總線網(wǎng)絡(luò),在不需要CAN 總線的帶寬和多功能的場(chǎng)合比如智能傳感器和制動(dòng)裝置之間的通訊,使用LIN 總線可大大節(jié)省成本。LIN通訊是基于SCI(UART)數(shù)據(jù)格式,采用單主控制器/多從設(shè)備的模式,僅使用一根12V 信號(hào)總線和一個(gè)無(wú)固定時(shí)間基準(zhǔn)的節(jié)點(diǎn)同步時(shí)鐘線。
網(wǎng)關(guān)硬件設(shè)計(jì)
整個(gè)網(wǎng)關(guān)模塊包括LIN接口、CAN接口、CAN波特率設(shè)置、LIN波特率設(shè)置、電源模塊、狀態(tài)燈六個(gè)子模塊(圖1)。
圖1 系統(tǒng)結(jié)構(gòu)框圖
AT89C51CC03是Atmel公司的一款內(nèi)嵌CAN控制器的8位單片機(jī)。本設(shè)計(jì)中以AT89C51CC03單片機(jī)為基礎(chǔ),選擇TJA1020作為L(zhǎng)IN總線收發(fā)器,采用單片機(jī)的UART接口,在CAN模塊設(shè)計(jì)部分選擇PCA82C250作為CAN總線收發(fā)器,具體的電路連接如圖2、圖3、圖4所示。
圖2 單片機(jī)電路
圖3 CAN接口電路
圖4 LIN接口電路
在電路中我們?cè)O(shè)計(jì)了一個(gè)5位的撥碼開關(guān),由于在各個(gè)不同的工作系統(tǒng)中,LIN總線和CAN總線的傳輸是不一樣的,這就需要改換軟件,因此在此設(shè)計(jì)中用一個(gè)5位的撥碼開關(guān)用于波特率設(shè)置,三位用于LIN波特率設(shè)置,兩位用于CAN波特率設(shè)置。同時(shí)為了展示網(wǎng)關(guān)的工作狀態(tài),特意設(shè)計(jì)了工作指示燈,在接收和發(fā)送信號(hào)時(shí)分別以一定的頻率閃爍,當(dāng)有故障出現(xiàn)時(shí),兩個(gè)燈同時(shí)點(diǎn)亮。
為增強(qiáng)CAN節(jié)點(diǎn)的抗干擾能力,單片機(jī)的TXDC和RXDC引腳并不是直接與PCA82C250A的TX