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

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

3天内不再提示

英创信息技术EM9380多通道AD数据采集介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-16 10:01 次阅读

工业控制应用、特别是要求闭环控制的实时应用中,通常都需要实时采集模拟信号。因此作为一款面向实时控制应用的工控主板EM9380,配置了最多可达8路的AD转换单元。为了实现闭环控制的高效操作,AD转换是由板上独立运行的硬件处理器(Cortex-M3)来直接操作。应用程序通过驱动程序,其设备文件名为“MCU2:”,来操作AD的功能。在标准配置的EM9380中,其AD单元的基本技术特性包括:

• 单端输入采集,可进一步选择单通道、双通道、4通道及8通道模式。
•差分输入采集,可进一步选择单通道、双通道及4通道模式。
• 采集触发模式方面,支持软件触发和阈值触发两种模式。软件触发指一旦应用程序调用相关API函数,即进行数据采集;而阈值触发模式是指当应用程序启动AD采集后,

只有当输入的数据超出所设置的门限阈值时,才开始采集数据,这种模式广泛应用于状态监测及波形捕捉等应用。
• 采集数据方面,支持单点采集和波形采集两种模式。单点采集指每个通道仅采集一个样点;而波形采集则是按设置的采样间隔,采集一定长度的数据序列,这种模式一般

应用于需要分析波形数据的场合,如需要做FFT,获得波形的频谱特征。

本文后续部分将针对EM9380的多通道AD在硬件、软件方面的特性,具体介绍实现数据采集的相关步骤。

AD通道的硬件接口说明

EM9380中与AD关联的管脚是GPIO8 – GPIO15,这8路GPIO在上电时的缺省配置是数字输入模式。只有当应用程序调用AD转换的API时,其相应的管脚才会转换为模拟输入状态。EM9380共支持7种输入模式,每种模式使用固定的通道配置,未使用的管脚则保持在GPIO模式。输入模式与具体管脚的关系列表如下:

单通道单端输入

AD通道号 信号输入管脚 备注
AD_CH0 GPIO8 与公共GND构成信号回路

双通道单端输入

AD通道号 信号输入管脚 备注
AD_CH0 GPIO8 与公共GND构成信号回路
AD_CH1 GPIO9 与公共GND构成信号回路

4通道单端输入

AD通道号 信号输入管脚 备注
AD_CH0 GPIO8 与公共GND构成信号回路
AD_CH1 GPIO9 与公共GND构成信号回路
AD_CH2 GPIO10 与公共GND构成信号回路
AD_CH3 GPIO11 与公共GND构成信号回路

8通道单端输入

AD通道号 信号输入管脚 备注
AD_CH0 GPIO8 与公共GND构成信号回路
AD_CH1 GPIO9 与公共GND构成信号回路
AD_CH2 GPIO10 与公共GND构成信号回路
AD_CH3 GPIO11 与公共GND构成信号回路
AD_CH4 GPIO12 与公共GND构成信号回路
AD_CH5 GPIO13 与公共GND构成信号回路
AD_CH6 GPIO14 与公共GND构成信号回路
AD_CH7 GPIO15 与公共GND构成信号回路

单通道差分输入

AD通道号 输入管脚 输入信号 实际输入信号
AD_CH0 GPIO8 AD_CH0+ AD_CH0+/ AD_CH0-
GPIO9 AD_CH0-

双通道差分输入

AD通道号 输入管脚 输入信号 实际输入信号
AD_CH0 GPIO8 AD_CH0+ AD_CH0+/ AD_CH0-
GPIO9 AD_CH0-
AD_CH2 GPIO10 AD_CH2+ AD_CH2+/ AD_CH2-
GPIO11 AD_CH2-

4通道差分输入

AD通道号 输入管脚 输入信号 实际输入信号
AD_CH0 GPIO8 AD_CH0+ AD_CH0+/ AD_CH0-
GPIO9 AD_CH0-
AD_CH2 GPIO10 AD_CH2+ AD_CH2+/ AD_CH2-
GPIO11 AD_CH2-
AD_CH4 GPIO12 AD_CH4+ AD_CH4+/ AD_CH4-
GPIO13 AD_CH4-
AD_CH6 GPIO14 AD_CH6+ AD_CH6+/ AD_CH6-
GPIO15 AD_CH6-

对于单端输入,其输入满量程为0 – 2.5V,对应的量化数据分别为0 – 4095(12-bit AD分辨率)。差分输入时,数据值与输入电压的关系如下表所示:

AD转换数据(HEX) CH+输入电压 CH-输入电压 备注
4095(0xFFF) 2.5V 0V 正向最大差
2048(0x800) CH+ = CH-
0(0x000) 0 2.5V 反向最大差

在标准配置下,各AD通道的输入阻抗大致为40KΩ。为了保证AD转换的精度,建议前端输入的模拟信号,应根据实际信号的特点,加入适当的信号调理单元。

接口软件说明

为了操作EM9380的AD采集功能,首先需要打开硬件协处理器的驱动程序,其设备文件名为”MCU2:”(注意是MCU2,而不是MCU1):

#include// 数据类型定义
HANDLE hMCU2;
hMCU2 = CreateFile(_T(“MCU2:”), // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)

驱动程序MCU2通过DeviceIoControl,支持以下AD采集命令:

MCU_GENERIC_ADC_SE1 // 单端输入,单通道模式
MCU_GENERIC_ADC_SE2 // 单端输入,双通道模式
MCU_GENERIC_ADC_SE4 // 单端输入,4通道模式
MCU_GENERIC_ADC_SE8 // 单端输入,8通道模式
MCU_GENERIC_ADC_DI1 // 差分输入,单通道模式
MCU_GENERIC_ADC_DI2 // 差分输入,双通道模式
MCU_GENERIC_ADC_DI4 // 差分输入,4通道模式

同时以上命令需通过以下的数据结构来设置相关参数

typedef struct
{
BYTE ucSize; // 本数据结构大小 = 24字节
BYTE ucCmd; // AD命令码:MCU_GENERIC_ADC_XXX
DWORD dwPeriod; // 采样间隔,单位为us,= 0:软件触发
WORD wData[8]; // 返回的采集数据
bool bFlashed; // 保存本配置作为启动缺省功能
BYTE ucChkSum; // 校验和
} MCU_ADC_INFO, *PMCU_ADC_INFO; // struct for ADC

参数dwPeriod为采样间隔,设置为0表示软件触发数据采集,不为0,则按设置的采样间隔进行AD转换。最短采样间隔为25us,即最高采样率40Ksps。注意若启动多通道数据采集,则每通道的采样周期为dwPeriod×通道数。

当dwPeriod不为零时,wData[ ]的前三个值将作为输入参数,其中wData[0]表示采集的总样点数,wData[1]表示阈值窗口的上限值(最大值=4095),wData[2]表示阈值窗口的下限值(最小值=0)。通过这些参数的合理逻辑组合,就可实现以下4种数据形式的采集:

dwPeriod wData[0] wData[1] wData[2] 采集数据
= 0 - - - 软件触发,单点采集
> 0 通道数 wData[1] > wData[2] 阈值触发,单点采集
> 0 通道数×N 0 0 软件触发,N点波形采集
> 0 通道数×N wData[1] > wData[2] 阈值触发,N点波形采集

对单点数据采集,MCU2驱动将以MCU_ADC_INFO数据结构的形式回传采集结果,其中采集数据包含在wData[ ]中,分别对应AD的CH0 – CH7。wData的数据格式为:

16-bit AD转换数据
D15 – D12(4-bit) D11 – D0(12-bit)
通道号(0 – 7) ADC实际转换输出的数据值(0 – 4095)

对波形采集,为了提高效率,回传的数据采用以下数据结构的形式:
typedef struct
{
BYTE ucSize; // 本数据结构大小 = 51字节
BYTE ucCmd; // AD命令码:MCU_GENERIC_ADC_XXX
WORD wData[24]; // 返回的采集数据
BYTE ucChkSum; // 校验和
} MCU_ADC_FLOW, *PMCU_ADC_FLOW; // struct for ADC

24个采集数据将根据AD采集命令所使用的通道数,顺序循环排列。而每个数据的格式与单点采集数据的格式是一样的。

以下代码实现单端输入8通道,软件触发单点采集:
MCU_ADC_INFO Info; //定义结构对象
memset(&Info, 0, sizeof(MCU_ADC_INFO));//清零
//填写所需的参数
Info.ucSize = sizeof(MCU_ADC_INFO);
Info.ucCmd = MCU_GENERIC_ADC_SE8; //单端8通道输入
Info.dwPeriod = 0; //软件触发,单点采集
// 生成chksum字节
Info.ucChkSum = ChkSum(&Info, sizeof(MCU_ADC_INFO)-1);
// 调用DeviceIoControl
if (!DeviceIoControl(hMCU2, // File handle to the driver
MCU_IOCTL_ACCESS, // I/O control code
&Info, // input buffer
sizeof(MCU_ADC_INFO), // in buffer size
&Info, // out buffer
sizeof(MCU_ADC_INFO), // out buffer size
NULL, // pointer to number of bytes returned
NULL)) // ignored (=NULL)
{
// 出错处理......
return FALSE;
}
// 对采集的数据Info.wData[]进行处理......

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

    关注

    7

    文章

    6084

    浏览量

    35164
收藏 人收藏

    评论

    相关推荐

    PLC采集网关如何实现品牌PLC数据采集

    。特别是当企业使用多个品牌的PLC设备时,如何实现品牌PLC数据采集,更是一个亟待解决的问题。本文将详细介绍PLC采集网关如何实现品牌P
    的头像 发表于 07-11 17:08 398次阅读

    通道数据采集卡各通道不独立的原因

    通道数据采集卡(Multi-channel Data Acquisition Card,简称MDA)是一种用于采集、存储和处理多路信号的电子设备。它广泛应用于工业自动化、科研、医疗、
    的头像 发表于 07-02 09:12 572次阅读

    通道数据采集仪的作用与用途

    通道数据采集仪是一种广泛应用于工业、科研、教育等领域的高性能数据采集设备。它能够同时采集多个通道
    的头像 发表于 07-02 09:10 450次阅读

    通道数据采集仪怎么用的

    通道数据采集仪是一种广泛应用于工业、科研、教育等领域的高精度数据采集设备。它能够同时采集多个通道
    的头像 发表于 07-02 09:08 487次阅读

    通道数据采集器的特点和功能有哪些

    通道数据采集器是一种广泛应用于工业自动化、科研实验、环境监测等领域的设备,它具有多个通道,可以同时采集多个信号,实现
    的头像 发表于 07-02 09:05 699次阅读

    通道数据采集器的作用有哪些

    通道数据采集器是一种广泛应用于工业自动化、科研、医疗、气象、环保等领域的高性能数据采集设备。它具有多个模拟输入通道,可以同时
    的头像 发表于 07-02 09:04 499次阅读

    通道数据采集器能采集什么

    通道数据采集器是一种广泛应用于工业、科研、教育等领域的高精度数据采集设备。它能够同时采集多个通道
    的头像 发表于 07-02 09:02 605次阅读

    通道数据采集系统的设计的意义

    通道数据采集系统(Multi-channel Data Acquisition System, 简称MDAS)是一种能够同时采集、处理和存储多个信号源
    的头像 发表于 07-02 09:00 643次阅读

    通道数据采集串扰问题怎么解决

    通道数据采集系统在现代工业、科研和医疗等领域中有着广泛的应用。然而,在通道数据采集过程中,串
    的头像 发表于 07-02 08:58 912次阅读

    通道数据采集器怎么看数据

    通道数据采集器是一种广泛应用于工业自动化、科研实验、医疗设备等领域的设备,它可以同时采集多个通道的模拟信号或数字信号,并将
    的头像 发表于 07-01 16:50 607次阅读

    通道数据采集系统有哪些典型的配置方案?各有和特点?

    通道数据采集系统是一种广泛应用于工业、科研、医疗等领域的数据采集设备。它通过多个通道同时采集
    的头像 发表于 07-01 16:38 1166次阅读

    通道数据采集系统的转换误差怎么算

    是一个重要的性能指标,它直接影响到系统的测量精度和可靠性。本文将详细介绍通道数据采集系统的转换误差及其计算方法。 一、
    的头像 发表于 07-01 16:36 564次阅读

    通道数据采集系统的工作原理包括什么

    通道数据采集系统是一种用于从多个传感器或信号源同时获取数据的电子系统。它广泛应用于工业自动化、科研、医疗、航空航天等领域。本文将详细介绍
    的头像 发表于 07-01 16:01 936次阅读

    通道数据采集系统的优缺点

    通道数据采集系统是一种广泛应用于工业、科研、医疗等领域的技术,它能够同时采集多个通道的信号,实
    的头像 发表于 07-01 15:58 1188次阅读

    通道数据采集(DAQ)系统的性能优化

    电子发烧友网站提供《通道数据采集(DAQ)系统的性能优化.pdf》资料免费下载
    发表于 11-23 16:37 3次下载
    <b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>数据采集</b>(DAQ)系统的性能优化