英創(chuàng)公司新近推出的高性價比工控主板產(chǎn)品EM9170,其主板內(nèi)部帶有2路AD通道,可用于溫度、電壓的測試。AD通道的基本指標如下:
通道數(shù) |
AD分辨率 |
輸入模式 |
滿量程 |
2 |
12-bit |
單端輸入 |
2.5V(內(nèi)部參考源) |
2路AD通道中CH0與GPIO28復用管腳,CH1與GPIO29復用管腳。因此若客戶應用中需要使用AD通道,則不能再使用對應的GPIO功能。
在EM9170的SDK中已為客戶應用程序?qū)С隽薃D采集的接口函數(shù)如下:
//------------------------------------------------------------------------------
// 功能:初始化AD單元
//------------------------------------------------------------------------------
BOOL AdcInit(void);
//------------------------------------------------------------------------------
// 功能:關(guān)閉AD單元
//------------------------------------------------------------------------------
void AdcDeinit(void);
//------------------------------------------------------------------------------
// 功能:設置AD通道的相關(guān)參數(shù)
//
// 輸入?yún)?shù)
// id = INAUX0:AD通道;= INAUX1:AD通道。
// settlingTime:通道穩(wěn)定事件,一般設置為。
// pRef:一般選擇內(nèi)部參考源INTREF。
// numSamples:每次采集的樣本數(shù),通常為1
//------------------------------------------------------------------------------
BOOL AdcConfigureChannel(CHAN_ID id, DWORD settlingTime,
POS_REF pRef, DWORD numSamples);
//------------------------------------------------------------------------------
// 功能:設置AD通道的相關(guān)參數(shù)
//
// 輸入?yún)?shù)
// id = INAUX0:AD通道;= INAUX1:AD通道。
// pBuf:數(shù)據(jù)緩沖區(qū)。注意12-bit數(shù)據(jù)在16-bit緩沖區(qū)中是左對齊的,低4-比特無效。
// nbSamples:采樣個數(shù),數(shù)據(jù)緩沖區(qū)應不小于采樣個數(shù)。
//------------------------------------------------------------------------------
BOOL AdcGetSamples(CHAN_ID id, UINT16* pBuf, DWORD nbSamples);
以上函數(shù)定義包含在adc_sdk.h中,該頭文件及應用程序使用AD采集功能所需要的一個庫文件adcsdk.lib可在光盤的應用范例test_adc中找到:
#include 'stdafx.h'
#include
#include
#include 'adc_sdk.h'
int _tmain(int argc, _TCHAR* argv[])
{
BOOL bRet;
DWORD dwNumSamples;
UINT16 DatBuf[32];
printf('EM9170 ADC Test\n');
bRet = AdcInit( );
if(!bRet)
{
printf('Init ADC failed\n');
return -1;
}
dwNumSamples = 1;
bRet = AdcConfigureChannel(INAUX0, 2, INTREF, dwNumSamples);
bRet = AdcConfigureChannel(INAUX1, 2, INTREF, dwNumSamples);
memset(DatBuf, 0, sizeof(DatBuf));
for( ; ; )
{
bRet = AdcGetSamples(INAUX0, &DatBuf[0], 1);
bRet = AdcGetSamples(INAUX1, &DatBuf[1], 1);
printf('INAUX0 = 0x%x, INAUX1 = 0x%x\r', DatBuf[0]>>4, DatBuf[1]>>4);
// delay 50ms
Sleep(50);
}
AdcDeinit();
return 0;
}
在VC應用程序中,鏈接adcsdk.lib的方法是通過project菜單進入property pages。
在Input ->“Additional Dependencies”欄目中天然所需鏈接的庫文件:adcsdk.lib。
-
WINDOWS
+關(guān)注
關(guān)注
3文章
3523瀏覽量
88330 -
嵌入式主板
+關(guān)注
關(guān)注
7文章
6084瀏覽量
35162
發(fā)布評論請先 登錄
相關(guān)推薦
評論