英创公司新近推出的高性价比工控主板产品EM9170,其主板内部带有2路AD通道,可用于温度、电压的测试。AD通道的基本指标如下:
通道数 |
AD分辨率 |
输入模式 |
满量程 |
2 |
12-bit |
单端输入 |
2.5V(内部参考源) |
2路AD通道中CH0与GPIO28复用管脚,CH1与GPIO29复用管脚。因此若客户应用中需要使用AD通道,则不能再使用对应的GPIO功能。
在EM9170的SDK中已为客户应用程序导出了AD采集的接口函数如下:
//------------------------------------------------------------------------------
// 功能:初始化AD单元
//------------------------------------------------------------------------------
BOOL AdcInit(void);
//------------------------------------------------------------------------------
// 功能:关闭AD单元
//------------------------------------------------------------------------------
void AdcDeinit(void);
//------------------------------------------------------------------------------
// 功能:设置AD通道的相关参数
//
// 输入参数
// id = INAUX0:AD通道;= INAUX1:AD通道。
// settlingTime:通道稳定事件,一般设置为。
// pRef:一般选择内部参考源INTREF。
// numSamples:每次采集的样本数,通常为1
//------------------------------------------------------------------------------
BOOL AdcConfigureChannel(CHAN_ID id, DWORD settlingTime,
POS_REF pRef, DWORD numSamples);
//------------------------------------------------------------------------------
// 功能:设置AD通道的相关参数
//
// 输入参数
// id = INAUX0:AD通道;= INAUX1:AD通道。
// pBuf:数据缓冲区。注意12-bit数据在16-bit缓冲区中是左对齐的,低4-比特无效。
// nbSamples:采样个数,数据缓冲区应不小于采样个数。
//------------------------------------------------------------------------------
BOOL AdcGetSamples(CHAN_ID id, UINT16* pBuf, DWORD nbSamples);
以上函数定义包含在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。
全部0条评论
快来发表一下你的评论吧 !