<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于S3C2410及嵌入式Linux的氫氣濃度的檢測系統的解決方案

基于S3C2410及嵌入式Linux的氫氣濃度的檢測系統的解決方案

作者: 時(shí)間:2010-12-12 來(lái)源:網(wǎng)絡(luò ) 收藏

2.3 ADC與微處理器接口電路

傳感器輸出信號頻率一般都遠小于1 kHz。根據香農采樣定理可知,采樣頻率至少要大于信號最高頻率的2倍。另外,為了滿(mǎn)足最小2 mg/m3的分辨率,這里采用美國ADI公司推出的一款高速低功耗串行12位8 通道A/D轉換器AD7888。它是單電源工作,電壓VDD范圍為2.7~5.25 V。AD7888有2.5 V的片內基準電壓,也可以使用外部基準電壓,范圍從1.2 V到VDD。模擬輸入電壓從O到VREF,采樣頻率可高達125 kHz,可與多種串行接口(SPI/QSPI/MICROWIRE/DSP)兼容。

本監測系統的核心處理器是三星公司推出的16/32位RISC處理器。它為手持設備和一般應用提供了低價(jià)格、低功耗、高性能的小型微控制器。提供了豐富的內部設備:分開(kāi)的16KB的指令Cache和16 KB的數據Cache,MMU虛擬存儲器管理,LCD控制器,支持NAND Flash系統引導,系統管理器,3通道UART,4通道的DMA,4通道PWM定時(shí)器,I/O端口,RTC,8通道10位ADC和觸摸屏接口,I2C總線(xiàn)接口,USB主從機,USB設備,SD主卡和MMC卡接口,2通道的SPI以及內部PLL時(shí)鐘倍頻器等。

該系統利用SPI實(shí)現A/D轉換器與ARM處理器的數據傳輸,其接口電路如圖3所示。SPlCLK0為SPI串行時(shí)鐘信號,SPIMISO0和 SPIMOSI0數據引腳用來(lái)發(fā)送和接收串行數據。nSS0作為SPI的片選信號,低電平有效。

3 系統軟件結構設計

本系統在上移植了韓國Mizi公司開(kāi)發(fā)的Bootloader(VIVI)、-2.6.14內核以及cramfs根文件系統,構建了具有操作系統的軟件環(huán)境。

3.1 外圍設備驅動(dòng)程序設計

設備驅動(dòng)程序是為特定硬件提供給用戶(hù)程序的一組標準化接口,它隱藏了設備工作的細節。但對于特定的硬件設備來(lái)說(shuō),其對應的設備驅動(dòng)程序不同,所以不同外部設備驅動(dòng)程序的開(kāi)發(fā)是軟件設計過(guò)程中必不可少的一部分。

Linux常以模塊的形式加載設備,便于多個(gè)設備的協(xié)調工作也利于應用程序的開(kāi)發(fā)和擴展。設備驅動(dòng)在加載時(shí)首先需要調用入口函數ini- t_module()。該函數完成設備驅動(dòng)的初始化工作,比如寄存器置位、結構體賦值等。其中最重要的一個(gè)工作就是向內核注冊該設備,字符設備調用函數 register_chrdev()完成注冊,塊設備調用函數reglster_blkdev()完成注冊。相應地,設備驅動(dòng)在卸載時(shí)需要調用 cleanup_mod-ule()。該函數完成相應資源的回收、設備的注銷(xiāo)、釋放主設備號和設備文件名等。字符設備利用 unregister_chrdev()注銷(xiāo)設備,塊設備利用unregister_blkdev()注銷(xiāo)設備。

Linux內核中,每個(gè)設備驅動(dòng)程序都對應一個(gè)file_operations數據結構。在file_operations數據結構中,定義了一些與此設備相關(guān)的打開(kāi)、關(guān)閉、讀/寫(xiě)、控制等功能函數,當用戶(hù)進(jìn)行系統調用時(shí),將自動(dòng)使用驅動(dòng)程序中特定的函數來(lái)實(shí)現具體的操作。實(shí)際上,編寫(xiě)設備驅動(dòng)程序的過(guò)程也就是實(shí)現struct file_operations結構中的部分所需函數的過(guò)程。

3.2 應用程序設計

有了設備驅動(dòng)程序提供底層硬件與應用程序的接口,Linux系統訪(fǎng)問(wèn)底層設備就像訪(fǎng)問(wèn)普通文件一樣。例如,打開(kāi)設備使用系統調用open(),關(guān)閉設備使用系統調用close(),讀/寫(xiě)設備使用系統調用read()和write()等。應用程序流程如圖4所示。首先系統上電復位,程序初始化,然后掃描鍵盤(pán)值,看是否有鍵值按下。若有,則進(jìn)行按鍵處理并按輸入步驟設置程序;若無(wú),則開(kāi)中斷并啟動(dòng)A/D轉換,等待轉換完成產(chǎn)生中斷,進(jìn)入中斷服務(wù)程序。中斷服務(wù)程序流程如圖5所示。首先關(guān)閉中斷,讀取A/D采集數據,調用適用于緩變信號的中值濾波算法處理轉換結果,將連續采樣的5次采樣值按大小排序,取中間值為本次有效值。然后,存儲處理后的數據并送顯示器顯示。最后,從中斷返回到主程序中,再判斷當前數據是否超過(guò)設定的臨界值。若大于臨界值,作報警處理;否則就開(kāi)中斷,等待下一次轉換結束。依此循環(huán)處理。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>