當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]Windows CE.net的AD7854驅動程序開發(fā)

引 言
   
AD7854是一款高速、低功耗的12位并行接口模數轉換芯片,其工作電壓范圍是3~5 V,采樣頻率最高為200 kHz。由于AD7854在正常的工作模式下功耗為5.4mW,在節(jié)電模式下功耗為3.6μW,因此在便攜式設備中得到廣泛的應用。AD7854具有自校準和系統校準功能,可確保其精確地工作。AD7854含有片上采樣保持電路和片上參考電壓(2.5 V),從而使外圍電路設計得以簡化。當前,在先進的便攜設備中,大量引進嵌入式操作系統對系統資源進行管理,因此開發(fā)硬件設備的驅動成為構建便攜式系統的一個重要工作。本文以S3C2410為處理器,開發(fā)了基于Windows CE.net的AD7854驅動程序,詳細闡述Windows CE.net下A137854流接口驅動程序的實現過程及相關內容。

1 AD7854與S3C2410的擴展設計
    為確保AD7854在S3C2410的控制下完成采樣和模數轉換,必須合理地設計接口電路。AD7854為12位并行模數轉換芯片,S3C2410是32位微處理器,因此,一次讀操作即可完成AD7854轉換結果的讀取。但是,對于AD7854校準寄存器的讀操作以及對各寄存器的寫操作都需要2個讀或寫操作,因此,統一使用2個讀/寫操作完成對AD7854的操作,即僅選用AD7854的低8位數據線作為數據傳送通道。
    為了提高S3C2410的驅動能力,在S3C2410與外設之間加入了一個雙向數據緩沖器74LVCl6245。設計的A/D轉換接口電路原理如圖1所示。

2 WindOWS CE.Ret設備驅動簡介
    Windows CE.net設備驅動模型主要有兩種:本機設備驅動與流接口設備驅動。不同的驅動模型只能通過它們的軟件接口來區(qū)別,而不是它們適用的設備。驅動程序模型決定其輸出的軟件接口。
    本機設備驅動程序適于集成到基于Windows CE.net平臺的設備,如通用LED驅動和電源驅動等。每種本機設備驅動程序都有精確的要求和特殊的目的,微軟提供了定制接口的方式來支持內部設備驅動程序。一般來說,只有OEM開發(fā)商對本機設備驅動程序感興趣,而獨立硬件銷售商只開發(fā)附加的硬件驅動程序。Windows CE.net平臺生成器(platform builder)提供本機設備驅動程序的樣本,可考慮把本機設備驅動程序樣本應用到自己的平臺上,而無需再從頭開發(fā)自己的本機驅動程序。
    流接口設備驅動程序是一般類型的設備驅動程序。它表現為用戶一級的動態(tài)DLL,用來導出一組固定的函數,稱為“流接口函數”。應用程序可以通過文件系統接口函數(API)訪問這些接口函數,從而調用驅動程序,驅動硬件設備進行工作。在流接口驅動程序中,驅動程序負責把外設抽象成一個文件,而應用程序則使用操作系統提供的API對外設進行訪問。流接口驅動程序幾乎支持任何類型的、可以連接到基于Windows CE.net平臺的外部設備,例如打印機、調制解調器等。本文介紹的AD7854驅動也是采用流接口驅動模型,屬于流接口驅動的范疇。流接口設備驅動的體系結構如圖2所示。

3 AD7854驅動設計與實現
    由圖l所示的硬件電路可知,AD7854被直接映射到系統的內存,它的物理地址是Oxl0000000,因此,該設備的驅動程序可以選用單片式流接口設備驅動模型。同時S3C24lO采用中斷的方式對AD7854的轉換結果進行讀取并啟動下一次的轉換。因此,開發(fā)A/D驅動主要由兩個部分組成:內核部分和流接口函數部分。內核部分主要完成中斷的處理,包括物理中斷到邏輯中斷的轉換,中斷的使能、禁止,喚醒中斷服務線程等工作;流接口函數部分主要通過實現Windows CE.net提供的接口函數完成對A137854的讀、寫操作。
3.1 AD7854中斷在WindOWS CE中的處理
   
內核部分主要是修改Windows CE.net中與中斷相關的內核文件,完成物理中斷到邏輯中斷的映射。由圖1可知,AD7854占用外部中斷0(EINTO)。為了讓操作系統能夠處理外部中斷O,必須對其關于中斷處理的內核代碼進行修改。主要修改的內核文件如下:
    ①修改%WIN(2ER()0T%\PLATFORM\SMDK2410\INC\oalintr.h文件;
    ②修改%WINCEROOT%\PLATFORM\smdk2410\kernel\hal\arm\armint.c文件中的OEMInterrupt Han—dler()函數;
    ③在中斷服務線程(IST)中調用InterruptEnable()、InterruptDisable()、InterruptDone()等函數對中斷進行操作時,系統內核調用OEMInterTuptEnable()、()EMInter—ruptDisable()、()EMInterruptDone(),對中斷寄存器進行設置,完成中斷允許、中斷禁止和中斷完成操作。對這3個OEM函數的修改,是通過修改%WINCERO0T%\PLATFORM\smdk2410\kernel\hal\cfw.c文件完成的。
    內核文件的修改可以參照內核文件函數的具體實現來完成。經過對Windows CE.net內核文件的修改,完成了物理中斷EINTO到邏輯中斷號SYSINTR_ADC的映射。至此,就可以利用Windows CE.net提供的API函數,通過對邏輯中斷SYSINTR_ADC的處理來完成物理中斷零的操作。
3.2 AD7854流接口函數的實現
   
流接口驅動程序實質上就是一個動態(tài)鏈接庫,在Windows CE.net中,流接口函數一共有10個。這些流接口函數并不需要每個都要有具體的實現代碼,關鍵是要根據設備的具體工作流程來完成相應的接口函數。本設計中開發(fā)的AD7854的驅動程序主要實現的接口函數為:XXX_Deinit、XXX_Init、XXX_Open、XXX_Close、XXX_Read、XXX_Write。XXX為設備文件名的前綴,由于開
發(fā)的是模數轉換芯片的驅動,故在此將該前綴命名為“ADC”。以下具體介紹在Platform Builder開發(fā)環(huán)境下AD7854驅動的開發(fā)過程。
    首先,在。Platform Builder4.2開發(fā)環(huán)境下為AD7854的驅動建立一個WCE Dynamic—Link Library工程,隨后就可以在該工程下完成各流接口函數。流接口函數的實現需要完成兩個主要方面的工作:AD7854數據結構的建立和各接口函數代碼的實現。
    (1)AD7854的數據結構
   
在編寫流接口函數之前,應該定義設備的數據結構,這是對現實設備的抽象。根據AD7854在操作中所涉及的CPU相關存儲器以及AD7854內部操作的需要,現將AD7854抽象成以下結構類型:


    AD7854的數據結構可以看作是與AD7854相關的邏輯體。通過WindowsCE.net提供的內存映射函數VirtualAl—loe()和VirtualCopy(),可以將邏輯體與具體的物理地址關聯起來,完成對物理存儲器的設置。
    (2)流接口函數的開發(fā)
    流接口函數為應用程序操作硬件提供統一的接口,完成對硬件的抽象工作。一個流接口函數實質上就是提供某一特定功能的模塊,根據硬件的不同,各接口函數實現的內容千差萬別。有的接口函數需要很多的代碼,有的就是一個空的函數體。在AD7854驅動的接口函數中,初始化函數以及讀寫函數是主要的接口函數,本文結合硬件具體介紹其實現過程:
    ①PADC_CONTEXT ADC_Init(LPCTSTR pCon—text,LPCVOID lpvBusContext)。該接口函數在驅動程序加載時,由設備管理器調用。在該函數中主要完成硬件初始化工作,如映射設備的物理內存、配置相關寄存器、創(chuàng)建中斷事件、中斷服務線程等。
    ADC_Init函數需按照一定的順序完成驅動的初始化工作,其內部函數的調用順序如圖3所示。ADC_Init調用成功以后,將返回AD7854結構體的首地址——pADC,同時表明該驅動加載成功。
    ②DWORD ADC_Read(PADC_CONTEXT pADC,PUCHAR pBuffer,DWORD Count)。該接口函數主要完成對AD7854.的讀操作,代碼是對操作的抽象。為了更好地體現開發(fā)過程,首先介紹一下AD7854的讀操作過程。AD7854一次輸出16位數據,分成2次輸出(高8位、低8位)。在讀寫時序中,除了通過對CPU的存儲寄存器的相關配置以滿足時間上的要求外,另一個重要的地方就是注意滿足高字節(jié)使能輸出引腳(HBEN)的需要。具體是在輸出高字節(jié)時,該引腳應輸入高電平。AD7854輸出一次16位數據時有兩種輸出方式:其一就是高8位先輸出,然后是低8位輸出(與此相對應,HBEN引腳在AD7854讀時序中第1個字節(jié)為高電平,第2個字節(jié)為低電平);其二剛好相反。
    由圖3可知,HBEN的電平由S3C2410的地址線O確定,因此在一個AD7854的讀時序中地址線O應改變一次自己的狀態(tài)。同時AD7854的片選與LnGCS2相連,這也就構成了AD7854的兩個讀物理地址:0x1000 0000和0x1000 0001。在本設計中,規(guī)定先讀低8位數據然后為高8位,因此地址線應先送出Oxl000 0000然后送出0x1000 0001。AD7854的讀周期時序如圖4所示。

    由此可開發(fā)AD7854讀接口函數,具體代碼如下:

 

   寫接口函數DWORD ADC_Write(PADC_CON—TEXT pADC,PUCHAR pBuffer,DWORD Count),主要完成對.AD7854的寫操作。AD7854的寫操作過程和讀操作很相似,代碼的實現過程也基本相同,在此就不再贅述。
    其余的接口函數主要完成返回AD7854的結構句柄,釋放內存空間等工作。雖然必不可少,但是對AD7854的操作不是主要的,在此不再詳細介紹。
    編寫導出函數和注冊表文件,編譯生成d11文件,通過PB將其制作成CEC文件,在定制操作系統時可以將驅動程序加入操作系統中。這樣就完成了驅動程序的編寫,實現了操作系統與硬件之間的連接。

4 結 論
    Windows CE.net是多任務實時嵌入式操作系統,具有良好的圖形界面,實時性良好、功能強大,適用于工業(yè)控制領域。本文以AD7854的驅動開發(fā)為例,闡述了Windows CE.net對外部中斷的處理過程和流接口驅動的開發(fā)方法。該驅動程序已成功應用在所開發(fā)的作業(yè)環(huán)境監(jiān)測與評價系統中,在微氣候各指標的監(jiān)測方面應用效果良好。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉