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
    +关注

    关注

    87

    文章

    11030

    浏览量

    207259
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6068

    浏览量

    34728
收藏 人收藏

    评论

    相关推荐

    多通道数据采集仪怎么用的

    多通道数据采集仪是一种广泛应用于工业、科研、教育等领域的高精度数据采集设备。它能够同时采集多个通道的模拟信号,并将采集到的数据进行处理、存储
    的头像 发表于 07-02 09:08 83次阅读

    常见的数据采集工具的介绍

    数据采集数据分析和处理的基础,它涉及到从各种数据源中提取、收集和整理数据的过程。数据采集工具的选择对于
    的头像 发表于 07-01 14:51 72次阅读

    数据采集边缘网关解决企业数据采集痛点的关键

    随着信息技术的快速发展,企业对于数据采集和处理的需求日益增长。然而,传统的数据采集方式往往面临着数据量大、传输延迟、安全性不足等问题,给企业的运营和管理带来了诸多挑战。在这样的背景下,
    的头像 发表于 04-07 13:56 182次阅读

    边缘数据采集网关:解决企业转型痛点的关键

    随着信息技术的飞速发展,越来越多的企业开始意识到数据的重要性,并着手进行数字化转型。然而,在转型过程中,许多企业面临着数据采集的难题。特别是在工业制造、能源管理、物流运输等领域,由于设备分布广泛
    的头像 发表于 04-07 13:51 130次阅读

    网关数据采集解决方案

    随着物联网技术的快速发展,数据采集已成为企业运营、管理和决策的重要支撑。网关作为连接不同网络的关键设备,其在数据采集过程中发挥着至关重要的作用。本文将详细介绍一种网关
    的头像 发表于 03-08 16:05 257次阅读
    网关<b class='flag-5'>数据采集</b>解决方案

    基于物通博联工业数据采集网关的工厂数据采集方案

    随着工业互联网技术的不断发展,工厂生产过程中的数据采集和管理变得越来越重要。然而,由于工厂现场设备众多、种类繁多,数据采集和管理面临着很多挑战,如设备接口不统一、数据传输不稳定、
    的头像 发表于 01-26 15:14 247次阅读
    基于物通博联工业<b class='flag-5'>数据采集</b>网关的工厂<b class='flag-5'>数据采集</b>方案

    plc数据采集模块的缺点 plc数据采集模块与数据采集卡的区别

    PLC(可编程逻辑控制器)数据采集模块是用于连接传感器、执行器和机器设备,收集实时数据的设备。虽然PLC数据采集模块在工业自动化领域得到了广泛应用,但它仍然存在一些缺点,而与之相比,数据采集
    的头像 发表于 01-19 14:20 807次阅读

    数据采集卡怎么用 数据采集卡怎么读取数据

    数据采集卡怎么用 数据采集卡怎么读取数据  数据采集卡(Data Acquisition Card)是一种用于采集和转换各种输入信号的硬件设
    的头像 发表于 12-15 09:50 1094次阅读

    工程监测数据采集需要哪些技术

    、变形等物理现象。 通信技术:监测数据需要通过通信技术传输到数据中心或者云端服务器,以便进行数据的存储、管理和分析。
    的头像 发表于 11-24 10:43 395次阅读
    工程监测<b class='flag-5'>数据采集</b>需要哪些<b class='flag-5'>技术</b>

    设备数据采集网关介绍-天拓四方分享

    监控设备状态、优化生产流程、提高工作效率的重要手段。本文将详细介绍设备数据采集网关的结构、原理、功能以及在实践中的应用效果和优缺点。 一、设备数据采集网关的结构与原理 设备数据采集网关
    的头像 发表于 11-16 16:40 540次阅读

    基于ARM与线性CCD的高速数据采集系统设计

    接口,它使电路工作在更加平稳、简洁而易丁控制,同时也提高了ARM的工作效率。为了提高通信速度,这里采用通用申行总线(USB)技术米与PC进行通信。ARM是用来控制主处理器的数据采集数据的计算和
    发表于 09-26 07:41

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    数据采集编程指南 上篇

    本节主要介绍数据采集技术的基本知识点,包括以下三个斱面的内容: 1. 一个完整数据采集系统的基本组成部分 2. NI 提供了基于哪些平台的数据采
    发表于 09-11 09:21 0次下载

    什么是数据采集仪它有什么作用

    数据采集
    稳控自动化
    发布于 :2023年08月14日 09:28:12

    什么是数据采集仪?它有什么作用?

    ,为后续分析和决策提供依据。数据采集仪广泛应用于各行业和领域,例如气象、环保、能源、医疗、交通、农业等。通过使用数据采集仪,人们能够及时获取各种数据信息,从而更好地了解某个系统或
    的头像 发表于 08-11 09:27 1128次阅读
    什么是<b class='flag-5'>数据采集</b>仪?它有什么作用?