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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM控制器LPC2294的CAN/PCI智能通信卡設(shè)計(jì)

          基于ARM控制器LPC2294的CAN/PCI智能通信卡設(shè)計(jì)

          作者: 時(shí)間:2012-11-13 來源:網(wǎng)絡(luò) 收藏


            2.2 通信卡的運(yùn)行流程

            系統(tǒng)上電復(fù)位后,系統(tǒng)將首先運(yùn)行初始化程序。的初始化主要是初始化全局接收和發(fā)送緩沖區(qū)以及清除狀態(tài)寄存器中的值等;PCI9030的初始化主要是從EEPROM中加載初始數(shù)據(jù)以進(jìn)行初始設(shè)置,CAN初始化包括設(shè)置模式、總線時(shí)序、中斷使能、標(biāo)識(shí)符表格,這些設(shè)置均可通過給CAN芯片的內(nèi)部寄存器賦值來實(shí)現(xiàn)。初始化成功之后,通信卡將進(jìn)行自檢,并在確定啟動(dòng)正常之后進(jìn)入工作狀態(tài)。這一部分的程序流程圖如圖5的A部分所示。

          系統(tǒng)進(jìn)入工作狀態(tài)后(圖5中的B部分)將等待中斷產(chǎn)生,如有,則進(jìn)人相應(yīng)的中斷服務(wù)程序。如果是數(shù)據(jù)傳輸,則轉(zhuǎn)入數(shù)據(jù)傳輸子程序,數(shù)據(jù)傳輸子程序主要包括3個(gè)部分:

            (1) 下行數(shù)據(jù)傳輸

            下行數(shù)據(jù)傳輸指的是上位機(jī)向CAN網(wǎng)段發(fā)送數(shù)據(jù)。即上位機(jī)把數(shù)據(jù)寫入到“雙口RAM”中以等待將數(shù)據(jù)取走。將上位機(jī)發(fā)來的數(shù)據(jù)暫時(shí)存放在全局?jǐn)?shù)據(jù)收發(fā)緩存區(qū)(GRTB)中,然后檢查匹配的目的段是否有空閑的發(fā)送區(qū)(CANSR中的TBS位為1),若有則將數(shù)據(jù)分別寫入每個(gè)網(wǎng)段的發(fā)送區(qū)并發(fā)送。如果匹配網(wǎng)段的3個(gè)發(fā)送緩沖器全為忙,則循環(huán)等待,直到有一個(gè)以上的發(fā)送緩沖器為空再進(jìn)行發(fā)送。

            (2) 上行數(shù)據(jù)傳輸

            上行數(shù)據(jù)傳輸指的是CAN網(wǎng)段向上位機(jī)發(fā)送數(shù)據(jù)。當(dāng)程序檢測(cè)到某個(gè)網(wǎng)段X的CAN中斷/捕獲寄存器(CANICR)中的接收中斷位(RI)置位后,它將進(jìn)入接收中斷服務(wù)程序。此時(shí)程序?qū)⒌綐?biāo)識(shí)符表格中查找匹配的標(biāo)識(shí)符,CAN控制器會(huì)在接收時(shí)自動(dòng)搜索接收濾波器的RAM中的表格并進(jìn)行匹配,只要找到匹配值則產(chǎn)生接收中斷并通知用戶保留信息,否則自動(dòng)放棄這一幀信息而不產(chǎn)生接收中斷,如果它只找到一個(gè)匹配值(源網(wǎng)段中),則說明此數(shù)據(jù)是只傳輸給上位機(jī)的,此時(shí)程序會(huì)將接收到的數(shù)據(jù)信息按上面介紹的格式保存到全局?jǐn)?shù)據(jù)收發(fā)緩沖區(qū)(GRTB),以等待LPC2294將其發(fā)送給EPlC6的“雙口RAM”,以便上位機(jī)讀取。

            (3) 平行數(shù)據(jù)傳輸

            當(dāng)出現(xiàn)接收中斷時(shí),程序也會(huì)到標(biāo)識(shí)符表格中查找匹配的標(biāo)識(shí)符,如果找到一個(gè)以上的匹配值,則說明還有其他網(wǎng)段需要這些數(shù)據(jù)。此時(shí)程序會(huì)將接收到的數(shù)據(jù)信息讀入到全局?jǐn)?shù)據(jù)收發(fā)緩沖區(qū)(GRTB)中去,然后把數(shù)據(jù)發(fā)往匹配網(wǎng)段。

            在調(diào)用相應(yīng)的數(shù)據(jù)傳輸子程序后,程序?qū)⒅脴?biāo)志位并返回。如果是其它一些中斷,則轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。若沒有中斷產(chǎn)生,則檢查PC機(jī)是否有參數(shù)配置需要,最后進(jìn)行系統(tǒng)自檢。本系統(tǒng)會(huì)在系統(tǒng)閑暇時(shí)進(jìn)行自檢并上傳狀態(tài)報(bào)表,這樣可以使用戶隨時(shí)了解通信卡的工作情況,對(duì)于提高系統(tǒng)的工作可靠性以及出現(xiàn)故障時(shí)的查錯(cuò)效率具有重要的意義。

            2.3 上位機(jī)程序設(shè)計(jì)

            本設(shè)計(jì)中,上位機(jī)軟件設(shè)計(jì)程序主要包括通信卡底層驅(qū)動(dòng)程序和用戶服務(wù)程序。其設(shè)計(jì)框圖圖6所示。

          通信卡底層驅(qū)動(dòng)程序的功能主要是配置CAN總線接口、收發(fā)CAN總線上的數(shù)據(jù)、對(duì)CAN總線進(jìn)行實(shí)時(shí)監(jiān)測(cè)、執(zhí)行用戶程序的收發(fā)命令等。CAN總線和PCI總線錯(cuò)誤均采用中斷處理,并通過事件(Event)內(nèi)核對(duì)象直接通知給用戶程序。

            PCI的用戶服務(wù)程序則通過PCI通信程序與系統(tǒng)PCIDI (PCI device interface)進(jìn)行通信,并由系統(tǒng)完成PCI協(xié)議的處理與數(shù)據(jù)傳輸。用戶可以在設(shè)計(jì)好的上位機(jī)界面上方便的設(shè)定節(jié)點(diǎn)參數(shù),查詢節(jié)點(diǎn)狀態(tài)信息。

            3 結(jié)束語

            本文設(shè)計(jì)的CAN/PCI采用功能強(qiáng)大的ARM芯片LPC2294作為核心控制芯片,因此,該通信卡能夠同時(shí)處理4路CAN總線向上位機(jī)的數(shù)據(jù)傳輸。對(duì)于CAN網(wǎng)段之間的通信需求,本通信卡也能夠很好地滿足,并可使工業(yè)現(xiàn)場(chǎng)的CAN網(wǎng)絡(luò)組網(wǎng)更為簡(jiǎn)單。


          上一頁 1 2 3 下一頁

          關(guān)鍵詞: ARM控制器 LPC2294 智能通信卡

          評(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); })();