日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
數(shù)據(jù)采集系統(tǒng)中Windows CE.Net的幾種外設接口編程方法
數(shù)據(jù)采集系統(tǒng)中Windows CE.Net的幾種外設接口編程方法
 更新時間:2008-8-4 4:50:02  點擊數(shù):27
【字體: 字體顏色

    現(xiàn)在介紹Windows CE.Net的幾種接口方式在腦電波采集系統(tǒng)的應用。腦電監(jiān)護儀主要是對人腦細胞放電(微伏級),用頭皮表面安放的電極將電信號接收下來,經(jīng)放大器放大,由現(xiàn)代計算機技術將之變成數(shù)字信號,然后將計算得到的參數(shù)顯示在屏幕上,并通過網(wǎng)絡將其傳送至中央監(jiān)護系統(tǒng),進行進一步的存儲和處理。除了采集腦電信號以外,腦電監(jiān)護儀還需要采集血氧和血壓信號以配合腦電監(jiān)護。
    本系統(tǒng)硬件系統(tǒng)主要由CPU、Flash ROM、SDROM、以太網(wǎng)物理層、FIFO以及CPLD構成,如圖3所示。本系統(tǒng)CPU采用了ARM7TDMI內(nèi)核的RISC處理器S3C4510B。該芯片具有的8/16/32外部總線支持ROM、RAM、Flash存儲器、DRAM和外部IO;帶有MII接口的100Mpbs/10Mbps以太網(wǎng)控制器; 兩個UART通道; 支持21個中斷源,其中4個用于外部中斷; 最高系統(tǒng)時鐘可達50MHz。該系統(tǒng)腦電的采集由FIFO緩沖,CPLD用于產(chǎn)生FIFO控制邏輯和外部總線邏輯控制。當FIFO中腦電數(shù)據(jù)滿時, CPLD向CPU產(chǎn)生中斷信號, 請求CPU中斷處理。血氧和血壓分別通過串行口芯片傳入處理器。
    本系統(tǒng)操作系統(tǒng)采用Windows CE.Net 4.1,它所具有的多線程、多任務、完全搶占式的特點。WinCE的進程模式采用標準的Win32進程和線程模式,在運行時,系統(tǒng)可提供32個進程,線程的數(shù)量可以更多。進程和線程的同步可以通過臨界段、互斥和事件來進行,也可以通過互鎖函數(shù)來同步線程。

 
圖3 腦電采集系統(tǒng)

    此系統(tǒng)要用到串口、基于中斷的外部IO訪問和網(wǎng)絡等接口,其中基于中斷的腦電數(shù)據(jù)的采集是最關鍵的。這里采用的是基于中斷的非標準驅(qū)動,下面介紹一下其實現(xiàn)方法。
     要完成基于中斷的非標準驅(qū)動需要實現(xiàn)兩個步驟:一是編寫中斷服務線程(IST);二是注冊中斷服務線程(IST)。中斷信號由FIFO經(jīng)CPLD不斷產(chǎn)生,每發(fā)生一次中斷,運行在核心態(tài)的中斷服務例行程序(ISR)就調(diào)用一次中斷服務線程(IST) 。
    要實現(xiàn)腦電基于中斷方式從FIFO中讀取數(shù)據(jù),首先編寫IST程序,其結構如下:
DWORD ThreadIST(void *dat)
{
    ThreadISTData* pData = (ThreadISTData*)dat; //取得線程外部參數(shù)
    while(!pData->abort) // 循環(huán)直至通知退出
    { 
WaitForSingleObject(pData->hEvent, INFINITE); //等待同步事件
   //讀取腦電數(shù)據(jù), 并處理數(shù)據(jù)
   UCHAR  uChar= READ_PORT_UCHAR((PUCHAR)FIFO_ADDR);
    …….         
         InterruptDone(pData->sysIntr); // 通知操作系統(tǒng)中斷處理已完成
 }
 return SUCCESS;
}
    其中和ISR同步依靠事件方式建立,當中斷到來時,WaitForSingleObject函數(shù)停止等待。
    以下介紹是如何實現(xiàn)向ISR注冊中斷服務線程(IST):
    首先定義中斷主要參數(shù),這里由ThreadISTData結構體實現(xiàn),它同時也用于向IST傳遞參數(shù)。
typedef struct _ThreadISTData{
 boolean abort;
 DWORD dwIrq; //中斷號
 DWORD sysIntr;
 unsigned short m_nISTPriority ;  //線程優(yōu)先級
    HANDLE hEvent ; //事件, 用于操作系統(tǒng)與IST同步
 HANDLE hThread;
}  ThreadISTData;
hreadISTData g_ThreadISTData; 
然后創(chuàng)建中斷服務線程(IST),并設置中斷優(yōu)先級,求出邏輯中斷。
g_ThreadISTData.hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadIST, &g_ThreadISTData, CREATE_SUSPENDED, NULL);
CeSetThreadPriority(g_ThreadISTData.hThread,g_ThreadISTData.m_nISTPriority);
g_ThreadISTData.sysIntr = SYSINTR_FIRMWARE + INTR;// 求邏輯中斷
最后初始化,中斷服務線程(IST),并使其進入運行態(tài)。
InterruptInitialize(g_ThreadISTData.sysIntr, g_ThreadISTData.hEvent, NULL, 0);
ResumeThread(g_ThreadISTData.hThread); //啟動中斷服務線程(IST)
   通過以上代碼,即可較為簡潔可靠的實現(xiàn)腦電采集的驅(qū)動程序, 省去理解WinCE的復雜的驅(qū)動模型和編寫多個驅(qū)動標準函數(shù)。

7  總結
    本文討論了WinCE幾種外設接口的應用特點, 以其在腦電采集系統(tǒng)的應用為例,重點論述了非標準驅(qū)動程序的開發(fā)方法。 WinCE作為微軟公司不斷改進的嵌入式操作系統(tǒng), 它提供了豐富的接口軟件和編程方式。我們要本著簡潔,高效,可靠的原則,選用更優(yōu)越的接口方式和編程方式,使其在我們的采集系統(tǒng)中得到更高的實時性和可靠性。



  • 上一篇: I2C接囗芯片AD7416溫度采樣匯編語言程序設計
  • 下一篇: 基于PDIUSBD12芯片的USB接口的研究與開發(fā)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1