由AT91M55800A構成的簡(jiǎn)易數據采集方案
該芯片中含有兩個(gè)完全相同的4通道10位A/D轉換器,可組成一個(gè)8通道10位A/D轉換器。每個(gè)A/D轉換器具有 4個(gè)模擬輸入引腳和數字觸發(fā)輸入引腳,并提供一個(gè)AIC的中斷信號。兩個(gè)A/D轉換器共享模擬電源引腳和參考電壓輸入引腳。每一個(gè)通道可被單獨地使能或禁止,并具有自己的數據寄存器。A/D轉換器可以配置為在轉換序列后自動(dòng)進(jìn)入睡眠 模式,并可由軟件、T/D或外部信號來(lái)觸發(fā)。
由于AT91M55800A內部不帶片內程序存儲器,需要對方案外擴[1] Flash存儲器作為程序存儲器用于存放程序代碼、常量表及掉電后需要保存的數據。AT91M55800A的總線(xiàn)讀寫(xiě)周期最長(cháng)可以有8個(gè)周期的延時(shí),要求 Flash存儲器的最低讀速度不低于該速度??紤]到方案的執行速度和程序大小,選用訪(fǎng)問(wèn)速度為70 ns的HY29LV160(芯片容量是1 M×16 bit共2 MB),基本上能夠滿(mǎn)足方案要求。
該系統中接入AD590[2]作為溫度傳感器,該器件以電流作為輸出量來(lái)指示溫度,并且將得到的信號經(jīng)過(guò)放大器的緩沖隔離得到一個(gè)與溫度成正比的電壓,從而實(shí)現對溫度的測量。
3 A/D轉換編程
在AT91M55800A中,兩個(gè)A/D轉換器獨立工作,每個(gè)A/D轉換器只能讀取一個(gè)通道的A/D轉換器值。此程序讓用戶(hù)指定哪一個(gè)通道工作,然后讀取指定通道的值,并顯示出來(lái)。由于A(yíng)/D轉換器的精度有10位和8位,這里設置為10位,因此獲得的數據范圍在0~3FF之間。
A/D轉換器的工作過(guò)程不同于一般的外圍設備。初始化后,必須有一個(gè)觸發(fā)命令高速A/D轉換器進(jìn)行采集,此時(shí)A/D轉換器對其激活的某一個(gè)通道上的模擬信號進(jìn)行采樣、保持,然后轉換成數據,存儲在數據寄存器中。用戶(hù)可以從狀態(tài)寄存器中了解到A/D轉換器是否已經(jīng)轉換完成,然后通過(guò)讀取數據寄存器得到A/D 轉換后的數值。
A/D轉換程序流程圖見(jiàn)圖3。
對A/D轉換器進(jìn)行編程,使用AT91庫(在/pe-riph/adc目錄下),與A/D轉換器相關(guān)的代碼部分[3]如下:
a)adc.h:A/D轉換器用戶(hù)接口結構定義StructADC、控制寄存器ADC-CR、模式寄存器ADC-MR和其他一些重要寄存器的各個(gè)重要位的定義、A/D轉換器中斷服務(wù)程序函數定義。
b)Lid_adc.h:A/D轉換器描述符定義、庫函數的定義。
e)Lid_adc.c:庫函數的詳細代碼。包括:初始化ADC at91_adc_open、關(guān)閉ADC at91_adc_close、獲得狀態(tài)寄存器的值at91_adc_get_status、設置控制寄存器的值at91_adc_trig_cmd、讀取A/D轉換的值at91_adc_read、打開(kāi)指定的A/D轉換通道at91_adc_channel_open、關(guān)閉指定的A/D轉換通道 at91_adc_channel_close、獲取通道開(kāi)和關(guān)的狀態(tài)at91_adc_channel_geI_status等。
4 結束語(yǔ)
本文介紹了一個(gè)基于A(yíng)RM7的數據采集方案。該方案通過(guò)硬件的具體設計和軟件編程實(shí)現了預期的目標。利用ARM進(jìn)行數據采集可以使方案更穩定,而且可以達到功耗小、性能高的效果,適合在多種工業(yè)場(chǎng)合中應用。
評論