<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89C51單片機(jī)的CAN/LIN網(wǎng)關(guān)設(shè)計(jì)

          基于AT89C51單片機(jī)的CAN/LIN網(wǎng)關(guān)設(shè)計(jì)

          作者: 時(shí)間:2011-05-27 來源:網(wǎng)絡(luò) 收藏

          引言

          現(xiàn)場總線技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)控制中,尤其是(Controler Area Nerwork)總線由于具有可靠性高、成本低、容易實(shí)現(xiàn)等優(yōu)點(diǎn),在現(xiàn)場總線實(shí)際工程應(yīng)用中占有了較大份額。伴隨著總線技術(shù)發(fā)展,(Local Interconnect Network)總線作為一種低成本串行通信網(wǎng)絡(luò),其目標(biāo)是為現(xiàn)有現(xiàn)場總線控制網(wǎng)絡(luò)提供輔助功能,特別是汽車控制網(wǎng)絡(luò)中總線應(yīng)用,因此必然存在一個(gè)總線和其它總線通信接口實(shí)現(xiàn),本文以總線為例,提出了一種基于CC03單片機(jī)-方案。

          LIN是一種低成本串行通訊網(wǎng)絡(luò)用于實(shí)現(xiàn)汽車中分布式電子系統(tǒng)控制,LIN目標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN總線)提供輔助功能,因此LIN總線是一種輔助總線網(wǎng)絡(luò),在不需要CAN總線帶寬和多功能場合比如智能傳感器和制動(dòng)裝置之間通訊,使用LIN總線可大大節(jié)省成本。LIN通訊是基于SCI(UART)數(shù)據(jù)格式,采用單主控制器/多從設(shè)備模式,僅使用一根12V信號(hào)總線和一個(gè)無固定時(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)框圖

          CC03是Atmel公司一款內(nèi)嵌CAN控制器8位單片機(jī)。本設(shè)計(jì)中以CC03單片機(jī)為基礎(chǔ),選擇TJA1020作為LIN總線收發(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引腳并不是直接與PCA82C250ATXD和RXD引腳相連,而是通過高速光耦6N137相連(圖3)。這樣很好實(shí)現(xiàn)了總線上各個(gè)節(jié)點(diǎn)間電氣隔離,光耦部分電路所采用兩個(gè)電源VCC和VDD必須是完全隔離,否則采用光耦也就失去了意義。

          網(wǎng)關(guān)軟件設(shè)計(jì)

          網(wǎng)關(guān)軟件設(shè)計(jì)主要包括主控程序模塊和CAN模塊軟件設(shè)計(jì)以及LIN模塊軟件設(shè)計(jì),CAN模塊軟件設(shè)計(jì)主要有三個(gè)子函數(shù),一個(gè)是CAN初始化CAN_INIT(),另外兩個(gè)是CAN_RE_ISR()和CAN_SEND()。CAN_INIT()主要是設(shè)置CAN通信波特率和CAN基本設(shè)置,波特率可以根據(jù)撥碼開關(guān)值來設(shè)定,在系統(tǒng)上電之后通過自檢程序自動(dòng)掃描,查預(yù)先設(shè)定好波特率表格,設(shè)定CAN通信波特率。

          CAN_RE_ISR()負(fù)責(zé)信息接收和處理,CAN_SEND()負(fù)責(zé)信息發(fā)送。

          LIN模塊軟件設(shè)計(jì)主要包括幾個(gè)文件:LIN.H、LIN.C、TEMR0.H TEMRO.C,其中LIN.H、LIN.C分別實(shí)現(xiàn)LIN規(guī)范設(shè)定以及UART波特率設(shè)定和LIN信息接收與發(fā)送,TEMR0.H TEMRO.C用于產(chǎn)生LIN總線波特率。主控程序設(shè)計(jì)主要完成整個(gè)網(wǎng)關(guān)信息轉(zhuǎn)發(fā)功能,當(dāng)CAN接收中斷發(fā)生時(shí),置LIN發(fā)送標(biāo)志位,準(zhǔn)備轉(zhuǎn)發(fā)CAN信息到LIN網(wǎng)絡(luò);同樣,當(dāng)LIN接收中斷生時(shí),置CAN發(fā)送標(biāo)志位,準(zhǔn)備發(fā)送LIN信息到CAN網(wǎng)絡(luò)。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();