0 引 言
在計算機測量、控製及信號處理中,數據采集發揮著至關(guan) 重要的作用。數據采集是獲取數據的重要手段,它是從(cong) 傳(chuan) 感器或其他待測設備等模擬或數字被測單元中自動采集信息的過程。而采用ARM內(nei) 部的A/D轉換資源,具有轉換速度較高、工作可靠、設計的複雜度較低等優(you) 點。同時,ARM還具有體(ti) 積小、運算速度高,A/D轉換分辨率較高的特性,使ARM得到了廣泛的應用。本文利用ATMEL公司ARM7係列中的AT91M55800A設計了一個(ge) 簡易的數據采集方案。該方案具有結構簡單、開發容易,可靠性強、價(jia) 格低廉等特點,有一定的實用價(jia) 值。
1 數據采集方案的結構和功能
方案結構如圖1所示。
該方案是由接收、A/D轉換和處理、輸出3部分組成。本方案以AT91M55800A為(wei) 核心,該芯片是一個(ge) 高性能的32位處理芯片,內(nei) 部有一個(ge) 8選1的模擬通道,一個(ge) 10位的A/D轉換通道。預處理電路將傳(chuan) 感器拾取的信號進行隔離放大和濾波至A/D轉換所需0~3 V,處理過的模擬信號通過AT91M55800A中的A/D轉換通道變成數字信號,並根據要求進行相應的處理,最後由液晶顯示器輸出。同時,本方案使用Flash存儲(chu) 器作為(wei) 程序存儲(chu) 器用於(yu) 保存數據。

2 硬件組成
AT91M55800A是ATMEL公司基於(yu) ARM7TDMI核的AT91的16/32位微控製器家族成員。它通過完全可編程的外部總線接口直接連到片外存儲(chu) 器,使讀或寫(xie) 操作最快可以達到一個(ge) 時鍾周期,通過將帶有片內(nei) SRAM的ARM7TDMI處理器核、多種外圍功能模塊、模擬接口和低功耗振蕩器集成於(yu) 單一矽片。AT91M55800A為(wei) 低功耗應用提供了一個(ge) 高度靈活和高性價(jia) 比的解決(jue) 方案。其主要特點如下:
a)集成了ARM7TDMI ARM Thumb處理器核,高性能的32位RISC體(ti) 係結構,高代碼密度的16位指令集,嵌入式ICE;
b)8 kB片內(nei) SRAM,32位數據總線寬度,單時鍾周期訪問,方案可最大擴展64 MB存儲(chu) 器,軟件可編程的8位或16位外部數據總線;
c)主/從(cong) 式SPI接口,8位~16位可編程數據長度,4個(ge) 外部從(cong) 芯片選擇;
d)可編程的看門狗電路,提高方案的安全可靠性;
e)58個(ge) 可編程I/O口線,擴展了輸入輸出口線;
f)先進電源管理控製器,具有正常、等待、慢速、待機和掉電方式;
g)8優(you) 先級、可單獨屏蔽的向量中斷控製器,6通道16位定時器/計數器,3個(ge) USART,每個(ge) USART有2個(ge) 專(zhuan) 用的PDC通道;
h)8通道10位A/D轉換器,2通道10位D/A轉換器;
i) 采用片內(nei) 主振蕩器和PLL倍頻的時鍾產(chan) 生器,采用片內(nei) 32 kHz振蕩器的實時時鍾。
圖2為(wei) 方案的實際應用電路。

該芯片中含有兩(liang) 個(ge) 完全相同的4通道10位A/D轉換器,可組成一個(ge) 8通道10位A/D轉換器。每個(ge) A/D轉換器具有4個(ge) 模擬輸入引腳和數字觸發輸入引腳,並提供一個(ge) AIC的中斷信號。兩(liang) 個(ge) A/D轉換器共享模擬電源引腳和參考電壓輸入引腳。每一個(ge) 通道可被單獨地使能或禁止,並具有自己的數據寄存器。A/D轉換器可以配置為(wei) 在轉換序列後自動進入睡眠
模式,並可由軟件、T/D或外部信號來觸發。
由於(yu) AT91M55800A內(nei) 部不帶片內(nei) 程序存儲(chu) 器,需要對方案外擴Flash存儲(chu) 器作為(wei) 程序存儲(chu) 器用於(yu) 存放程序代碼、常量表及掉電後需要保存的數據。AT91M55800A的總線讀寫(xie) 周期最長可以有8個(ge) 周期的延時,要求Flash存儲(chu) 器的最低讀速度不低於(yu) 該速度。考慮到方案的執行速度和程序大小,選用訪問速度為(wei) 70 ns的HY29LV160(芯片容量是1 M×16 bit共2 MB),基本上能夠滿足方案要求。
該係統中接入AD590作為(wei) 溫度傳(chuan) 感器,該器件以電流作為(wei) 輸出量來指示溫度,並且將得到的信號經過放大器的緩衝(chong) 隔離得到一個(ge) 與(yu) 溫度成正比的電壓,從(cong) 而實現對溫度的測量。
3 A/D轉換編程
在AT91M55800A中,兩(liang) 個(ge) A/D轉換器獨立工作,每個(ge) A/D轉換器隻能讀取一個(ge) 通道的A/D轉換器值。此程序讓用戶指定哪一個(ge) 通道工作,然後讀取指定通道的值,並顯示出來。由於(yu) A/D轉換器的精度有10位和8位,這裏設置為(wei) 10位,因此獲得的數據範圍在0~3FF之間。
A/D轉換器的工作過程不同於(yu) 一般的外圍設備。初始化後,必須有一個(ge) 觸發命令高速A/D轉換器進行采集,此時A/D轉換器對其激活的某一個(ge) 通道上的模擬信號進行采樣、保持,然後轉換成數據,存儲(chu) 在數據寄存器中。用戶可以從(cong) 狀態寄存器中了解到A/D轉換器是否已經轉換完成,然後通過讀取數據寄存器得到A/D轉換後的數值。
A/D轉換程序流程圖見圖3。

對A/D轉換器進行編程,使用AT91庫(在/pe-riph/adc目錄下),與(yu) A/D轉換器相關(guan) 的代碼部分如下:
a)adc.h:A/D轉換器用戶接口結構定義(yi) STructADC、控製寄存器ADC-CR、模式寄存器ADC-MR和其他一些重要寄存器的各個(ge) 重要位的定義(yi) 、A/D轉換器中斷服務程序函數定義(yi) 。
b)Lid_adc.h:A/D轉換器描述符定義(yi) 、庫函數的定義(yi) 。
e)Lid_adc.c:庫函數的詳細代碼。包括:初始化ADC at91_adc_open、關(guan) 閉ADC at91_adc_close、獲得狀態寄存器的值at91_adc_get_status、設置控製寄存器的值at91_adc_trig_cmd、讀取A/D轉換的值at91_adc_read、打開指定的A/D轉換通道at91_adc_channel_open、關(guan) 閉指定的A/D轉換通道at91_adc_channel_close、獲取通道開和關(guan) 的狀態at91_adc_channel_geI_status等。
4 結束語
本文介紹了一個(ge) 基於(yu) ARM7的數據采集方案。該方案通過硬件的具體(ti) 設計和軟件編程實現了預期的目標。利用ARM進行數據采集可以使方案更穩定,而且可以達到功耗小、性能高的效果,適合在多種工業(ye) 場合中應用。
轉載請注明出處。







相關文章
熱門資訊
精彩導讀



















關注我們

