英创信息技术EM9170工控主板板载AD通道及应用简介

描述

        英创公司新近推出的高性价比工控主板产品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。

WINDOWS


        在Input ->“Additional Dependencies”栏目中天然所需链接的库文件:adcsdk.lib。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分