1、综述
eta108是英创公司推出的一款低成本高性能的ad采集模块,相比英创公司的其他数据采集扩展模块,eta108的一个主要特点是支持硬件周期脉冲触发ad采集,因此eta108非常适合应用于要求高精度采样间隔的波形数据采集。eta108波形数据采集模块可广泛应用于多通道波形记录仪、电力谐波分析、故障录波、振动信号分析、瞬态信号采集、通用数据采集等多种应用领域。现esm335x linux已支持eta108数据采集模块。
eta108性能:
• 8通道单端输入或4通道差分输入
• 输入量程0~4.096v
• 每通道具有独立的高阻抗增益放大器(pga),可实现各种传感器之间的直接接口连接,并支持用户配置通道增益gain=1/2/4/8)
• ad转换精度12bit
• ad最高采样速度100ksps
• 可选择多种平均操作模式,使输出ad精度达到14bit。其中有快速平均和精确平均两种模式可以选择。快速平均模式:对4,8或16次采样结果做平均,可增加ad分辨率到14bit,快速平均模式适用于输入到pga的信号比较稳定的情况。精确平均模式:对4,8或16次采样结果做平均,可得到比快速平均模式更精确的采样结果。此模式在输入信号不太稳定的情况下适用。
使用4次平均模式总采样速率不得高于20ksps,使用8次平均模式总采样速率不得高于10ksps,使用16次平均模式采样速率不得高于5ksps。当用户采用默认设置进行采样时,我们的驱动会根据用户设置的采样速度进行设置,使用能够达到的最高平均模式以提高采样精度。用户也可自行设置。
关于eta108更详细的参数以及设置方法请参考《eta108数据采集模块应用手册》(linux)。
2、应用程序接口
1、驱动程序
在使用eta108之前,需要在系统中先加载eta108的驱动程序。我们提供eta108.ko驱动模块,用户使用insmod /(目录)/eta108.ko 命令就可以加载驱动。
为了实现eta108的高速数据采集,在其驱动程序中,充分利用了esm335x的高性能dma技术,从而保证了eta108与esm335x主板之间仅靠简单的4线制spi接口就实现了硬件连接,同时,dma技术的引入,也将数据采集对系统性能的影响降到最低。考虑到实际应用,esm335x eta108驱动程序支持单次采样模式和连续采样模式,两种模式下驱动每采集到512个点的数据(1kb数据大小)或者采样结束就会通知用户程序,建议应用程序中select函数和read函数一起使用尽快读出数据,以避免驱动维护大量的数据缓存。
连续采样处理流程
驱动程序中进行设置的eta108_config结构体。
eta108_config结构体是eta108的配置数据结构体,包含了采样率,采样长度,采样通道设置,通道寄存器配置等参数。其定义如下:
struct eta108_config
{
unsigned int rate;
unsigned int count;
unsigned int channel;
void *config;
unsigned int config_len;
};
在我们提供的驱动程序中,eta108_config结构体即可用为函数的输入参考,其结构体成员含义说明如下:
ads_config结构体定义
成员
定义 / 输入参数
rate
设置总的采样率,每通道采样率= rate/通道数
count
设置每个ad通道的采样次数>0:单次采样=0:连续采样
channel
设置需要采样的通道,对应位置1
config
指向ad通道配置的buffer,此参数用于设置eta108的寄存器,config =null时,系统将使用默认配置
config_len
config指向buffer的长度
eta108单通道采样时采样速度可以达到100ksps,如果多通道采样,由于内部通道转换需要时间,最高只能达到50ksps,rate设置需要满足此限制。channel的低8bit(bit0~bit7)依次对应ad通道0~通道7,如果要采集某个通道的数据,需要将其对应的位置为1。比如要采集通道0、通道1和通道7的数据,则应设置channel=0x83;差分模式下只需设置差分通道中的一个通道的对应位为1,比如通道0、通道1在差分模式下工作,只需将0通道位置1,设置channel=0x1。
2、eta108驱动输入输出数据格式:
用户可以对eta108的进行设置以改变eta108工作模式,eta108_config中config指向的buffer格式为:
bit
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
data
1
0
a3
a2
a1
a0
0
0
d7
d6
d5
d4
d3
d2
d1
d0
寄存器写
允许的设置及其意义详见《eta108数据采集模块应用手册》(linux)。
读取采样数据的格式如下(unsigned short):
bit
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
data
d13
d12
d11
d10
d9
d8
d7
d6
d5
d4
d3
d2
d1
d0
0
0
eta108转换结果
其中第0、1位总是0,第2、3位为平均模式下增加的2位分辨率,如没有采用平均模式则此两位为0,第3-15位为12bit的ad数据。多通道采样模式下,应用程序从驱动中读得的ad数据是按通道依次存放的,低通道在前,比如应用程序同时连续采集ch1,ch2,ch5三个通道,read()函数读得的ad数据存放为ch1、ch2、ch5、ch1、ch2、ch5、ch1………,每个通道16bit。
eta108的量程为0~4.096v,则可得d13~d2这12bit的数据对应的转换关系如下表,用户可据此换算数值:
理想情况下的ad转换结果
描述
模拟量输入
数字量输出
满量程范围
4.096vref
二进制
十六进制
最小分辨率(lsb)
vref/4096
满量程
vref-1lsb
1111 1111 1111
ffff
1/2量程
vref/2
1000 0000 0000
8000
1/2量程 - 1 lsb
vref/2-1lsb
0111 1111 1111
7fff
零
0v
0000 0000 0000
0000
3、接口函数
1) 加载设备驱动:
#:insmod /(目录)/eta108.ko
会自动创建设备文件 /dev/eta108
2) 打开设备文件-open:
int fd = open ( /dev/eta108, o_rdwr, s_irusr | s_iwusr );
3) 设置采样参数-write:
struct eta108_config transfer;
memset ( &transfer, 0, sizeof(transfer) );
transfer.rate = 100000; //采样速率
transfer.channel = 0x1; //采样通道
transfer.count = 10000; //每通道采样次数
//自定义设置,此处为0通道设置gpa放大2倍,设置为null时采用默认设置
unsigned short cmd[1] = {0x8004};
transfer.config_len = 2; //2字节
transfer.config = cmd;
if(write ( fd, &transfer, sizeof(transfer) )<0)
{
printf ( wrong!!!!!!!!!!!!!!!!\n );
exit ( 1 );
}
4) 启动采样:
if(ioctl ( fd, eta108_start, &transfer )<0)
{
printf ( start wrong!!!!!!!!!!!!!!!!\n );
exit ( 1 );
}
5) 停止采样:
if(ioctl ( fd, eta108_stop, &transfer )<0)
{
printf ( stop wrong!!!!!!!!!!!!!!!!\n );
exit ( 1 );
}
6) 读取采样数据-read:
驱动内部每采集512个点(1kb)的数据或者采样结束就会通过select函数通知应用程序,建议应用程序中尽快读出数据,进行存储或者计算,read函数返回实际读取的字节数。
int count_in_byte = 0;
int read_count=0;
char read_buf[transfer.count*2*1]; // 1个通道,每个数据2个字节
char *real_read = read_buf;
for ( i=0; count_in_byte
{
fd_zero(&fdread);
fd_set(fd,&fdread);
atime.tv_sec = 2;
atime.tv_usec = 0;
ret = select ( fd+1, &fdread, null, null, &atime );
if ( ret0 )
{
if ( fd_isset(fd, &fdread) )
{
read_count = read(fd, real_read, 1024);
if ( read_count<0 )
{
printf ( read wrong!!!!!!!!!!!!!!!!\n );
exit ( 1 );
}
real_read += read_count;
count_in_byte += read_count;
}
}
}
7) 关闭设备文件:
close ( fd );
用户如需使用eta108数据采集模块,请和我们联系。
各国发力氢能源汽车发展进入加速阶段
快速入门 | 篇十五:运动控制器运动缓冲简介
SMT贴片的概念是怎样
光伏太阳能板—晶硅片的介绍
盐水电池制作方法
英创ETA108波形数据采集模块性能及使用
苹果M1电脑运行win10竟比微软Surface快2倍
红米Note4X、荣耀8青春版、魅蓝5s、360n5、小米5C,这五款千元机的标杆,谁才是千元之王?
Made in China的神话如何诞生?
Ouster将向开发商Lux Modus提供数字激光雷达传感器
葡萄牙用户就苹果降频门发起集体诉讼
加速建设迎接5G商用 北京联通5G畅快体验
中科研究院完成了压缩空气弹射器在无人机中的应用测试
小体积三相四线智能电表的电源解决方案
有关CDMA的术语
四声道环绕的发展历程
GitHub安全研究员发现一个Ubuntu系统大漏洞
交流电压在H桥主电路上工作回路及采样电路原理
国内布局车规级MCU的22家厂商及相关产品介绍
谷歌旗下的可穿戴设备制造商Fitbit,推出了一款名叫Flow的呼吸机