高速同步数据采集卡(系统)原理
16位,12通道,500K ,同步,数据采集卡
YG-EB1309
用户手册
1. 概述
YG-EB1309高精度数据采集卡适用于提供了PC104 总线的嵌入式微机。其操作系统可选用经典的MS-DOS 、Linux 或目前流行的 Windows 系列等多种操作系统。
YG-EB1309高精度模入接口卡安装使用简便、功能齐全。其A/D 转换启动方式可以选用程控频率触发、程控单步触发、以及外部时钟同步触发等多种方式。A/D转换后的数据结果通过先进先出存储器(FIFO )缓存后由PC104总线读出。
为方便用户,本卡还提供了符合TTL 电平的8路数字量输入和24路数字量输出信号通道。
2. 主要技术参数
2.1模入部分
2.1.1输入通道数:12路同步
2.1.2 输入信号范围:±2.5V ;±5V ;±6V ;±10V ;±12V ; 2.1.3 输入阻抗:≥10M Ω
2.1.4 输入通道选择方式:12通道同步 2.1.5 A/D转换分辩率:16位 2.1.6 A/D最高转换速率:500KHz
2.1.7 A/D采样程控频率:1KHz/5KHz/10KHz/50KHz/100KHz/200KHz/500KHz/外部时钟 2.1.8 A/D启动方式:程控频率触发/程控单步触发/外部TTL 信号触发 2.1.10 FIFO存储器容量:20K ×16bit (全满)/10K×16bit (半满) 2.1.11 数据读取识别方式:FIFO 半满查询/FIFO非空查询/FIFO半满中断 2.1.12 系统综合误差:≤0.02% F.S 2.2 开关量部分
2.2.1 输入路数:8路TTL 电平 2.2.2 输出路数:24路TTL 电平 2.3 电源部分
2.3.1 支持外部电源输入或PC104接口取电。 2.3.2 功率:+5V(±10%) ≤500mA
2.4环境要求: 工作温度:10℃~40℃ 相对湿度: 40%~80% 存贮温度:-55℃~+85℃ 2.5 外型尺寸:长×高=90mm ×96mm
3. 工作原理
YG-EB1309高精度模入接口卡主要由高速高精度放大电路、高精度模数转换电路、先进先出(FIFO)缓冲存储器电路、开关量输入输出电路和接口控制逻辑电路等部分组成。 3.1 高速高精度跟随电路
本电路由两个高速高精度运放、阻容件组成,用以对模拟信号进行变换处理,以提供模数转换电路所需要的信号。
3.3 高精度模数转换电路
本电路由高速模数转换芯片ADS8556组成,用以将模拟信号转换为数字信号。通过调整电位器RW1、RW2、和RW3可以微调1.25V ,2.5V ,3.0V 基准电压,通过跳线JP1和JP2可以选择其中一路参考电压和输入信号的范围。例如:跳线JP1跳到×4,JP2选择2.5V ,则输入信号的范围为2.5V*4=10V,即±10V 。 3.4 先进先出(FIFO )缓冲存储器电路
本电路用于将A/D转换的数据结果进行缓冲存储。并相应的给出“空”,“半满”和“全满”的标志信号。用户在使用过程中可以随时根据这些标志信号的状态以单次或批量的方式读出A/D转换的结果。 3.5 开关量输入输出电路
本卡还提供了各8路的开关量输入以及24路输出信号通道。使用中需注意对这些信号应严格符合TTL 电平规范。
3.6 接口控制逻辑电路
接口控制逻辑电路用来将PC104总线控制逻辑转换成与各种操作相关的控制信号。
4. 接口及安装使用说明
4.1 板卡接口布局
本卡的安装十分简便,在关电情况下,将本卡上的PC104总线连接器正确的插入主机或其它功能板卡的总线连接器中并轻轻压紧。为避免两层板卡上的元器件互相接触造成不可预计的后果,应正确选用适当高度的支柱并在本卡安装完成后将其紧固。
本卡采用的模拟开关是COMS 电路,容易因静电击穿或过流造成损坏,所以在安装或用手触摸本卡时,应事先将人体所带静电荷对地放掉,同时应避免直接用手接触器件管脚,以免损坏器件。
禁止带电插拔本接口卡。本卡跨接选择器较多,使用中应严格按照说明书进行设置操作。设置接口卡开关、跨接套和安装接口带缆时均应在关电状态下进行。
当模入通道不全部使用时,应将不使用的通道就近对地短接,不要使其悬空,以避免造成通道间串扰和损坏通道。
为保证安全及采集精度,应确保系统地线(计算机及外接仪器机壳)接地良好。特别是使用双端输入方式时,为防止外界较大的共模干扰,应注意对信号线进行屏蔽处理。
5. 硬件接口详细说明
5.1 电源输入
图5-1 电源输入接口位置
本卡工作需要单5V 电源,接口在PCB 板位置如图5-1所示。单5V 电源可以由外部接口JP7输入,也可以由PC104总线输入。通过跳线J1进行选择。使用方法见图5-2.
JP7 J1 J1
+5V GND 外部输入
PC104输入
JP7信号定义 J1跳线选择
图5-2 电源输入信号选择示意图
5.2 基准信号校准及模拟信号输入范围选择
本卡设置1.25V ,2.5V ,3.0V 共3个基准信号,分别通过RW1,RW2,RW3三个电位器进行校准。模拟信号输入范围通过跳线JP1,JP2共同选择,各接口在PCB 板上位置见图5-3。
图5-3 基准信号调节及选择接口位置
基准信号校准方法:
1. 调节电位器RW1,同时用高精度电压表测试TEST1处信号电压,使TEST1处电压稳定到1.25V 2. 同样的方法,依次调节RW2,测试TEST2处电压,调节RW3,测试TEST3处的电压,使TEST2处电压稳定到2.5V ,TEST3处电压稳定到3.0V
模拟信号输入范围选择方法:
通过调节跳线JP1和JP2,选择模拟信号输入范围。跳线连接方法见图5-4,模拟信号输入范围选择方法见表5-1.
JP1 2
4
JP2
JP1跳线
JP2跳线
图5-4 模拟信号输入范围选择示意图 表5-1 JP1和JP2位置对应模拟信号输入范围
注1:如果输入信号范围为±5V ,建议选择为:JP1(×2)和JP2(2.5V)
5.3 模拟信号输入
12路模拟信号输入通过JP3输入。JP3在PCB 板上位置如图5-5所示。
图5-5 模拟信号输入接口
模拟信号输入接口位置见图5-6,接口定义见表5-2,CH1—CH12分别为12路模拟信号输入。
图5-6 JP3接口信号位置
表5-2 JP3接口定义
5.4 数字信号输入输出
8路数字信号输入,24路数字信号输出,外部触发信号输入接口为JP4。JP4在PCB 板上位置如图5-7所示。
图5-7 数字信号输入接口
数字信号输入输出接口位置见图5-7,接口定义见表5-3,其中DIN1—DIN8为8路数定量输入,DOUT1到DOUT24为24路数字量输出,EC/T为外部触发信号输入。
图5-7 JP4接口信号位置
表5-3 JP4接口定义
6. 软件接口详细说明
主板通过PC104总线访问采集卡,寄存器偏移地址可在0x000~0x3ff之间设置,默认0x300。 6.1 版本寄存器1(VER1), 偏移地址:0x0
6.2
6.3 开出寄存器1(DOUT1), 偏移地址:0x4
6.4 开出寄存器2(DOUT2), 偏移地址:0x6
6.5 开入寄存器(DIN ), 偏移地址:0x8
6.6 AD 采样配置寄存器(AD_CFG), 偏移地址:0xa
6.7 AD 采样控制寄存器(AD_CTRL), 偏移地址:0xC
6.8 FIFO 状态寄存器(FIFO_STATUS), 偏移地址:0xE
7 FIFO 已使用量寄存器(FIFO_USED)
, 偏移地址:0x10
8 FIFO 读数据寄存器(FIFO_DATA), 偏移地址:0x12
9 校正参数指针寄存器(PARA_PTR), 偏移地址:0x14
10 校正参数数据寄存器(PARA_DATA), 偏移地址:0x16
长沙业嘉电子科技有限公司 7. 软件编程举例:
acp500.h 文件如下: #define CHL_NUM 12 //模拟采样通道数 #define FIFO_SIZE 20480 //采集卡FIFO 容量,单位WORD #define ACP_BASE 0x300 //采集卡基地址
#define VER_ADDR1 (ACP_BASE + 0) // 版本号地址1 #define VER_ADDR2 (ACP_BASE + 2) // 版本号地址2
#define OUT_ADDR1 (ACP_BASE + 4) // 开出控制寄存器地址1 #define OUT_ADDR2 (ACP_BASE + 6) // 开出控制寄存器地址2 #define IN_ADDR (ACP_BASE + 8) // 开入状态寄存器地址 #define AD_CFG_ADDR (ACP_BASE + 10) // AD采样配置寄存器地址 #define AD_CTRL_ADDR (ACP_BASE + 12) // AD采样控制寄存器地址 #define FIFO_STATUS_ADDR (ACP_BASE + 14) // FIFO状态寄存器地址 #define FIFO_USED_ADDR (ACP_BASE + 16) // FIFO当前用量寄存器地址 #define FIFO_DATA_ADDR (ACP_BASE + 18) // FIFO数据寄存器地址 #define PARA_PTR_ADDR (ACP_BASE + 20) // 校正参数指针寄存器地址 #define PARA_DATA_ADDR (ACP_BASE + 22) // 校正参数数据寄存器地址
#define F_1K 0 // 采样率1K #define F_5K 1 // 采样率5K #define F_10K 2 // 采样率10K #define F_20K 3 // 采样率20K #define F_30K 4 // 采样率30K #define F_40K 5 // 采样率40K #define F_50K 6 // 采样率50K #define F_60K 7 // 采样率60K #define F_70K 8 // 采样率70K #define F_80K 9 // 采样率80K #define F_90K 10 // 采样率90K #define F_100K 11 // 采样率100K #define F_150K 12 // 采样率150K #define F_200K 13 // 采样率200K #define F_EXT 14 // 外同步时钟方式 #define F_SINGLE 15 // 单步方式
#define EN_CHL1 0x0001 // 使能AD 采样通道1 #define EN_CHL2 0x0002 // 使能AD 采样通道2 #define EN_CHL3 0x0004 // 使能AD 采样通道3 #define EN_CHL4 0x0008 // 使能AD 采样通道4 #define EN_CHL5 0x0010 // 使能AD 采样通道5 #define EN_CHL6 0x0020 // 使能AD 采样通道6 #define EN_CHL7 0x0040 // 使能AD 采样通道7 #define EN_CHL8 0x0080 // 使能AD 采样通道8 #define EN_CHL9 0x0100 // 使能AD 采样通道9 YG-EB1309
#define EN_CHL10 0x0200 // 使能AD 采样通道10
#define EN_CHL11 0x0400 // 使能AD 采样通道11
#define EN_CHL12 0x0800 // 使能AD 采样通道12
#define EN_AD1_CHL (EN_CHL1 | EN_CHL2 | EN_CHL3 | EN_CHL4 | EN_CHL5 | EN_CHL6) // 使能AD1 6个通道
#define EN_AD2_CHL (EN_CHL7 | EN_CHL8 | EN_CHL9 | EN_CHL10| EN_CHL11| EN_CHL12) // 使能AD2 6个通道
#define EN_ALL_CHL (EN_AD1_CHL | EN_AD2_CHL) // 使能全部12个通道
#define AUTO_BEG 0x0001 // 程控自动开始采样
#define EXT_BEG 0x0002 // 检测外部触发信号开始采样
#define FIFO_EMPTY 0x0001 // FIFO空标志
#define FIFO_HF 0x0002 // FIFO半满标志
#define FIFO_FF 0x0004 // FIFO全满标志
#define FIFO_FLOW 0x0008 // FIFO溢出标志
acp500.c 文件如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "acp500.h"
#define BUF_SIZE 200000
short int data_buf[BUF_SIZE];
long int wr_ptr = 0, rd_ptr = 0;
#define outportb(addr, data) outb(data, addr)
#define inportb(addr) inb(addr)
#define outport(addr, data) outw(data, addr)
#define inport(addr) inw(addr)
int main(int argc, char *argv[])
{
int i = 0;
int rd_words = 0;
FILE * fp;
int ret = 0;
int ver;
int fifo_status;
if(iopl(3)
{
perror("get I/O permission");
exit(-1);
}
outport(AD_CTRL_ADDR, 0); // 配置之前,先停止采样
// AD采样配置成150K 采样率,使能AD1 6个通道 outport(AD_CFG_ADDR,(F_150K
outport(AD_CTRL_ADDR, AUTO_BEG); // 程控自动开始采样
while(1)
{
fifo_status = inport(FIFO_STATUS_ADDR); // 查询FIFO 状态标志
if(fifo_status & FIFO_FLOW) // 如采样过程中数据溢出,退出
{
ret = -1;
goto ret;
}
else if(fifo_status & FIFO_HF) // FIFO半满,
{ // 此时FIFO 中有效数据量大于等于FIFO_SIZE/2 rd_words = BUF_SIZE - wr_ptr;
if(rd_words > FIFO_SIZE/2)
rd_words = FIFO_SIZE/2;
else
ret = 1;
for(i=0; i
data_buf[wr_ptr++] = inport(FIFO_DATA_ADDR);
if(ret == 1)
goto ret;
}
}
ret:
outport(AD_CTRL_ADDR, 0); // 停止采样
fp = fopen("a.txt", "w");
for(rd_ptr=0; rd_ptr
{
if(rd_ptr % 6 == 0)
fprintf(fp, "\n");
fprintf(fp, "%d ", data_buf[rd_ptr]);
}
fclose(fp);
if(ret == 1)
printf("TEST OK!\n");
else if(ret == -1)
printf("FIFO OVERFLOWER!\n");
ver = inport(VER_ADDR1) | inport(VER_ADDR2)
printf("SOFT VER: %08x\n", ver);
}
附B. 产品清单及保修
产品清单:
1. YG-EB1309高精度模入接口卡壹块。
2. 0.5米长40芯扁平带缆(含单端接头) 壹套。
3. 0.5米长24芯扁平带缆(含单端接头) 壹套。
本产品自售出之日起两年内,凡用户遵守贮存、运输及使用要求,而产品质量低于技术指标的,凭保修单免费维修。因违反操作规定和要求而造成损坏的,需交纳器件和维修费。