www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于WinCE系統(tǒng)的FIFO數(shù)據(jù)傳輸程序設(shè)計(jì)

1.引言

在嵌入式系統(tǒng)特別是數(shù)據(jù)采集系統(tǒng)中,實(shí)時(shí)性至關(guān)重要,它不僅要求嵌入式微處理器能快速作出響應(yīng),還要求嵌入式系統(tǒng)能及時(shí)處理數(shù)據(jù)[1]。在本文設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)中,如采用常規(guī)方法傳輸數(shù)據(jù),當(dāng)采集數(shù)據(jù)的速度較高時(shí),由于Windows CE系統(tǒng)和采集系統(tǒng)不能同步,可能會(huì)造成數(shù)據(jù)的丟失,使得系統(tǒng)不能及時(shí)準(zhǔn)確的傳輸數(shù)據(jù)。為解決這一問題,可以使用采集板上內(nèi)置的先入先出(FIFO)緩沖器。目前國內(nèi)關(guān)于在Windows CE系統(tǒng)中實(shí)現(xiàn)FIFO的文獻(xiàn)還未見報(bào)道。對(duì)此,本文討論了如何在Windows CE.net平臺(tái)上開發(fā)基于FIFO的數(shù)據(jù)采集板的驅(qū)動(dòng)程序,以保證數(shù)據(jù)采集數(shù)據(jù)的準(zhǔn)確性。通過試驗(yàn)將常規(guī)方法與FIFO進(jìn)行比較,得到較好的結(jié)果

2.系統(tǒng)的軟件及硬件平臺(tái)

嵌入式系統(tǒng)以其體積小、針對(duì)性強(qiáng)、實(shí)時(shí)性好等特點(diǎn),在通訊、控制和消費(fèi)電子等諸多領(lǐng)域得到了廣泛的應(yīng)用。本設(shè)計(jì)中的操作系統(tǒng)就是微軟公司推出的專門用于嵌入式系統(tǒng)的實(shí)時(shí)操作系統(tǒng)Windows CE.net,它是一個(gè)32位、多線程、多任務(wù)的嵌入式操作系統(tǒng),以其模塊化的結(jié)構(gòu),良好實(shí)時(shí)性能力,強(qiáng)大的通信能力和對(duì)多種CPU的支持,在各種工業(yè)控制、消費(fèi)電子等領(lǐng)域擁有較好的應(yīng)用前景[2]。

數(shù)據(jù)采集系統(tǒng)的硬件平臺(tái)是研華公司的MIC-2000工業(yè)控制計(jì)算機(jī),MIC-2000具有良好的機(jī)械可靠性和總線擴(kuò)展能力[3],可用于環(huán)境惡劣的工業(yè)現(xiàn)場(chǎng)。數(shù)據(jù)采集板是模擬量輸入板MIC-2718,它是一個(gè)高增益、高性能的多功能數(shù)據(jù)采集板,它提供的程序可控增益放大器使用戶可以不用外加電源就可以采集很小的輸入信號(hào),內(nèi)置的1K字FIFO緩沖區(qū)保證了采集數(shù)據(jù)的快速性和準(zhǔn)確性。MIC-2718為12位100KHz的A/D模塊,支持16路單端或8路差分輸入最大轉(zhuǎn)換時(shí)間為8usec,有軟件觸發(fā)、定時(shí)器觸發(fā)和外部觸發(fā)三種方式,MIC-2718的功能框圖如圖1所示。

MIC-2718支持跳線選擇16路單端輸入或8路差動(dòng)輸入,當(dāng)選擇單端輸入時(shí)每個(gè)通道只需要接一根信號(hào)線,信號(hào)的參考地為板上的公共地[4]。標(biāo)準(zhǔn)連線圖如圖2所示。當(dāng)選擇雙端輸入時(shí)每個(gè)通道有2根信號(hào)線,MIC-2718測(cè)量2個(gè)模擬信號(hào)的電壓差,如果信號(hào)源沒有接地,則稱為“浮”信號(hào)源,測(cè)量“浮”信號(hào)源用圖3所示的接線方法。

3.Windows CE驅(qū)動(dòng)程序

與其他操作系統(tǒng)一樣,Windows CE.net也提供了很多外設(shè)的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序?qū)⒉僮飨到y(tǒng)和設(shè)備連接起來,使操作系統(tǒng)能夠識(shí)別設(shè)備并為應(yīng)用程序提供設(shè)備服務(wù)[5]。 但是,對(duì)于非常規(guī)硬件設(shè)備(或者說對(duì)現(xiàn)有的Windows CE應(yīng)用系統(tǒng)是非常規(guī)的),微軟并沒有提供驅(qū)動(dòng)程序,因此需要設(shè)備的硬件廠商提供WndowsCE的驅(qū)動(dòng),或是使用者自行開發(fā)[6]。目前,還沒有MIC-2718的基于Windows CE.net 4.2版本的驅(qū)動(dòng)程序,因此需要自行開發(fā)。

Windows CE.net驅(qū)動(dòng)程序的2種模式是本機(jī)驅(qū)動(dòng)和流接口驅(qū)動(dòng)模式[7]。本機(jī)設(shè)備驅(qū)動(dòng)適于集成到基于Windows CE.net平臺(tái)的設(shè)備,如通用LED驅(qū)動(dòng)和電源驅(qū)動(dòng)。流接口驅(qū)動(dòng)模型適用于任何在邏輯上被認(rèn)為是一個(gè)數(shù)據(jù)源或數(shù)據(jù)存儲(chǔ)的設(shè)備的I/O設(shè)備(任何以產(chǎn)生或消耗數(shù)據(jù)流作為主要功能的外圍設(shè)備)[8],因此在采集系統(tǒng)中,WinCE的外圍設(shè)備驅(qū)動(dòng)程序一般以流接口驅(qū)動(dòng)程序較多。另外,絕大部分外圍設(shè)備驅(qū)動(dòng)程序都可映射為流接口驅(qū)動(dòng)程序。無論驅(qū)動(dòng)程序控制的設(shè)備是什么類型,流接口驅(qū)動(dòng)都使用相同的接口并導(dǎo)出一組相同的函數(shù)(流接口函數(shù))。

針對(duì)本文中數(shù)據(jù)采集系統(tǒng)和Windows CE中驅(qū)動(dòng)程序模型的特點(diǎn),本設(shè)計(jì)采用流接口驅(qū)動(dòng)程序模型。

4. FIFO傳輸方式與常規(guī)方式的實(shí)現(xiàn)與比較

FIFO存儲(chǔ)器有兩個(gè)端口(輸入口和輸出口),并按先入先出的順序來暫時(shí)存放數(shù)據(jù)。當(dāng)采用常規(guī)方式進(jìn)行數(shù)據(jù)傳輸時(shí),如采集板采樣速度很快,而系統(tǒng)不能及時(shí)讀出數(shù)據(jù)時(shí),新采集的數(shù)據(jù)會(huì)把原來的數(shù)據(jù)覆蓋,這時(shí)系統(tǒng)只能傳遞新的數(shù)據(jù),從而造成數(shù)據(jù)丟失。MIC-2718的FIFO緩沖器可以解決這個(gè)問題,F(xiàn)IFO在數(shù)據(jù)采集卡中作用是緩存數(shù)據(jù),解決采集系統(tǒng)中數(shù)據(jù)丟失的問題,它使采集板在高觸發(fā)率或多任務(wù)操作系統(tǒng)(如Windows操作系統(tǒng))中實(shí)現(xiàn)可靠穩(wěn)定的高速實(shí)時(shí)數(shù)據(jù)采集和傳輸。

MIC-2718在完成第一次A/D轉(zhuǎn)換后將數(shù)據(jù)存入MIC-2718的A/D數(shù)據(jù)寄存器(地址為BASE+0和BASE+1(BASE為MIC- 2718的基地址))和FIFO緩沖區(qū)的第一個(gè)存儲(chǔ)單元,下一次A/D轉(zhuǎn)換時(shí),新的數(shù)據(jù)會(huì)覆蓋A/D數(shù)據(jù)寄存器中的數(shù)據(jù),但是如果緩沖區(qū)的第一個(gè)存儲(chǔ)單元中的元素沒有被系統(tǒng)讀取,F(xiàn)IFO會(huì)自動(dòng)將此次轉(zhuǎn)換的數(shù)據(jù)存入緩沖區(qū)的下一個(gè)存儲(chǔ)單元,上一次的數(shù)據(jù)仍然保留。每一次轉(zhuǎn)換的數(shù)據(jù)都被依次存入FIFO的緩沖區(qū)中,最多可以存儲(chǔ)1024次A/D轉(zhuǎn)換的數(shù)據(jù)。轉(zhuǎn)移數(shù)據(jù)時(shí),只需讀取FIFO數(shù)據(jù)寄存器(地址為BASE+23和BASE+24)中的數(shù)據(jù),它也是 FIFO緩沖區(qū)中的第一個(gè)存儲(chǔ)單元的數(shù)據(jù),此時(shí)緩沖區(qū)中第一個(gè)數(shù)據(jù)被讀出,下一個(gè)存儲(chǔ)單元的數(shù)據(jù)自動(dòng)代替它的位置。通過采集板中FIFO的狀態(tài)寄存器(地址為BASE+25)可以判斷FIFO緩沖器當(dāng)前的狀態(tài)。狀態(tài)寄存器的D0位EF是FIFO為空的標(biāo)志,D1位HF是FIFO半滿的標(biāo)志,D2位FF是 FIFO為滿的標(biāo)志。另外,對(duì)BASE+25寄存器的任何寫操作都將清空FIFO緩沖器,EF被置1,HF、FF置0。

Windows CE系統(tǒng)提供的驅(qū)動(dòng)程序開發(fā)包(Windows CE Driver Development Kit,Ceddk)中提供了豐富的驅(qū)動(dòng)程序函數(shù)(地址映射、總線訪問、建立DMA緩沖和I/O操作等),可以滿足硬件平臺(tái)上任何總線的需要[8],它通常被實(shí)現(xiàn)為動(dòng)態(tài)庫Ceddk.lib文件。由于MIC-2718是基于ISA總線的,可以直接對(duì)采集板的地址進(jìn)行讀寫操作,同時(shí),由于FIFO讀寫操作是相互獨(dú)立的,可以同時(shí)進(jìn)行,所以不必考慮采集板與Windows CE系統(tǒng)數(shù)據(jù)傳輸時(shí)的時(shí)序配合問題,但是在對(duì)FIFO進(jìn)行讀寫操作時(shí),要判斷FIFO的狀態(tài),只有在緩沖區(qū)中數(shù)據(jù)未滿時(shí)才能寫入,未空時(shí)才能讀出[9],以避免一些錯(cuò)誤的操作。

[!--empirenews.page--]

當(dāng)數(shù)據(jù)采集板通過程序控制方式、定時(shí)器觸發(fā)方式或外部觸發(fā)方式采集到模擬信號(hào)后自動(dòng)進(jìn)行A/D轉(zhuǎn)換后將數(shù)據(jù)放入A/D數(shù)據(jù)寄存器并依次寫入FIFO 緩沖區(qū)中,Windows CE.net中的用戶應(yīng)用程序通過檢測(cè)FIFO標(biāo)志寄存器和MIC-2718狀態(tài)寄存器(地址為BASE+8)的狀態(tài)來確定是否進(jìn)行了有效的A/D轉(zhuǎn)換。下面給出在Windows CE開發(fā)平臺(tái)上對(duì)FIFO進(jìn)行讀操作的部分代碼,設(shè)MIC-2718的基地址為300H:
PUCHAR ioPortBase=MapIoSpace(300H);//將物理地址影射為虛擬地址
BYTE aistatus=READ_PORT_UCHAR(ioPortBase+8);//讀MIC-2718的狀態(tài)寄存器
BYTE status=READ_PORT_UCHAR(ioPortBase+25);//讀FIFO的狀態(tài)寄存器
BYTE ad0,ad1;
if(aistatus&0x10)//若MIC-2718狀態(tài)寄存器的A/D轉(zhuǎn)換位有效
{
if(status&1!=0)//若FIFO不為空,則讀FIFO
{
ad0=READ_PORT_UCHAR(ioPortBase+23);
ad1=READ_PORT_UCHAR(ioPortBase+24);
}
}

表1  A/D數(shù)據(jù)寄存器與FIFO數(shù)據(jù)寄存器的比較

在使用MIC-2718的某一通道分別用常規(guī)方式和FIFO方式對(duì)一個(gè)持續(xù)變化的電壓源做連續(xù)的信號(hào)采集和傳輸時(shí),兩種方式傳輸?shù)臄?shù)據(jù)如表1所示。可以看出,第2和第8組中A/D數(shù)據(jù)寄存器中的數(shù)值是錯(cuò)誤的,可見使用普通A/D傳輸方式存在數(shù)據(jù)丟失問題,因此并不能準(zhǔn)確傳輸數(shù)據(jù),而使用FIFO方式可以保證數(shù)據(jù)傳輸?shù)耐暾浴?/p>

[!--empirenews.page--]

5.結(jié)束語

通過實(shí)際測(cè)試,在Windows CE的高速數(shù)據(jù)采集系統(tǒng)中,采用FIFO可以保證數(shù)據(jù)采集的可靠性,并且編程簡(jiǎn)單,程序調(diào)試方便,可以極大地提高數(shù)據(jù)采集板的采樣效率。本文作者的創(chuàng)新點(diǎn)在于在Windows CE.net系統(tǒng)下實(shí)現(xiàn)FIFO數(shù)據(jù)數(shù)據(jù)傳輸,從而保證了數(shù)據(jù)傳輸的可靠性。

參考文獻(xiàn)
1. 劉大鵬,馬孝江,基于Windows CE的嵌入式操作系統(tǒng)實(shí)時(shí)性分析[J],自動(dòng)化技術(shù)與應(yīng)用,2002(1): 41
2. Microsoft Corporation. About Windows Embedded[EB/OL]. http://www.microsoft.com/windows/embedded/about.mspx,2005
3. Advantech Co,Ltd. PC-Based Modular Industral Computer Designed for Industrial Automation MIC-2000 Modular Industuial Computer Series[Z].1996-5
4. Advantech Co,Ltd. PC-Based Modular Industral Computer Designed for Industrial Automation MIC-2718 High-Performance DAS Module[Z].1998-4
5. 周毓林,寧楊,盧貴強(qiáng),付林林,Windows CE.net內(nèi)核定制及應(yīng)用開發(fā)[M],(北京)電子工業(yè)出版社,2005.2
6. 王少紅,徐小力,李海燕,Windows CE平臺(tái)上開發(fā)采集板驅(qū)動(dòng)程序[J],北京機(jī)械工業(yè)學(xué)院學(xué)報(bào),2004,19(3):23
7. 楊軍波,須文波,基于WinCE環(huán)境的CAN適配卡驅(qū)動(dòng)程序的設(shè)計(jì)與實(shí)現(xiàn)[J],微計(jì)算機(jī)信息,2005,21(12):26
8. 張冬泉,譚南林,王雪梅,焦風(fēng)川,Windows CE實(shí)用開發(fā)技術(shù)[M],(北京)電子工業(yè)出版社,2006.4
9. 曾照福,成繼勛,采用FIFO的CAN總線接口卡的設(shè)計(jì)[J],工礦自動(dòng)化,2002(9): 33
 

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

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉