0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术EM9287 Linux环境的AD数据采集介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-17 08:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

EM9287是英创公司新近推出的,专门针对网络通讯、智能终端等应用的工控主板产品。EM9287可选择预装Linux-3.9.7操作系统。在Linux-3.9.7中,AD数据采集已采用新的工业IO(简称IIO)驱动程序框架,本文主要介绍应用程序如何读取相关的AD数据。此外,英创公司的另一款主流工控主板产品EM9280也升级到Linux-3.9.7,具有与EM9287完全相同的AD通道,因此本文所介绍的AD数据读取方法同样适用于EM9280。

EM9287支持2路单端模拟信号输入AIN1和AIN2,输入量程为 0V – 3.6V,信号管脚在CN1的17#和18#管脚。除了支持2路AD外,应用程序还可读取主板的CPU芯片iMX28的芯片当前温度,以了解设备的运行情况。以下是测试程序:

#include
#include
#include
#include
#include
char iiotype[16][32] = {
''in_voltage0_raw'',
'in_voltage1_raw',
'in_voltage2_raw',
'in_voltage3_raw',
'in_voltage4_raw',
'in_voltage5_raw',
'in_voltage6_raw',
'in_voltage7_raw',
'in_temp8_raw',
'in_temp9_raw',
'in_voltage10_raw',
'in_voltage11_raw',
'in_voltage12_raw',
'in_voltage13_raw',
'in_voltage14_raw',
'in_voltage15_raw' };
// return = 0: voltage value from AIN1, unit: mV
// < 0: failed 
int read_AIN1(float *fvoltage)
{
int value, ret = 0;
char filename[80];
FILE *fp;
char buf[20];
sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[0]);
fp = fopen(filename, 'rt' );
if( fp==NULL )
{
printf('open %s fail! ', filename);
*fvoltage = 0.0;
ret = -1;
return ret;
}
fread( buf, 1, sizeof(buf), fp );
fclose(fp);

// convert to integer
sscanf( buf, '%d', &value );
*fvoltage = 0.9 * value;
return ret;
}
// return = 0: voltage value from AIN2, unit: mV
// < 0: failed 
int read_AIN2(float *fvoltage)
{
int value, ret = 0;
char filename[80];
FILE *fp;
char buf[20];
sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[1]);
fp = fopen(filename, 'rt' );
if( fp==NULL )
{
printf('open %s fail! ', filename);
*fvoltage = 0.0;
ret = -1;
return ret;
}
fread( buf, 1, sizeof(buf), fp );
fclose(fp);
// convert to integer
sscanf( buf, '%d', &value );
*fvoltage = 0.9 * value;
return ret;
}
// return = 0: temperature value from CPU, unit: K (Kalvin)
// < 0: failed 
int read_CPU_temperature(float *ftemp)
{
int v_ch9, v_ch8, ret = 0;
char filename[80];
FILE *fp;
char buf[20];
sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[9]);
fp = fopen(filename, 'rt' );
if( fp==NULL )
{
printf('open %s fail! ', filename);
*ftemp = 0.0;
ret = -1;
return ret;
}
fread( buf, 1, sizeof(buf), fp );
fclose(fp);
// convert to integer
sscanf( buf, '%d', &v_ch9 );
sprintf( filename, '/sys/bus/iio/devices/iio:device0/%s', iiotype[8]);
fp = fopen(filename, 'rt' );
if( fp==NULL )
{
printf('open %s fail! ', filename);
*ftemp = 0.0;
ret = -1;
return ret;
}
fread( buf, 1, sizeof(buf), fp );
fclose(fp);
// convert to integer
sscanf( buf, '%d', &v_ch8 );
*ftemp = ((float)(v_ch9 - v_ch8) * 1012) / 4000;
return ret;
}
int main(int argc, char** argv)
{
int ret = 0;
float fvalue;
printf('EM9280/EM9287 IIO AD test v2.0 ');
// read AIN1
ret = read_AIN1(&fvalue);
if(ret < 0) 
{
return ret;
}
printf('AIN1 = %.2f mV ', fvalue);
// read AIN2
ret = read_AIN2(&fvalue);
if(ret < 0) 
{
return ret;
}
printf('AIN2 = %.2f mV ', fvalue);
// read CPU temperature
ret = read_CPU_temperature(&fvalue);
if(ret < 0) 
{
return ret;
}
printf('CPU Temperature = %.1f K, (%.1f C degree) ', fvalue, (fvalue - 273));
return ret;
}

在控制台(console)窗口,也可通过Linux命令查看IIO驱动的原始通道:

进一步,可用cat命令读取各个通道AD转换的原始数据,EM9280、EM9287内部AD分辨率为12-bit,所以原始数据范围为:0 – 4095。开发人员可通过以下命令来快速了解设备的AD数据状况。

#cat in_voltage0_raw // 读取CH0的原始数据
#cat in_voltage1_raw // 读取CH1的原始数据
#cat in_temp8_raw // 读取CPU温度的原始数据
#cat in_temp9_raw // 读取CPU温度的原始数据

其他的原始通道涉及EM9287的触摸屏、内部供电电源等,已不在本文的介绍范围。

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

    关注

    88

    文章

    11817

    浏览量

    219555
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    37162
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    数据采集网关的“工业性能”如何体现

    工业现场环境复杂多变,高温、粉尘、电磁干扰、网络波动无处不在,对数据采集设备的稳定性提出极高要求。一款可靠的数据采集网关,不仅要“采得到”,更要“采得准、传得稳、用得安”。数据采集网关
    的头像 发表于 03-13 15:01 302次阅读
    <b class='flag-5'>数据采集</b>网关的“工业性能”如何体现

    车载总线数据采集设备不会管理?TE Devices Launcher 演示# 软件开发# 数据采集# 设备

    数据采集
    康谋自动驾驶
    发布于 :2026年02月11日 17:07:31

    地下“气象站”:管式墒情仪的微环境数据采集革命

    数据采集
    pingao141378
    发布于 :2026年01月23日 14:03:23

    单片机多路数据采集系统的设计

    及原理 传感器装置将按照设定的方式传递模拟电量。模拟电量的生成方式较为复杂,可以简单的按照常规电量转化的方式加以处置,也可以按照非物理量的应用特征进行设计,使单片机的多路数据采集系统可以完整结合信息
    发表于 01-07 06:44

    从0开始使用LabVIEW操作数据采集卡-概述和新建新建项目

    概述 由于LabVIEW强大的可视化和分析功能,其在数据采集卡行业有着广泛的应用,本文以北京中泰联科技有限公司的EM9316BD-16为例来说明如何使用LabVIEW编写一个能够显示16通道模拟
    的头像 发表于 10-10 14:54 660次阅读
    从0开始使用LabVIEW操作<b class='flag-5'>数据采集</b>卡-概述和新建新建项目

    基于GIS的海洋环境数据采集与管理系统

    基于GIS的海洋环境数据采集与管理平台系统
    的头像 发表于 09-19 17:09 645次阅读
    基于GIS的海洋<b class='flag-5'>环境</b><b class='flag-5'>数据采集</b>与管理系统

    工业数据采集有哪些方式

    工业数据采集是工业互联网和智能制造的核心环节,通过多种技术手段获取设备、生产线、工厂等环节的实时数据,为后续分析、优化和决策提供基础。以下是工业数据采集的主要方式及其特点: 一、基于传
    的头像 发表于 09-01 17:38 1600次阅读

    实时、高效,解锁气象数据采集新速度——气象数据采集

    了强大动力。 笛远气象数据采集器是一款功能强大的数据采集、计算、管理设备,其应用领域极为广泛,不仅在气象领域发挥着核心作用,还延伸至环境、智慧城市、海洋、新能源等多个领域。这种跨领域的适应性,源于它丰富多样的数
    的头像 发表于 08-22 17:27 893次阅读

    数据采集卡与传感器

    文章介绍数据采集设备的分类,以及如何采集传感器的数据
    的头像 发表于 08-04 15:04 760次阅读
    <b class='flag-5'>数据采集</b>卡与传感器

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 9552次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    数据采集的关键节点设备是什么

    数据采集是从各种数据源中获取所需信息的过程,其关键节点设备根据应用场景、采集对象和技术需求的不同而有所差异。以下是一些常见的
    的头像 发表于 06-13 09:15 1411次阅读
    <b class='flag-5'>数据采集</b>的关键节点设备是什么

    高品质存储卡助力精准数据采集

    随着信息技术的飞速发展,数据采集系统(DAQ)已经广泛应用于各行各业,包括工业自动化、科研实验、汽车电子、环境监测等领域。这些系统在各种复杂应用中承载着高精度、高速的数据采集、处理和分
    的头像 发表于 06-10 17:27 707次阅读
    高品质存储卡助力精准<b class='flag-5'>数据采集</b>

    数据采集卡与步进电机

    本文介绍了步进电机的工作原理,以及如何使用数据采集卡控制步进电机动作。
    的头像 发表于 05-26 15:53 1696次阅读
    <b class='flag-5'>数据采集</b>卡与步进电机

    基于GIS的海洋环境数据采集与管理平台软件

    基于GIS的海洋环境数据采集与管理平台软件
    的头像 发表于 04-28 22:15 811次阅读
    基于GIS的海洋<b class='flag-5'>环境</b><b class='flag-5'>数据采集</b>与管理平台软件

    labview进行的数据采集

    请问在labview中进行数据采集,为保证不同设备之间采集数据的同步性,准备利用PPS进行触发开始任务,利用DAQmx设备内部时钟源来设置数据采集的一些参数,但是为了防止pps信号的缺失,准备能够周期性的利用pps对内部晶振进行
    发表于 04-27 10:19