新聞中心

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

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

作者: 時間:2010-12-12 來源:網絡 收藏

2.3 ADC與微處理器接口電路

傳感器輸出信號頻率一般都遠小于1 kHz。根據(jù)香農采樣定理可知,采樣頻率至少要大于信號最高頻率的2倍。另外,為了滿足最小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)兼容。

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

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

3 系統(tǒng)軟件結構設計

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

3.1 外圍設備驅動程序設計

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

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

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

3.2 應用程序設計

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

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關推薦

技術專區(qū)

關閉