基于A(yíng)RM控制器LPC2294的CAN/PCI智能通信卡設計

發(fā)布時(shí)間:2015-11-3 14:42    發(fā)布者:designapp
關(guān)鍵詞: ARM , LPC2294
  引言
  LPC2294是PHILIPS公司推出的一款功能強大、超低功耗且具有ARM7TDMI內核的32位微控制器。它具有豐富的片上資源,完全可以滿(mǎn)足一般的工業(yè)控制需要,同時(shí)還可以減少系統硬件設計的復雜度,提高系統的穩定性。
  CAN(“Controller Area Network”)總線(xiàn)控制器局域網(wǎng)是一種能有效支持分布式控制或實(shí)時(shí)控制的串行通信網(wǎng)絡(luò )。CAN總線(xiàn)以其高性能、高可靠性、廉價(jià)等特性,越來(lái)越受到人們的重視和青睞。為了有效的管理工業(yè)現場(chǎng)的CAN節點(diǎn),充分發(fā)揮CAN總線(xiàn)的性能,通信卡的設計與研究十分必要。但目前市場(chǎng)上類(lèi)似產(chǎn)品存在著(zhù)兩點(diǎn)不足。
  首先是一般工業(yè)現場(chǎng)中可能擁有不止1條CAN總線(xiàn),而目前設計的通信卡上的CAN的接口太少,因而會(huì )給設備的集中管理帶來(lái)困難。
  二是目前兩條CAN網(wǎng)段問(wèn)的通信主要通過(guò)一對一CAN總線(xiàn)網(wǎng)橋來(lái)實(shí)現,但這種方式解決不了工業(yè)現場(chǎng)中同時(shí)在幾條CAN網(wǎng)段問(wèn)傳輸數據的需求,也容易導致組網(wǎng)混亂。
  為此,本設計選用的ARM控制器LPC2294內部集成有四路CAN控制器,完全符合CAN規范CAN2.0B標準和ISO11989-1標準。全局驗收過(guò)濾器可識別幾乎所有總線(xiàn)的11位和29位Rx標識符。作為本設計的核心部件,LPC2294的使用能夠很好地解決上述2個(gè)問(wèn)題,它不僅能擔起主控制器的工作,同時(shí)還可作為CAN網(wǎng)絡(luò )的數據傳輸控制器,來(lái)與網(wǎng)絡(luò )中的節點(diǎn)實(shí)現數據交換。
  1 硬件設計方案
  目前計算機的發(fā)展,除了少數專(zhuān)門(mén)的工控機還在使用ISA總線(xiàn)以外,PC機上使用最為普遍的就是PCI總線(xiàn)了。PCI總線(xiàn)是Intel公司推出的一種高性能32/64位PC機局部總線(xiàn),可能同時(shí)支持多組外圍沒(méi)備而不受制于處理器,其數據吞吐量很大(33 MHz總線(xiàn)頻率、32位傳輸時(shí),其峰值可高達132 MB/s),PCI總線(xiàn)依靠其優(yōu)越的性能必將取代ISA總線(xiàn)。因此,本文基于PCI總線(xiàn)來(lái)設計一個(gè)帶有4個(gè)CAN總線(xiàn)網(wǎng)段的智能通信卡。圖1是該通信卡的整體硬件結構圖。
  


  1.1 PCI總線(xiàn)接口的實(shí)現
  PCI總線(xiàn)具有非常嚴格的規范,也具有良好的兼容性。但是PCI總線(xiàn)協(xié)議也比較復雜。本設計選用專(zhuān)用的PCI總線(xiàn)接口芯片PCI9030來(lái)實(shí)現網(wǎng)關(guān)的PCI總線(xiàn)接口。PCI9030是PLX公司開(kāi)發(fā)的低價(jià)格PCI總線(xiàn)從模式接口芯片。該芯片功耗低,符合PCI2.2規范,用戶(hù)設計時(shí)只需考慮局部總線(xiàn)一側的邏輯控制電路和用于配置的外部EEP-ROM,而不必考慮PCI協(xié)議的具體實(shí)現方法,這樣就大大簡(jiǎn)化了設計難度,縮短了開(kāi)發(fā)周期。
  PCI9030要求有一塊EEPROM作為初始化存儲器。在系統加載時(shí),PCI9030先從該EEPROM中加載初始數據,進(jìn)行初始設置,因此,EEP-ROM中的信息是否正確決定了PCI卡的加載和運行是否正常。本設計選用ST93CS56作為PCI9030的初始化存儲器,其結構方案如圖2所示。
  


  1.2 CAN總線(xiàn)接口的實(shí)現
  該通信卡中CAN總線(xiàn)接口部分實(shí)現有以下兩種常用的方法:
  (1) 獨立CAN總線(xiàn)控制芯片實(shí)現
  即采用飛利浦公司的SJA1000獨立CAN控制器來(lái)實(shí)現CAN協(xié)議。這種方法的優(yōu)點(diǎn)是能實(shí)現較復雜的功能,靈活性也不錯,但由于它是獨立的控制器,設計通信卡擁有4個(gè)CAN網(wǎng)段就需要4片SJA1000,這樣會(huì )造成資源冗余,系統會(huì )比較龐大,而且穩定性也會(huì )受影響,設計難度也較大。
  (2) 帶CAN接口的微控制器實(shí)現
  該方法具有代表性的有飛利浦公司的ARM芯片LPC2294,它集成有4路片上CAN總線(xiàn)控制器,能很方便地實(shí)現多路CAN總線(xiàn)接口,減小系統規模,提高系統穩定性。
  比較上述兩種方法,在傳統的SJA1000中,接收過(guò)濾只能滿(mǎn)足一些規律性較高的ID篩選過(guò)濾,或對個(gè)數較少的ID (一般小于10~15個(gè))進(jìn)行任意篩選過(guò)濾,而難以實(shí)現更復雜的任意ID進(jìn)行篩選過(guò)濾,這無(wú)疑增加了系統軟件設計及運行負擔。而第二種設計方法相對較為簡(jiǎn)便。由于LPC2294微控制器中為所有CAN控制器提供了全局的接收標識符查詢(xún)功能,因而能容易地設計較復雜的ID接收過(guò)濾,其工作的重點(diǎn)主要在A(yíng)RM芯片的軟件設計上。本文采用第二種方法來(lái)實(shí)現CAN總線(xiàn)接口,并采用PCA82C250作為CAN總線(xiàn)驅動(dòng)器,同時(shí)將6N137連入CAN控制器和CAN驅動(dòng)器之間以降低CAN總線(xiàn)對網(wǎng)關(guān)卡的電磁干擾。圖3所示是LPC2294中一個(gè)CAN接口的連接圖,其它接口與之類(lèi)似。
  


  1.3 微控制器與PCI9030之間的硬件接口設計
                               
                  微控制器與PCI9030之間的硬件設計是該通信卡的核心控制部分。本設計采用ALTERA公司的FPGA EPlC6來(lái)實(shí)現微控制器與PCI9030之間的接口。EPlC6是ALTERA公司的一款FPGA芯片,它內部集成了20塊128×36 bits的RAM模塊,可以方便地將它編程為所需要的“雙口RAM”,然后將上行數據(CAN節點(diǎn)發(fā)往PC機的數據)和下行數據(PC機發(fā)往CAN節點(diǎn)的數據)通過(guò)該“雙口RAM”緩存轉發(fā)。由于EPlC6擁有豐富的I/O口,故可靈活選擇數據格式(32位/16位/8位)以及傳輸方法,本文采用16位復用傳輸模式。
  EPlC6還要編程實(shí)現PCI9030與ARM之間的邏輯控制時(shí)序轉換。由于PCI9030與ARM的控制信號不完全一致,所以需要進(jìn)行邏輯控制時(shí)序轉換。同時(shí),本文PCI9030的局部總線(xiàn)一側采用的是地址/數據復用模式,而ARM控制器采用的是非復用模式,因此也需要EPlC6進(jìn)行模式轉換:在PCI9030的地址周期內可利用LALE將16位地址鎖存到EPlC6內部寄存器,等到PCI9030的數據周期來(lái)臨時(shí),再與數據一起送到ARM的地址口與數據口上,以方便ARM取用。
  2 軟件設計
  2.1 通信卡軟件設計
  通信卡上的軟件主要指的是ARM控制器上的軟件程序。本文選用ARM控制器LPC2294來(lái)實(shí)現智能數據傳輸路徑選擇。LPC2294是通信卡的控制核心。它集成有4路CAN控制器,每個(gè)CAN控制器都與獨立CAN控制器SJA1000有著(zhù)相似的寄存器結構,它只是對器件寄存器訪(fǎng)問(wèn)由原來(lái)的8bit字節訪(fǎng)問(wèn)轉變?yōu)榱?2 bit的雙字訪(fǎng)問(wèn)。LPC2294可實(shí)現CAN網(wǎng)段與上位機之間的數據傳輸控制(包括上行數據傳輸和下行數據傳輸)以及不同CAN網(wǎng)段間的數據傳輸控制(平行數據傳輸)。
  LPC2294為所有CAN控制器提供了全局接收標識符查詢(xún)功能。它包含一個(gè)512×32 (2 k字節)的RAM,可通過(guò)軟件處理在RAM中存放1~5個(gè)標識符表格。整個(gè)接收濾波RAM可容納1024個(gè)標準標識符或512個(gè)擴展標識符,或兩種類(lèi)型的混合標識符。由于允許的表格范圍有2 k字節,故能容易地滿(mǎn)足復雜的ID接收過(guò)濾要求。LPC2294在FullCAN模式下能自動(dòng)接收并選定網(wǎng)段的標準幀,但本文不采用FullCAN模式。
  若在EPlC6的“雙口RAM”中設置一個(gè)狀態(tài)與控制寄存器組(SOR),那么,上位機便可通過(guò)訪(fǎng)問(wèn)該寄存器組查詢(xún)通信卡的運行狀態(tài)。為了有效管理數據傳輸,防止傳輸過(guò)程中的數據丟失,本設計在A(yíng)RM內部的靜態(tài)RAM區開(kāi)辟了一個(gè)全局數據收發(fā)緩存區(GRTB),其示意圖如圖4所示。
  


  圖4中,對于標準幀來(lái)說(shuō),它只有11位標識符,因此,圖中的標識符字節3和4保留不用。而幀格式用來(lái)區別此幀是標準幀(0)還是擴展幀(1)。當RTR為1時(shí),表示此幀是遠程幀。圖中的源段號和目的段號用于表明此幀來(lái)自哪個(gè)網(wǎng)段以及將要送往哪個(gè)網(wǎng)段(此處將上位機也作為其中一段來(lái)處理)。DLC表明傳輸的數據字節數目。
  2.2 通信卡的運行流程
  系統上電復位后,系統將首先運行初始化程序。LPC2294的初始化主要是初始化全局接收和發(fā)送緩沖區以及清除狀態(tài)寄存器中的值等CI9030的初始化主要是從EEPROM中加載初始數據以進(jìn)行初始設置,CAN初始化包括設置模式、總線(xiàn)時(shí)序、中斷使能、標識符表格,這些設置均可通過(guò)給CAN芯片的內部寄存器賦值來(lái)實(shí)現。初始化成功之后,通信卡將進(jìn)行自檢,并在確定啟動(dòng)正常之后進(jìn)入工作狀態(tài)。這一部分的程序流程圖如圖5的A部分所示。
  


  系統進(jìn)入工作狀態(tài)后(圖5中的B部分)將等待中斷產(chǎn)生,如有,則進(jìn)人相應的中斷服務(wù)程序。如果是數據傳輸,則轉入數據傳輸子程序,數據傳輸子程序主要包括3個(gè)部分:
  (1) 下行數據傳輸
  下行數據傳輸指的是上位機向CAN網(wǎng)段發(fā)送數據。即上位機把數據寫(xiě)入到“雙口RAM”中以等待LPC2294將數據取走。LPC2294將上位機發(fā)來(lái)的數據暫時(shí)存放在全局數據收發(fā)緩存區(GRTB)中,然后檢查匹配的目的段是否有空閑的發(fā)送區(CANSR中的TBS位為1),若有則將數據分別寫(xiě)入每個(gè)網(wǎng)段的發(fā)送區并發(fā)送。如果匹配網(wǎng)段的3個(gè)發(fā)送緩沖器全為忙,則循環(huán)等待,直到有一個(gè)以上的發(fā)送緩沖器為空再進(jìn)行發(fā)送。
  (2) 上行數據傳輸
  上行數據傳輸指的是CAN網(wǎng)段向上位機發(fā)送數據。當程序檢測到某個(gè)網(wǎng)段X的CAN中斷/捕獲寄存器(CANICR)中的接收中斷位(RI)置位后,它將進(jìn)入接收中斷服務(wù)程序。此時(shí)程序將到標識符表格中查找匹配的標識符,CAN控制器會(huì )在接收時(shí)自動(dòng)搜索接收濾波器的RAM中的表格并進(jìn)行匹配,只要找到匹配值則產(chǎn)生接收中斷并通知用戶(hù)保留信息,否則自動(dòng)放棄這一幀信息而不產(chǎn)生接收中斷,如果它只找到一個(gè)匹配值(源網(wǎng)段中),則說(shuō)明此數據是只傳輸給上位機的,此時(shí)程序會(huì )將接收到的數據信息按上面介紹的格式保存到全局數據收發(fā)緩沖區(GRTB),以等待LPC2294將其發(fā)送給EPlC6的“雙口RAM”,以便上位機讀取。
  (3) 平行數據傳輸
  當出現接收中斷時(shí),程序也會(huì )到標識符表格中查找匹配的標識符,如果找到一個(gè)以上的匹配值,則說(shuō)明還有其他網(wǎng)段需要這些數據。此時(shí)程序會(huì )將接收到的數據信息讀入到全局數據收發(fā)緩沖區(GRTB)中去,然后把數據發(fā)往匹配網(wǎng)段。
  在調用相應的數據傳輸子程序后,程序將置標志位并返回。如果是其它一些中斷,則轉入相應的中斷服務(wù)程序。若沒(méi)有中斷產(chǎn)生,則檢查PC機是否有參數配置需要,最后進(jìn)行系統自檢。本系統會(huì )在系統閑暇時(shí)進(jìn)行自檢并上傳狀態(tài)報表,這樣可以使用戶(hù)隨時(shí)了解通信卡的工作情況,對于提高系統的工作可靠性以及出現故障時(shí)的查錯效率具有重要的意義。
  2.3 上位機程序設計
  本設計中,上位機軟件設計程序主要包括通信卡底層驅動(dòng)程序和用戶(hù)服務(wù)程序。其設計框圖圖6所示。
  

                               
                  通信卡底層驅動(dòng)程序的功能主要是配置CAN總線(xiàn)接口、收發(fā)CAN總線(xiàn)上的數據、對CAN總線(xiàn)進(jìn)行實(shí)時(shí)監測、執行用戶(hù)程序的收發(fā)命令等。CAN總線(xiàn)和PCI總線(xiàn)錯誤均采用中斷處理,并通過(guò)事件(Event)內核對象直接通知給用戶(hù)程序。
  PCI的用戶(hù)服務(wù)程序則通過(guò)PCI通信程序與系統PCIDI (PCI device interface)進(jìn)行通信,并由系統完成PCI協(xié)議的處理與數據傳輸。用戶(hù)可以在設計好的上位機界面上方便的設定節點(diǎn)參數,查詢(xún)節點(diǎn)狀態(tài)信息。
  3 結束語(yǔ)
  本文設計的CAN/PCI智能通信卡采用功能強大的ARM芯片LPC2294作為核心控制芯片,因此,該通信卡能夠同時(shí)處理4路CAN總線(xiàn)向上位機的數據傳輸。對于CAN網(wǎng)段之間的通信需求,本通信卡也能夠很好地滿(mǎn)足,并可使工業(yè)現場(chǎng)的CAN網(wǎng)絡(luò )組網(wǎng)更為簡(jiǎn)單。
                               
               
本文地址:http://selenalain.com/thread-155330-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页