国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

WinCE下步進(jìn)電機(jī)驅(qū)動程序的設(shè)計(jì)與應(yīng)用

2016-09-09 02:51:46蘭文濤
電子設(shè)計(jì)工程 2016年16期
關(guān)鍵詞:低電平驅(qū)動程序寄存器

袁 博,蘭文濤

(1.西安鐵路職業(yè)技術(shù)學(xué)院 陜西 西安 710014;2.華為科技有限公司西安研究所 陜西 西安 710000)

WinCE下步進(jìn)電機(jī)驅(qū)動程序的設(shè)計(jì)與應(yīng)用

袁 博1,蘭文濤2

(1.西安鐵路職業(yè)技術(shù)學(xué)院 陜西 西安 710014;2.華為科技有限公司西安研究所 陜西 西安 710000)

為了實(shí)現(xiàn)S3C2440開發(fā)板中的GPIO流接口驅(qū)動開發(fā),完成了在WinCE下驅(qū)動程序所包含的函數(shù)以及如何在應(yīng)用程序中調(diào)用驅(qū)動程序的開發(fā)過程,并解決了控制步進(jìn)電機(jī)運(yùn)動的工作問題,對在WinCE下開發(fā)流驅(qū)動以及控制步進(jìn)電機(jī)的運(yùn)動具有一定的啟示作用。

WinCE;GPIO驅(qū)動;步進(jìn)電機(jī)

隨著計(jì)算機(jī)和通信技術(shù)的迅速發(fā)展,嵌入式系統(tǒng)在各行業(yè)得到了廣泛應(yīng)用。WinCE系統(tǒng)是微軟公司推出的一種開放的、可裁剪的、32位實(shí)時(shí)嵌入式操作系統(tǒng),被廣泛應(yīng)用于工業(yè)控制、移動通信、汽車電子、個(gè)人消費(fèi)品等各個(gè)領(lǐng)域。WinCE作為嵌入式系統(tǒng),有其自身的特殊性,為了提高運(yùn)行效率,所有驅(qū)動皆為動態(tài)鏈接庫(DLL),驅(qū)動實(shí)現(xiàn)可以通過標(biāo)準(zhǔn)流接口函數(shù)。對于大多數(shù)GPIO外圍設(shè)備來說,適用于采用流接口驅(qū)動程序模型來開發(fā)驅(qū)動程序。文中在 WinCE下開發(fā)了GPIO驅(qū)動程序,然后將其燒寫進(jìn)內(nèi)核映像重新加載,為控制步進(jìn)電機(jī)開發(fā)所用。

1 流接口驅(qū)動

WinCE驅(qū)動從結(jié)構(gòu)上講分為本地驅(qū)動和流接口驅(qū)動。本地驅(qū)動專為頂層內(nèi)置硬件而設(shè)計(jì),如鍵盤、觸屏等。這類驅(qū)動程序總是在WinCE平臺啟動時(shí)被自動加載。與本地驅(qū)動程序相對應(yīng)的是流接口驅(qū)動,它是一般類型的設(shè)備驅(qū)動程序,在實(shí)現(xiàn)形式上表現(xiàn)為一個(gè)動態(tài)鏈接庫DLL,由一個(gè)叫做設(shè)備管理(Device Manager)程序的特殊應(yīng)用程序加載、管理和卸載。流接口驅(qū)動程序是一種可以定制接口的驅(qū)動模型,它的接口是一組固定的流接口函數(shù)(見表1),具有很高的通用性,WinCE所有的驅(qū)動程序都可以通過這種方式來實(shí)現(xiàn)。

由于流接口驅(qū)動程序經(jīng)過編譯后,最終生成的驅(qū)動程序文件為dll文件,所以流接口函數(shù)也稱作流接口驅(qū)動程序的dll接口,這些函數(shù)與硬件打交道。在應(yīng)用層上,開發(fā)者通過使用文件系統(tǒng) API函數(shù):CreatFile、DeviceIoContronl、ReadFile、WriteFile與驅(qū)動程序打交道,進(jìn)行對驅(qū)動程序的調(diào)用以及功能開發(fā)。

表1 流接口驅(qū)動函數(shù)

2 GPIO驅(qū)動程序?qū)崿F(xiàn)

2.1WinCE下GPIO工作原理

在WinCE中,程序訪問的地址都是虛擬地址,因此要訪問硬件物理地址,必須將硬件物理地址空間映射到虛擬空間。GPIO口是一個(gè)比較重要的概念,用戶可通過GPIO口和硬件設(shè)備進(jìn)行數(shù)據(jù)交互,控制硬件設(shè)備 (如步進(jìn)電機(jī)等)工作,讀取硬件設(shè)備的工作狀態(tài)數(shù)據(jù)等。在ARM9平臺上,WinCE系統(tǒng)將GPIO的實(shí)地址(S3C2440A的GPIO的基地址為 0x56000000)映射到虛擬地址空間(GPIO對應(yīng)為0xB1600000),這樣,通過對這段虛擬地址空間的操作,就能夠完成對GPIO或者其他片內(nèi)資源的控制、輸入輸出工作。

S3C2440A一共有8組GPIO口,117個(gè)引腳。這些GPIO口大部分是復(fù)用的,可以作為輸入、輸出以及特殊功能口,通過配置寄存器 (GPxCON)來配置為不同的功能。步進(jìn)電機(jī)GPIO口的控制首先需要設(shè)置GPxCON寄存器為輸出功能,然后再通過設(shè)置GPxDAT寄存器的值為0或1來實(shí)現(xiàn)控制GPIO口的高低電平,發(fā)送脈沖信號。

2.2GPIO驅(qū)動實(shí)現(xiàn)過程

WinCE下GPIO驅(qū)動程序開發(fā),不管是什么設(shè)備,它們的實(shí)現(xiàn)框架都是相同的,實(shí)際上就是完成一個(gè)典型的流接口驅(qū)動程序設(shè)計(jì),只要把相關(guān)的流接口函數(shù)實(shí)現(xiàn)即可。文中驅(qū)動程序的所有文件名用GPIO來命名,實(shí)現(xiàn)過程如下:

1)新建GPIO_Driver cpp文件,添加一些頭文件和完善接口函數(shù)的內(nèi)容,主要有:GPI_Init()函數(shù)主要是定義一個(gè)寄存器結(jié)構(gòu)變量,并給這個(gè)變量分配空間并映射到寄存器的空間上。VirtualAlloc()函數(shù)的功能是申請一塊虛擬內(nèi)存空間,該空間 的 大 小為 sizeof(S3C2440_IOPORT_REG) 字 節(jié) 。VirtualCopy()函數(shù)的功能是將VirtualAlloc()函數(shù)申請到的虛擬空間映射到 GPIO寄存器的物理地址(PVOID)(S3C2440_BASE_REG_PA_IOPORT>>8)。經(jīng)映射后,通過全局結(jié)構(gòu)體變量指針v_pIOPregs就可以訪問GPIO寄存器了。GPI_Open()和GPI_Close()函數(shù)主要是為應(yīng)用程序調(diào)用GPIO驅(qū)動時(shí)提供打開或者關(guān)閉的句柄,GPI_IoControl()函數(shù)用于設(shè)置寄存器。因?yàn)镚PIO都設(shè)置為輸出口,故GPI_Read()函數(shù)未用到。GPI_Deinit()函數(shù)為驅(qū)動卸載函數(shù)。

2)創(chuàng)建.def文件,指出需要導(dǎo)出的函數(shù)。內(nèi)容如下:

3)新建注冊表文件gpi.reg,內(nèi)容如下:

4)新建Makefile文件,內(nèi)容如下:

該文件指出了驅(qū)動程序的編譯和鏈接方法,但實(shí)際上該文件并不做什么事情,具體的方法由Sources文件進(jìn)行設(shè)置。

5)新建Sources文件,內(nèi)容大致如下:

Sources文件,編譯和鏈接文件,用于設(shè)置連接器和編譯器,指出驅(qū)動程序的編譯和鏈接方法。

6)生成GPI.dll動態(tài)鏈接庫,這就是流接口驅(qū)動程序的源代碼經(jīng)過PB的編譯生成的DLL,該文件就是WinCE設(shè)備管理器能夠識別并管理的流接口驅(qū)動程序文件。

7)將驅(qū)動文件編譯進(jìn)內(nèi)核

①修改dirs文件,添加以下內(nèi)容:

②修改dirs文件,添加以下內(nèi)容:

加入這一行,指明在生成 WinCE內(nèi)核映像時(shí)自動將GPIO.dll加入到內(nèi)核映像。

③修改platform.reg文件,添加以下內(nèi)容:

到此,GPIO口驅(qū)動程序所需的文件就修改完畢了,重新編譯內(nèi)核將生成的映像文件燒寫到開發(fā)板,完畢后自動啟動WinCE,到這里驅(qū)動程序就全部燒寫完成了。

3 控制步進(jìn)電機(jī)程序的實(shí)現(xiàn)

步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進(jìn)電機(jī)件。當(dāng)步進(jìn)驅(qū)動器接收到一個(gè)脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個(gè)固定的角度。即要使步進(jìn)電機(jī)運(yùn)動,只需對應(yīng)引腳輸出高電低電平即可。

利用VS2005開發(fā)一個(gè)可運(yùn)行在S3C2440開發(fā)板WinCE下的應(yīng)用程序,該應(yīng)用程序通過調(diào)用GPIO驅(qū)動來控制步進(jìn)電機(jī)運(yùn)動。由于GPIO驅(qū)動為流驅(qū)動程序,用CreatFile()函數(shù)以文件方式打開驅(qū)動,內(nèi)容為:

然后使用該句柄調(diào)用DeviceIoControl()函數(shù),內(nèi)容為:

利用Sleep()函數(shù)進(jìn)行高低電平延時(shí)發(fā)送步進(jìn)電機(jī)所需的脈沖信號。

應(yīng)用程序編制完后,示波器與S3C2440控制器相應(yīng)端口連接好后,在VS2005下運(yùn)行程序,軟件ActiveSync通過USB與其通信,將在GPIO應(yīng)用層編制的步進(jìn)電機(jī)運(yùn)動程序部署到開發(fā)板后,給GPB5和GPA10兩個(gè)端口發(fā)送高低電平,分別延時(shí)100 ms和50 ms輸出脈沖波形如圖1所示。

圖1 示波器輸出波形

4 結(jié)束語

本文主要介紹了在WinCE嵌入式系統(tǒng)下一種實(shí)現(xiàn)GPIO驅(qū)動程序的方法,利用VS2005開發(fā)工具實(shí)現(xiàn)了S3C2440控制器的GPIO控制步進(jìn)電機(jī)運(yùn)動,對在WinCE下開發(fā)其它驅(qū)動程序以及控制步進(jìn)電機(jī)的運(yùn)動具有一定的啟示作用。

[1]王鴻鈺,朱恩.步進(jìn)電機(jī)控制技術(shù)入門[M].上海:同濟(jì)大學(xué)出版社,1990.

[2]姜波.Windows Embedded CE程序設(shè)計(jì)實(shí)踐[M].北京:機(jī)械工業(yè)出版社2009.

[3]何宗鍵.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航天大學(xué)出版社,2006.

[4]楊澤輝,徐燕玲,劉碧君等.基于嵌入式WinCE的GPIO驅(qū)動開發(fā)[J].太原科技大學(xué)學(xué)報(bào),2010,31(6):446-448.

[5]胡秀風(fēng),丁承君,張明路,等.Windows CE下GPIO驅(qū)動程序的設(shè)計(jì)與應(yīng)用[J].微計(jì)算機(jī)信息,2009,25(6-2):281-283.

[6]周立功等.ARM&WinCE實(shí)驗(yàn)與實(shí)踐——基于S3C2410[M].北京:北京航空航天大學(xué)出版社,2007.

The design and application of stepper motor drive for WinCE

YUAN Bo1,LAN Wen-tao2
(1.Xi'an Railway Vocational&Technical Institute,Xi'an 710014,China;2.Huawei Technologies Co.,LTD.Xi'an Research Institute,Xi'an 710000,China)

In order to satisfy the stream interface driver development of S3C2440 board,WinCE driver contains function and how to call the driver in the application program is accomplished in this paper,the stepper motor motion has also insolved,the process can be enlighten to development stream driver and control stepped motor motion.

WinCE;GPIO drive;stepper motor

TN409

A

1674-6236(2016)16-0174-03

2015-08-22稿件編號:201508112

袁 博(1984—),女,陜西宜川人,碩士研究生,助教。研究方向:供用電技術(shù)及其自動化控制。

猜你喜歡
低電平驅(qū)動程序寄存器
數(shù)字電路中“邏輯非”的用法辨析
鐵道車輛高/低電平信號智能發(fā)生器設(shè)計(jì)
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
分簇結(jié)構(gòu)向量寄存器分配策略研究*
集成電路靜態(tài)參數(shù)測試
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
一種可重構(gòu)線性反饋移位寄存器設(shè)計(jì)
驅(qū)動程序更新與推薦
驅(qū)動程序更新與推薦
富源县| 信丰县| 富平县| 尼勒克县| 泰州市| 丹江口市| 广饶县| 东光县| 伽师县| 河池市| 台北市| 金山区| 陆川县| 色达县| 元朗区| 峨山| 伊金霍洛旗| 兴业县| 周口市| 法库县| 清苑县| 迭部县| 双流县| 南澳县| 浮梁县| 酒泉市| 翁源县| 神池县| 鹤庆县| 靖宇县| 柯坪县| 东阳市| 洪雅县| 伽师县| 故城县| 厦门市| 游戏| 北票市| 唐山市| 华池县| 永福县|