英創公司推出的ARM9 嵌入式工控主板產品系列,均預裝了正版WinCE5.0 操作系統。支持微軟公司的eVC 進行應用程序的開發。eVC 是微軟針對嵌入式系統提供的一套功能完善且可免費獲取的開發工具,與PC 平臺通用的VC 保持了高度的一致性,同時考慮C/C++的執行效率,因此eVC 被作為英創ARM9 工控主板上應用程序開發的首選工具。在利用英創ARM9 工控主板進行產品開發時,可能會出現簡單的模擬信號的采集。因此,英創公司的EM9260和EM9160就考慮到了這些應用,引出了系統自帶的ADC(Analog-to-digital Converter)接口,并提供相應的程序庫,方便客戶的使用。
EM9260有2路ADC,EM9160有2路ADC,均是與GPIO復用:
采樣速度:300kSPS
數據寬度:10位
基準信號:3.3V
量程范圍:0 – 3.3V
信號輸入:
ADC0 | ADC1 | |
EM9260 | GPIO4 | GPIO5 |
EM9160 | GPIO4 | GPIO5 |
在使用ADC的時候,將“EM9X60_ADC_API.lib”和 “EM9X60_ADC_API.h”兩個文件放在工程目錄下,并在應用程序中加入“EM9X60_ADC_API.h”文件,如下圖所示:
然后對工程進行設置,主要是使工程鏈接EM9X60_ADC_API.lib庫文件。
從“Project”菜單下,打開工程的 “settings”項(或是快捷鍵“ALT+F7”),在“LINK”選項中的“Object/library modules:”欄,加入“EM9X60_ADC_API.lib”,如下圖所示:
設置好后,點擊“OK”確認。應當注意的是,在工程中的“Debug”和“Release”兩個狀態下都要進行分別設置。
由于是和GPIO復用,所以使用ADC后,GPIO功能將不能使用。具體操作函數如下:
啟動ADC:
BOOL StartADC( int ChIndex );
輸入參數:
ChIndex 要啟動的ADC的通道號,僅0和1有效
返回值:
啟動成功,返回TRUE;啟動失敗,返回FALSE
讀取ADC數據:
DWORD GetADC(int ChIndex);
輸入參數:
ChIndex 要讀取數據的ADC的通道號,僅0和1有效
返回值:
0xffffffff:數據沒有轉換好
其它:
可用的ADC輸出的數據
基本應用框圖:
應用示例:
bStart_AD=StartADC(nChr); // 啟動ADC,其中,nChr為要啟動的ADC通道號
if ( bStart_AD != TRUE ) // 判斷ADC是否啟動成功
{
printf('ADC%d Initialize Fail!!\n',nChr);
return -1;
}
printf('ADC%d Initialize OK!!\n',nChr);
for (ni=0 ; ni<20 ; ni++ )
{
Do
dwtmp = GetADC(nChr); // 數據讀取
while( dwtmp == Invalid ); // 判斷數據是否為有效數據
dwCLDATA[ni] = dwtmp; // ADC數據緩存
}
dwAverage=0; // ADC數據處理,在這里,是進行了20次的平均
for (ni=0 ; ni<20 ; ni++ ) // 然后再算出相應的輸入信號的電壓值并打印出來
dwAverage+=dwCLDATA[ni];
dwAverage/=20;
// ref 3.3V 10位 (1023)
// 電壓分辨率Div約為3.2mV
fVot=(float) (dwAverage*Div)/1000;
printf('ADC%d Vot %1.2f V\r',nChr,fVot);
Sleep(500);
成都英創信息技術有限公司 028-8618 0660