中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

嵌入式系统

抖音 德嘉 泓格论坛 FLIR红外热像论坛
工控论坛首页 嵌入式系统 → 浏览主题: ARM9工控主板内嵌AD的应用
发表新帖 回复该主题
回帖:0个,阅读:538 [上一页] [1] [下一页]
* 帖子主题:

ARM9工控主板内嵌AD的应用

分享到
458
emtronix2010
文章数:91
年度积分:50
历史总积分:458
注册时间:2010/4/2
发站内信
发表于:2010/4/16 8:45:11
#0楼
英创公司推出的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.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);

 

[查看全文]

[关于英创]

[更多文章]

[技术论坛]



本文PDF格式下载

工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002