<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM的微伏信號在線監(jiān)測系統(tǒng)設(shè)計

          基于ARM的微伏信號在線監(jiān)測系統(tǒng)設(shè)計

          作者: 時間:2011-07-12 來源:網(wǎng)絡(luò) 收藏
          2.2  數(shù)據(jù)采集與顯示電路

          本文引用地址:http://www.ex-cimer.com/article/150480.htm

            本中數(shù)據(jù)采集和顯示電路的核心器件采用32位7內(nèi)核嵌入式處理器S3C44B0X。S3C44B0X內(nèi)置部件有8通道10位ADC(模數(shù)轉(zhuǎn)換器)、8KB cache(高速緩存器)、內(nèi)置SDRAM(同步動態(tài)存儲器)、LCD控制器、2通道UART(通用異步收發(fā)器)、4通道DMA(直接存儲器存取)、71個通用I/O端口等。

            本中使用S3C44B0X完成A/D數(shù)據(jù)采集、LCD控制液晶顯示器、鍵盤輸入和故障報警四個主要功能。經(jīng)前置放大電路處理完成之后的0~2.5V電壓電極性,由S3C44B0X的10位精度片上A/D采集到CPU中。S3C44B0自帶LCD控制器,利用DMA控制器從RAM中的顯示緩沖區(qū)讀取顯示數(shù)據(jù),提供給LCD控制器刷新液晶顯示屏。鍵盤和報警電路利用S3C44B0通用I/O端口進(jìn)行控制。

            3   軟件

            本軟件設(shè)計μClinux操作系統(tǒng)和MicroWindows圖形用戶界面。μClinux操作系統(tǒng)是從Linux內(nèi)核派生而來,在標(biāo)準(zhǔn)的Linux基礎(chǔ)上進(jìn)行了適當(dāng)?shù)牟眉艉蛢?yōu)化,具有易配置、體積小、易移植的優(yōu)點。用MicroWindows圖形用戶界面實現(xiàn)類似桌面電腦的視窗效果,易于實現(xiàn)人機(jī)交互。

            系統(tǒng)軟件包括操作系統(tǒng)自帶的設(shè)備驅(qū)動程序、操作系統(tǒng)運(yùn)行環(huán)境、根據(jù)用戶需要自定義的設(shè)備驅(qū)動程序、封裝了底層驅(qū)動的中間層接口程序、高級應(yīng)用程序幾個部分。在本系統(tǒng)軟件設(shè)計中,分別在驅(qū)動層和高級應(yīng)用層程序中實現(xiàn),其中高級應(yīng)用層程序框圖如圖4所示。

            

          基于ARM的微伏信號在線監(jiān)測系統(tǒng)設(shè)計

            圖4 高級應(yīng)用程序框圖

            高級應(yīng)用程序的設(shè)計以控制算法為核心,多個任務(wù)為控制服務(wù)。系統(tǒng)內(nèi)核定時將測得的數(shù)據(jù)通過回調(diào)函數(shù)傳遞給高級應(yīng)用程序。高級應(yīng)用程序為每個被測通道分配一個數(shù)據(jù)緩沖區(qū),數(shù)據(jù)緩沖區(qū)是個含有10個無符號整型數(shù)的數(shù)組,GCC編譯器默認(rèn)無符號整型數(shù)長度為16位。測量電路中ADC為10位模數(shù)轉(zhuǎn)換器,緩沖區(qū)中的每個單元的低10位存儲數(shù)值,最高位為1表示該數(shù)據(jù)無效或者已經(jīng)被處理,為0表示該數(shù)據(jù)有效并等待處理,第10~14位表示數(shù)據(jù)編號,用以區(qū)分不同通道的數(shù)據(jù)。內(nèi)核驅(qū)動程序把測量數(shù)據(jù)按格式準(zhǔn)備好后,回調(diào)函數(shù)把數(shù)據(jù)傳送給高級應(yīng)用程序。應(yīng)用程序只要使用“與”、“或”操作就可以提取數(shù)據(jù)類型、實際數(shù)據(jù)等信息。

            3.1  自定義設(shè)備驅(qū)動

            設(shè)備驅(qū)動程序是操作系統(tǒng)和硬件設(shè)備之間的接口,它主要完成對設(shè)備初始化、實現(xiàn)內(nèi)核和應(yīng)用程序與設(shè)備之間的數(shù)據(jù)交換、檢測處理設(shè)備錯誤等功能。在μClinux操作系統(tǒng)使用設(shè)備文件的方式來進(jìn)行設(shè)備管理應(yīng)用,一個具體的物理設(shè)備被映射為一個設(shè)備文件,用戶程序可以像對其它文件一樣對此設(shè)備文件進(jìn)行打開、關(guān)閉、數(shù)據(jù)讀寫等操作。

            系統(tǒng)軟件設(shè)計中的驅(qū)動層部分,除了使用μClinux操作系統(tǒng)自帶的設(shè)備驅(qū)動程序以外,需要對外部設(shè)備編寫自定義的設(shè)備驅(qū)動程序,以滿足操作系統(tǒng)的要求。以字符設(shè)備為ADC為例,主要對其編寫自定義的驅(qū)動程序。使用結(jié)構(gòu)體file_operations{}作為ADC字符設(shè)備的函數(shù)接口,內(nèi)核通過這個函數(shù)接口來操作設(shè)備。自定義后的file_operations{}結(jié)構(gòu)體如下:

            struct file_operations ADC_fops = {

            read:           ADC_read,   //從設(shè)備中讀數(shù)據(jù)操作

            poll:        ADC_poll,   //查詢設(shè)備

            ioctl:       ADC_ioctl,   //進(jìn)行讀、寫以外的IO控制操作

            open:       ADC_open,   //打開設(shè)備

            release:      ADC_release, //關(guān)閉設(shè)備

            ……};

            編寫自定義的驅(qū)動程序完成后,內(nèi)核調(diào)用相應(yīng)的函數(shù)即對ADC設(shè)備文件進(jìn)行open、ioctl等具體操作。

            3.2  圖形用戶界面設(shè)計

            圖形用戶界面(GUI)把圖形視窗引入到嵌入式平臺上,其友好的界面為大多數(shù)用戶所接受,也得到越來越廣泛的應(yīng)用。本設(shè)計采用MicroWindows來實現(xiàn)圖形界面,以窗口形式顯示測量數(shù)據(jù)及其它參數(shù)。MicroWindows是一個較早出現(xiàn)的、開放源碼的嵌入式圖形用戶界面軟件,它提供了比較完整的圖形功能,支持多種外部設(shè)備輸入,具有占用空間小、可移植性好的優(yōu)點。在μClinux操作系統(tǒng)上使用MicroWindows易于圖形程序的開發(fā)。

            MicroWindows采用了層次化結(jié)構(gòu):在底層提供設(shè)備的驅(qū)動,在中間層通過一個可移植圖形引擎實現(xiàn)繪制多邊形、區(qū)域填充、使用顏色等,在頂層實現(xiàn)多種API以適應(yīng)不同的應(yīng)用環(huán)境。MicroWindows API 之間采用消息傳遞的基本通信機(jī)制。消息被儲存在應(yīng)用程序的消息隊列中,不同消息對應(yīng)不同的事件,核心的API通過傳遞對應(yīng)相應(yīng)事件的消息來實現(xiàn)各種功能,如窗口的創(chuàng)建、繪制、移動等等。

            在本設(shè)計中,編寫Microwindows的應(yīng)用程序,基本結(jié)構(gòu)為初始化、創(chuàng)建窗口與資源、進(jìn)入消息循環(huán)三部分。主程序中相關(guān)部分如下所示:

            int WINAPI WinMain()

            {MwRegisterEditControl(NULL);  // 申明不使用控件

            wndclass.style= CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW;

            wndclass.lpszClassName = szAppName;  // 創(chuàng)建窗口屬性的結(jié)構(gòu)體變量

            RegisterClass(wndclass);

            hwnd=CreateWindowEx();  //創(chuàng)建窗口

            while (1)

            {if(PeekMessage(msg,NULL,0,0,PM_REMOVE))  //消息查詢

            {TranslateMessage(msg);DispatchMessage(msg);}  //傳遞消息至窗口處理程序

            ScanKey_function();  //掃描鍵盤

            RxKeyvalue(hedit_Param);

            ……}}

            在調(diào)用窗口創(chuàng)建函數(shù)CreateWindowEx()后,系統(tǒng)在內(nèi)存中創(chuàng)建了一個虛擬的窗口,之后調(diào)用窗口顯示函數(shù)ShowWindow()就可將虛擬窗口顯示為可視窗口,成為Windows風(fēng)格的視窗界面。在本設(shè)計中,主程序運(yùn)行時不斷調(diào)用提取消息函數(shù)PeekMessage(),查看消息隊列是否收到任務(wù)信息,當(dāng)有信息產(chǎn)生時,就執(zhí)行對應(yīng)的消息處理函數(shù)。同時,在消息循環(huán)里也反復(fù)調(diào)用鍵盤緩沖區(qū)查詢函數(shù)RxKeyvalue (),查看是否有鍵盤輸入,以便隨時響應(yīng)。

            4. 抗干擾措施

            在本設(shè)計中,采用低溫漂的基準(zhǔn)穩(wěn)壓電源為前置放大電路供電,并且在每個元件的電源管腳處加去耦電容。元器件選用高精度、漂移小的精密運(yùn)算放大器;選用高精度、低溫漂的精密電阻;線采用雙絞線或屏蔽線。印刷板布線時,盡量縮短前置放大電路的線,并確保了電路接地、屏蔽良好。

            5  結(jié)語

            本文創(chuàng)新點在于設(shè)計和實現(xiàn)了一種的微伏信號系統(tǒng),以差動放大方式消除外界對測量信號的干擾,利用S3C44B0X微處理器和μClinux操作系統(tǒng)實現(xiàn)液晶屏顯示數(shù)據(jù)、人機(jī)交互和故障自動報警功能,為實現(xiàn)微伏信號提供了一種體積小、功耗低、操作靈活的解決方案。本設(shè)計已投入使用,長時間工作穩(wěn)定。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();