基於嵌入式WinCE的CAN總線控制器驅動設計

2021-01-09 電子產品世界

  0 引 言

本文引用地址:http://www.eepw.com.cn/article/262874.htm

  近年來,由於消費電子、計算機、通信(3c)一體化趨勢日趨明顯,嵌入式系統再度成為研究和應用的熱點。嵌入式作業系統(:Real-time Embedded OperatingSystem,RTOs或EOs)作為一種實時的、支持嵌入式系統應用的作業系統軟體,成為嵌入式系統(包括硬、軟體系統)極為重要的組成部分,通常包括與硬體相關的底層驅動軟體、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器Browser等。Windows CE作業系統就是微軟公司從整體上為有限資源平臺設計的多線程、完整優先權、多任務的作業系統Win CE支持各種處理器產品家族,包括x86,Xscale,ARM,MIPS和SH系列。它的模塊化設計允許它對從掌上電腦到專用工業控制器的用戶電子設備進行定製,選擇系統模塊和組件的多少決定了所需內存的大小。

  Windows CE作業系統之所以能夠支持各種各樣的硬體設備,是因為對每一款硬體設備,都有其對應的設備驅動程序,否則這款硬體就無法在Windows CE下正常工作。win CE提供了4種設備模型,其中2種是專門用於Win CE的模型,另外2種外部模型來自其他的作業系統。基於Win CE的兩種模型是本機的設備驅動程序和流接口的驅動程序;兩種外部模型用於通用串行總線(USB)和網絡驅動器接口標準(NDIS)驅動程序。下面針對 Win CE系統下基於三星公司的ARM9內核晶片S3c2410的CAN總線控制器SJAl000,以流接口驅動程序形式進行設計。

  l CAN總線及控制器工作原理

  控制器區域網CAN是由ISO定義的串行通信總線,主要用於各種過程檢測及控制。它是一種多主總線,通信介質可以是雙絞線、同軸電纜或光導纖維。通信速率可達1 Mb/s。cAN總線通信接口中集成了CAN協議的物理層和數據鏈路層功能,可完成對通信數據的成幀處理,包括位填充、數據塊編碼、循環冗餘檢驗、優先級判別等項工作。它的基本設計規範要求有高位速率和高抗電磁幹擾性,而且能夠檢測出產生的任何錯誤。由於cAN串行通信總線具有這些特性,它很自然的在汽車製造業以及航空工業中受到廣泛應用。

  SJAl000是一種獨立控制器用於移動目標和一般工業環境中的區域網絡控制(CAN)。它是Philips半導體公司的 PC.A82(;200 CAN控制器(BasicCAN)的替代產品。而且它增加了一種新的工作模式(PeliCAN),這種模式支持具有很多新特性的CAN2.0B協議。其內部體系結構如下圖1所示。

  

 

  CAN核心模塊控制CAN幀的發送和接收。接口管理邏輯負責連接外部主控制器,該控制器可以是衛星控制器件或任何其他器件。經過SJAl000 復用的地址/數據總線訪問寄存器和控制讀/寫選通信號都在這處理。SJAl000的發送緩衝器能夠存儲一個完整的報文(擴展或標準的)。當主控制器初始化發送,接口管理邏輯會使CAN核心模塊從發送緩衝器讀CAN報文。當收到一個報文時,CAN核心模塊將串行位流轉換成用於驗收濾波器的並行數據。通過這個可編程的濾波器,SJAl000能確定主控制器要接收哪些報文。所有收到的報文由驗收濾波器驗收並存儲在接收FIFO。儲存報文的多少由工作模式決定,最多能存儲32個報文。

  2 流接口驅動程序工作機制

  相比於本機設備驅動程序,流接口驅動程序表現為一個動態連結庫,由設備管理器統一加載、管理和卸載。與具有單獨目的的內部設備驅動程序相比,所有的流接口驅動程序都是用同一組接口並調用同一個函數集——流接口函數。win CE的文件系統通過這些人口點函數與流接口驅動進行通信,從而達到應用程式訪問驅動程序、操作硬體的目的。流接口驅動程序要實現的DLL接口見表1。

  

 

  在實際的開發中,上述接口名稱中的XXX三個字母被具體設備的設備文件名所代替。流接口驅動程序通過編譯後,生成DLL文件,即動態連結庫文件。

  3 CAN總線控制器sJAl000驅動程序設計

  CAN總線控制器SJAl000驅動採用流接口驅動程序模型,要實現的流接口函數分別為 CAN_Init,CAN_Deinit,CAN_Open,CAN_Close,CAN_Read,CAN_write,CAN_IOControl 等。應用程式使用CreatFile()函數以文件的方式打開CAN控制器驅動,以獲取驅動文件的句柄,然後使用該句柄調用 DeviceloControl(),ReadFile(),WriteFile()函數來CAN控制器的各種功能。

  由於篇幅有限,下面僅針對CAN_Init,CAN_Read和CAN_IntrThread函數的實現進行詳細的設計。

  3.1 CAN_Init函數的設計實現

  當用戶開始使用CAN總線控制器時,設備管理器調用這個函數來初始化控制器設備SJAl000。這個函數是通過設備管理器提供的ActiveDeviceEx()函數來調用的。函數執行後,如果成功就返回設備的句柄。CAN_Init函數的流程如圖2所示。

  

 

  3.2 CAN_Read函數的設計實現

  根據CAN協議規範,報文的接收由CAN控制器SJAl000獨立完成,收到的報文放在接收緩衝器。可以發送給主控制器的報文由狀態寄存器的接收緩衝器狀態標誌「RBS'』和接收中斷標誌「RI」標出(如果使能)。主控制器會將這條信息發送到本地的報文存儲器,然後釋放接收緩衝器並對報文操作。發送過程能被SJAl000的中斷請求或查詢SJAl000的控制段狀態標誌來控制。cAN_Read函數操作成功則返回實際讀取的字節數,否則返回值為 -1。CAN_Read函數程序的流程圖如圖3所示。

  

 

  3.3 CAN_IntrThread函數的設計實現

  在SJAl000控制器中,報文的發送和接收是採用中斷方式來完成的。內核函數InterruptInitialize()外部中斷事件和將邏輯中斷號綁定,這一步就會使能該中斷。當該中斷發生時,ISR就觸發該事件生效。完成以上工作後,驅動程序中的IST就可以使用WaitForsin- gleObject()函數等待中斷的發生。中斷處理結束後,IST需要調用InterruptDone()告訴作業系統中斷處理結束。中斷服務線程 CAN_IntrThread函數程序流程圖如圖4所示。

雙絞線傳輸器相關文章:雙絞線傳輸器原理

相關焦點

  • 嵌入式Win CE中CAN總線控制器的驅動設計與實現
    嵌入式Win CE中CAN總線控制器的驅動設計與實現 秩名 發表於 2012-05-17 10:18:10   0 引 言   近年來,由於消費電子、
  • 基於CAN總線的運動控制系統設計
    基於CAN總線的運動控制系統設計 電子工程網 發表於 2019-09-18 15:50:55 1 總體設計 主節點採用ARM7內核的LPC2294微控制器
  • 在嵌入式網關中CAN總線有什麼應用?
    在嵌入式網關中CAN總線有什麼應用?在北美和西歐,CAN總線協議已經成為汽車計算機控制系統和嵌入式工業控制區域網的標準總線,並且擁有以CAN為底層協議專為大型貨車和重工機械車輛設計的J1939協議。
  • 基於LIN總線的電動車窗控制器設計
    而在這種速率上採用LIN總線方式的網絡控制,正好可以滿足其要求,並且LIN總線能節省大量的線束、便於維護和實現汽車診斷功能。本文提出了一種將LIN總線運用到車窗控制系統中的設計方案,並給出系統硬體及軟體的實現方法。1 車窗控制系統的網絡結構設計 本設計主要實現4個車窗的升降功能及車窗防堵轉。
  • I2C總線驅動在嵌入式系統中的兩種實現
    結構緊湊,因此其構成系統的成本較低;並且在總線上增加器件不會影響系統的正常工作,所有的I。C器件共用一套總線,因此其系統修改和可擴展性好。即使有不同時鐘速度的器件連接到總線上,時間同步機制也能夠很方便地確定總線時鐘,因此在嵌入式系統中得到了廣泛的應用。
  • Linux下I2C總線EEPROM驅動程序設計方法
    而一個具體的總線控制器驅動要使用某一種算法。例如,Linux內核中提供的算法i2e-algo-8260可以用在MPC82xx系列處理器提供的I2C總線控制器上。Linux內核中提供了一些常見處理器如MPC82xx系列的算法驅動。對於I2C設備,基本上每種具體設備都有自己的基本特性。其驅動程序一般都需要特別設計。  在I2C總線驅動程序體系結構中。
  • 嵌入式整流模塊控制器設計
    基於AVR+μC/OS-II的嵌入式整流模塊控制器設計Design of Embedded Rectifier Module Controller Based on AVR + μC/OS-II單片機+μC/OS-II嵌入式實時作業系統作為軟硬體開發平臺的嵌入式整流模塊控制器的統一化設計方法。
  • 基於C8051F040單片機的CAN總線和RS-232串口通信設計
    為了實現對CAN總線和RS-232串口雙向通信需求,提出了一種基於C8051F040單片機的數據通信方案,並完成系統設計。分析了CAN總線和RS-232串口的通信特點,介紹了單片機硬體,並對軟體的設計思路與流程做了詳盡描述,完成功能檢測。實驗結果表明,該設計達到了要求。
  • 嵌入式系統中USB主機控制器的設計
    本文將介紹在嵌入式系統中應用USB時其主機控制器的設計。嵌入式系統設計挑戰 在基於PC的系統中,USB操作一般需要三種部件,分別是通常作為PCI子系統的主機控制器、USB堆棧以及USB類驅動器。 主機控制器是集成主板晶片組的一部分,USB堆棧則包含主板晶片及通用主機控制器接口(UCHI)和開放主機控制器接口(OHCI)驅動程序以及USB驅動程序(usbd.sys),在PC上實現USB需要上述領域的專門技術。 在嵌入式USB系統中,其主要組成部分與PC系統類似,如嵌入式主機控制器晶片、帶OHCI堆棧的實時作業系統(RTOS)以及專用驅動程序。
  • 基於CAN總線的分布式熱電阻智能節點的設計
    3.2 節點與上位機的can通信智能節點與主控卡或上位機的通信主要基於can通信協議來完成,它的優點是能夠實時處理數據、在惡劣環境下正常工作、成本低且擁有比較高的帶寬。由於上位機內部無can網絡適配器,因此需外接rs-232/can轉接卡,實現上位機與智能節點的通信。
  • 基於FPGA的永磁同步電機控制器設計
    摘要:提出一種基於FPGA的永磁同步電機控制器的設計方案,該設計可應用於具有高動態性能要求的永磁同步電機伺服控制系統。為提高伺服控制系統的實時性,簡化電路及節省成本,該系統設計採用Ahera公司生產的CycloneIII EP3C25Q240C8型FPGA器件實現電機控制器。嵌入NiosⅡCPU軟核配合片內硬體乘法器及可編程邏輯門陣列,實現軟硬體協同工作。通過QuartusⅡ軟體自帶的SignalTaplI嵌入式邏輯分析儀進行板上調試驗證,得到帶有死區輸出的PWM波形。
  • WinCE5.0的USB Camera流接口驅動開發
    但是由於嵌入式硬體環境的多樣性以及WinCE5.0對USB設備驅動開發只提供了一些底層支持,攝像頭廠商尚未提供WinCE5.0下USB攝像頭的驅動,因此開發出WinCE5.0下USB攝像頭驅動具有實際的意義和價值。本文正是針對這一情況,對WinCE5.0下USB設備驅動開發進行研究,並設計出基於流接口驅動模型的USB攝像頭驅動程序。
  • 基於單片機和CPLD的PLC背板總線協議接口晶片設計(一)
    摘要:設計了一組基於CPLD的PLC背板總線協議接口晶片,協議晶片可以區分PLC的背板總線的周期性數據和非周期性數據。詳細介紹了通過Verilog HDL語言設計狀態機、協議幀控制器、FIFO控制器的過程,25MHz下背板總線工作穩定的試驗結果驗證了協議晶片設計的可行性。  可編程邏輯控制器(PLC)主機是通過背板總線支持擴展模塊的連接, 背板總線是PLC 主機同I/O擴展模塊之間的高速數據通路,支持主機和擴展模塊之間的I/O 數據刷新。
  • 嵌入式系統USB接口的虛擬示波器設計
    嵌入式系統的發展使得基於嵌入式微處理器和實時作業系統的嵌入式虛擬儀器能夠滿足惡劣工作環境下的便攜虛擬儀器的需要。同時,基於USB總線的儀器設備克服了現有PC總線虛擬儀器的不足,可滿足自動化工業測量的要求,特別適合現場信號的測試。
  • 嵌入式開發:STM32 FSMC接口驅動TFT-LCD設計
    本文提出了一種能直接驅動數字液晶屏的設計方案,方案先介紹了TFT數字彩屏的工作原理,利用STM32處理器的FSMC接口設計的硬體電路和軟體程序均能對顯示控制晶片進行有效的控制。在實際應用中顯示清晰流暢,並且CPU有足夠的時間來處理用戶程序。該方案能成功應用在電腦橫機的人機界面顯示中,且其硬體電路結構簡單、控制方式靈活、對於其他型號的接口晶片也能提供參考。
  • 基於C167單片機和CAN總線實現數位化電梯控制系統的設計
    基於C167單片機和CAN總線實現數位化電梯控制系統的設計 李炳宇,梁正峰,趙 發表於 2020-12-04 09:55:04 1 引言 國民經濟的飛速發展
  • 一種嵌入式Web伺服器的設計方案
    本文主要介紹了嵌入式Web伺服器設計方案,以及實現和主要應用。1.引言嵌入式Web伺服器(Embedded Web Server,EWS)是指將Web伺服器嵌入到現場測試和控制設備中,在相應的硬體平臺和軟體系統的支持下,使傳統的測試和控制設備轉變為具備了以TCP/IP為底層通信協議,Web技術為核心的基於網際網路的網絡測試和控制設備。
  • 基於USB總線和89C51單片機的數據採集系統設計
    摘要:本文介紹了基於USB總線的數據採集設備的開發方法,包括硬體設計、firmware(固件)設計、基於windows驅動程序模型(WDM)的設備驅動程序設計以及應用軟體的設計,同時也介紹了基於
  • 實戰經驗吐血推薦:怎樣在Linux環境下輕鬆實現基於I2C總線的EEPROM...
    在主從通信中,可有多個I2C總線器件同時接到I2C總線上,通過地址來識別通信對象。筆者在開發基於MPC8250的嵌入式Linux系統的過程中發現I2C總線在嵌入式系統中應用廣泛,I2C總線控制器的類型比較多,對系統提供的操作接口差別也很大。與I2C總線相連的從設備主要有微控制器、EEPROM、實時時鐘、A/D轉換器等。
  • 基於Linux系統的多種串行總線統一接口的實現
    關鍵詞:統一接口;嵌入式系統:Linux;設備驅動;串行總線0 引言在Linux內核中單獨實現TTY、I2C、SPI、ISA、USB等多種總線驅動時,每一種總線的實現都有各自的特點,如參數設置不同,實現的結構不同等。