新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM控制器LPC2294的CAN/PCI智能通信卡設計

        基于ARM控制器LPC2294的CAN/PCI智能通信卡設計

        作者: 時間:2012-11-13 來源:網絡 收藏


          (2) 帶CAN接口的微控制器實現

          該方法具有代表性的有飛利浦公司的ARM芯片,它集成有4路片上CAN總線控制器,能很方便地實現多路CAN總線接口,減小系統規模,提高系統穩定性。

          比較上述兩種方法,在傳統的SJA1000中,接收過濾只能滿足一些規律性較高的ID篩選過濾,或對個數較少的ID (一般小于10~15個)進行任意篩選過濾,而難以實現更復雜的任意ID進行篩選過濾,這無疑增加了系統軟件設計及運行負擔。

          而第二種設計方法相對較為簡便。由于微控制器中為所有CAN控制器提供了全局的接收標識符查詢功能,因而能容易地設計較復雜的ID接收過濾,其工作的重點主要在ARM芯片的軟件設計上。本文采用第二種方法來實現CAN總線接口,并采用PCA82C250作為CAN總線驅動器,同時將6N137連入CAN控制器和CAN驅動器之間以降低CAN總線對網關卡的電磁干擾。圖3所示是中一個CAN接口的連接圖,其它接口與之類似。

        1.3 微控制器與PCI9030之間的硬件接口設計

          微控制器與PCI9030之間的硬件設計是該通信卡的核心控制部分。本設計采用ALTERA公司的FPGA EPlC6來實現微控制器與PCI9030之間的接口。EPlC6是ALTERA公司的一款FPGA芯片,它內部集成了20塊128×36 bits的RAM模塊,可以方便地將它編程為所需要的“雙口RAM”,然后將上行數據(CAN節點發往PC機的數據)和下行數據(PC機發往CAN節點的數據)通過該“雙口RAM”緩存轉發。由于EPlC6擁有豐富的I/O口,故可靈活選擇數據格式(32位/16位/8位)以及傳輸方法,本文采用16位復用傳輸模式。

          EPlC6還要編程實現PCI9030與ARM之間的邏輯控制時序轉換。由于PCI9030與ARM的控制信號不完全一致,所以需要進行邏輯控制時序轉換。同時,本文PCI9030的局部總線一側采用的是地址/數據復用模式,而采用的是非復用模式,因此也需要EPlC6進行模式轉換:在PCI9030的地址周期內可利用LALE將16位地址鎖存到EPlC6內部寄存器,等到PCI9030的數據周期來臨時,再與數據一起送到ARM的地址口與數據口上,以方便ARM取用。

          2 軟件設計

          2.1 通信卡軟件設計

          通信卡上的軟件主要指的是上的軟件程序。本文選用LPC2294來實現智能數據傳輸路徑選擇。LPC2294是通信卡的控制核心。它集成有4路CAN控制器,每個CAN控制器都與獨立CAN控制器SJA1000有著相似的寄存器結構,它只是對器件寄存器訪問由原來的8bit字節訪問轉變為了32 bit的雙字訪問。LPC2294可實現CAN網段與上位機之間的數據傳輸控制(包括上行數據傳輸和下行數據傳輸)以及不同CAN網段間的數據傳輸控制(平行數據傳輸)。

          LPC2294為所有CAN控制器提供了全局接收標識符查詢功能。它包含一個512×32 (2 k字節)的RAM,可通過軟件處理在RAM中存放1~5個標識符表格。整個接收濾波RAM可容納1024個標準標識符或512個擴展標識符,或兩種類型的混合標識符。由于允許的表格范圍有2 k字節,故能容易地滿足復雜的ID接收過濾要求。LPC2294在FullCAN模式下能自動接收并選定網段的標準幀,但本文不采用FullCAN模式。

          若在EPlC6的“雙口RAM”中設置一個狀態與控制寄存器組(SOR),那么,上位機便可通過訪問該寄存器組查詢通信卡的運行狀態。為了有效管理數據傳輸,防止傳輸過程中的數據丟失,本設計在ARM內部的靜態RAM區開辟了一個全局數據收發緩存區(GRTB),其示意圖如圖4所示。

        圖4中,對于標準幀來說,它只有11位標識符,因此,圖中的標識符字節3和4保留不用。而幀格式用來區別此幀是標準幀(0)還是擴展幀(1)。當RTR為1時,表示此幀是遠程幀。圖中的源段號和目的段號用于表明此幀來自哪個網段以及將要送往哪個網段(此處將上位機也作為其中一段來處理)。DLC表明傳輸的數據字節數目。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 三门峡市| 施甸县| 滦南县| 广饶县| 耿马| 吉木乃县| 扎囊县| 威远县| 汽车| 玉门市| 启东市| 靖安县| 罗平县| 怀安县| 宜兴市| 如东县| 林口县| 兴化市| 呼伦贝尔市| 黑水县| 蕲春县| 永康市| 泽州县| 禄丰县| 菏泽市| 射阳县| 陵水| 孝感市| 武安市| 兰坪| 赤壁市| 高邑县| 乐安县| 扶风县| 东台市| 徐闻县| 龙里县| 泾阳县| 体育| 庆元县| 合山市|