硬件资源板卡
板卡名称 | 说明 | 资源类型 |
FOVI | 八路浮动电压电流源 | 电源类 |
FPVI | 浮动双通道功率电压电流源 | |
FHVI | 精密浮动高压电压电流源 | |
TIF | 测试系统接口单元 | 信号类 |
CBIT128 | 用户继电器驱动单元 | |
TMU | 四路时间测量单元 | |
DIO | 数字测试模块 | |
HAD4 | 高精度差分测量模块 | |
TPS | 高精度时间测量单元 |
系统函数
延时等待
等待时间mS | |
DelaymS | 1 |
等待时间范围:0.001~65535mS
测试结果处理
被测参数序号 | 被测同类参数序号 | 系数 | |
AdToPparam | 0 | 0 | 1 |
将实测结果(pSite->RealData[i])经单位换算(乘系数MultData)和数据有效位设置后,放到指定的测试结果缓冲区,便于测试系统对结果分析判定
存储测试结果到数组
工位数 | 结果数组名 | |
GetResultAll | 4 | Result |
工位数一般与程序总工位一致
设定测试结果到指针,形成测试结果到测试界面
结果对应指针名 | 工位数 | 被测同类参数序号 | 结果数组名 | |
LogResultAll | VFB_Post | 4 | 0 | result |
char *VFB Post ="VFB Post";
//指针定义,“VFB_Post”即测试项目名称
double results[4]={0.0};
//建立结果数组results
FOVI_MeasureVSamp(0,Average_Value,0.01,200):
//测试FOVI0的值
GetResultAll(4,results);
//获取4个site的FOVI0(逻辑通道)的值并赋给results数组
LogResultAll(VFB Post,4,0,results);
//把results这个数组内的值对应到VFB_Post指针,结果返回给软件输出到界面
获取指定工位测试结果
工位号 | 获取测试结果的数据 | |
GetResult | 0 | Result |
设定测试结果
结果对应指针名 | 工位号 | 被测同类参数序号 | 要赋值的测试结果 | |
LogResultAll | VFB_Post | 0 | 0 | result |
获取当前site状态
获取测试结果的数据 | |
GetSiteState | 0(不测试) |
1(测试) |
返回0X03(00000011)表示site1、2需要测试
设定当前site状态
获取测试结果的数据 | |
SetSiteState | 0(不测试) |
1(测试) |
设定VI源通道在虚拟示波器中的名称
源类型 | 电源通道号 | 源名称 | |
SetPinCfg | FOVI | CH0 | “VIN” |
FPVI | |||
FHVI |
AWG函数
实现AWG功能的板卡:FPVI/FOVI/FHVI/HAD
程序结构:
·生成并载入波形
·采样与触发设置
·同步设置并输出
·单/多通道输出
·获取测量值
生成波形
生成斜波(均匀变化)
输出数组名 | 输出数据量 | 开始值 | 结束值 | |
AWG_CreateRampData | RAMP | 100 | 2.0 | 3.0 |
生成方波
输出数组名 | 输出数据量 | 波峰值 | 直流偏置值 | 循环次数 | |
AWG_CreateSquareData | RAMP | 100 | 2.0 | 1.0 | 50 |
生成正弦波
输出数组名 | 输出数据量 | 波峰值 | 直流偏置值 | 相位偏移 | |
AWG_CreateSineData | RAMP | 100 | 2.0 | 1.0 | 0 |
生成三角波
输出数组名 | 输出数据量 | 波峰值 | 直流偏置值 | 相位偏移 | |
AWG_CreateTriangleData | RAMP | 100 | 2.0 | 1.0 | 0 |
载入波形
通道 | 波形名 | 波形数组名 | 波形数组数据量 | |
FXVI_AwgLoader | FXVI_CH0 | RampD | RAMP | 100 |
FOVI_AwgLoader(FOVI_CH0, RampD, RAMP, 100);//载入RAMP中的波形数据到FOVI 的CH0 通道,命名为RampD,输出点个数100
配置输出波形
通道 | 输出点间隔mS | 输出后采样前等待时间mS | 采样数 | |
FXVI_AwgSelect | FXVI_CH0 | 0.5 | 1 | 25 |
采样间隔mS | 输出波形起始地址 | 输出波形终止地址 | 循环次数 |
0.01 | 0 | 99 | 1 |
输出点间隔范围5uS~50mS
循环次数默认为1
输出点值大于1000时表示一直循环
简化模式:默认在输出间隔一半的时候开始进行采样,采样间隔10us,起始地址为0,终止地址为输出点数量-1,循环1次。
通道 | 输出点间隔mS | 采样数 | 输出点数量 | |
FXVI_AwgSelect | FXVI_CH0 | 0.1 | 1 | 100 |
采样间隔x采样数≤输出点间隔-等待时间
FXVI_AwgSelect (FXVI_CH0, 0.5, 0.2, 25, 0.01, 0, 99, 1);
//AWG输出间隔0.5ms,输出后0.2ms开始采样,每次采样25次,采样间隔0.01ms,输出波形从地址0开始到99结束,循环1次。
FXVI_AwgSelect (FXVI_CH0, 0.1, 1, 100);
//AWG输出间隔0.1ms,输出后0.05ms开始采样,每次采样1次,采样间隔0.01ms,输出波形从地址0开始到99结束,循环1次
??采样和输出点区别
配置同步触发参数
通道 | 同步内容 | 触发值V/mA | 触发方式 | |
FXVI_AwgSetTrigVal | FXVI_CH0 | 1/Current | 1 | 1/Pos_Edge |
0/Voltage | 0/Neg_Edge |
FXVI_AwgSetTrigVal(FXVI_CH1, Voltage, 4.0, Pos_Edge);//FXVI CH1通道设置触发电压为4.0V,上升沿触发。
设置同步触发通道
通道 | 是否开启同步 | |
FXVI_AwgSetSync | FXVI_CH0 | 1/Sync_ON |
0/Sync_OFF |
对于设置了同步的通道,最好在AWG测试结束后对同步进行清零,防止因未清零导致下一次测试时误启动,若确定后面仍需启动,可以在最后一次结束时清零。
扫描波形触发
触发通道 | 输出通道(可以多个值) | |
AWG_RunTrigSync | AWG_FOVI0 | AWG_FOVI0, AWG_FPVI0 |
进行完整扫描,扫描结束并返回相应触发地址的值
输出最多可以设置16个通道,同一小板内的通道不能同时输出。
同类源逻辑通道可设置为0~31,超出31的逻辑通道建议在用户程序中修改配置的逻辑通道顺序
扫描波形触发并保持
触发通道 | 输出通道(可以多个值) | |
AWG_RunTrigStop | AWG_FOVI0 | AWG_FOVI0, AWG_FPVI0 |
在扫描过程中触发时停止扫描,保持此时的输出并返回相应的触发地址
AWG_RunTrigStop(AWG_FOVI0, AWG_FOVI0, AWG_FPVI1);
//同时输出FOVI的CH0和FPVI的CH1的AWG波形,以FOVI的CH0为触发通道,触发后保持此时输出并返回相应触发地址的值
扫描波形触发并输出指定值
输出值V/mA | 触发通道 | 输出通道(可以多个值) | |
AWG_RunTrigStopVal | 1 | AWG_FOVI0 | AWG_FOVI0, AWG_FPVI0 |
在扫描过程中触发时输出特定值,并返回相应的触发地址
AWG_RunTrigStopVal(0,AWG_FOVI0, AWG_FOVI0);
//输出FOVI的CH0的AWG波形,以FOVI的CH0为触发通道,触发后输出通道输出0V,并返回相应触发地址的值
扫描波形触发并输出指定地址的值
输出地址 | 触发通道 | 输出通道(可以多个值) | |
AWG_RunTrigStopNum | 1 | AWG_FOVI0 | AWG_FOVI0, AWG_FPVI0 |
在扫描过程中触发时输出指定地址对应的值,并返回相应的触发地址
AWG_RunTrigStopNum(1,AWG_FOVI0, AWG_FOVI0);
//输出FOVI的CH0的AWG波形,以FOVI的CH0为触发通道,触发后输出通道输出AWG波形第1个点的电压值,并返回相应触发地址的值。
获取输出通道的值
输出通道 | |
AWG_RunTrigStopVal | FOVI_CH0 |
存储波形数据到数组
测试工位 | 测试通道 | 数据类型 | 数组名 | |
AWG_RunTrigStopNum | SITE1 | AWG_FOVI0 | 0/MV(电压) | Results |
1/MI(电流) |
FOVI_AwgMeasResult(SITE1,FOVI_CH0, MI,results);
//将SITE1 FOVI 的CH0 通道的AWG测试的电流数据获取出来,存储到results数组中。
FXVI模式
脉冲工作模式时间:Tdelay= Tpulse* Iout(A) / 0.4
大电流脉冲依靠电容储能,需要恢复时间进行电容充电,充电电流400mA
设置FPVI的状态,包括工作模式、电压量程或电流量程,但不输出
通道 | 模式 | 电压档位 | 电流档位 | 钳位上限 | 钳位下限 | |
FXVI_setMode | FXVI_CH0 | pFV/pFI | pFPVI_5V | pFPVI_10mA | 10 | -10 |
//FPVI0通道为输出电压模式;电压档位为5V;电流档位为10mA,电流钳位-10mA~10mA
设置电源通道的输出值
通道 | 输出值(取决于Mode设置的模式) | |
FXVI_SetOutVal | FXVI_CH0 | 1V/1mA |
缓慢输出电源通道的输出值
通道 | 开始值 | 结束值 | 耗时 | |
FXVI_setOutValSlow | FXVI_CH0 | 0V/0mA | 1V/10mA | 5mS |
设置site的电源输出
通道 | Site | 输出值 | |
FXVI_SetOutValSite | FXVI_CH0 | SITE1 | 1V/1mA |
加压模式下切换电流档位/加流模式下切换电压档位
通道 | 档位 | |
FXVI_ChangeIRang | FXVI_CH0 | pFXVI_1mA |
FXVI_ChangeVRang | pFXVI_5V |
根据量程设置通道钳位值
通道 | 正钳位(百分比) | 负钳位 | |
FXVI_SetClamp | FPVI_CH0 | 10 | 60 |
FPVI_ChangeIRang(FPVI_CH0,pFPVI_1A);// FPVI0通道电流档位为1A
DelaymS(2);
FPVI_SetClamp(FPVI_CH0,10,60); //FPVI0通道正钳位为1A*10%=100mA;负钳位为1A*60%=600mA
测量输出值
通道 | |
FXVI_MeasureV | FPVI_CH0 |
FXVI_MeasureI |
此函数默认采样25次,采样时间间隔10uS
测量输出值
通道 | 模式 | 采样间隔mS | 采样次数 | |
FXVI_MeasureVSamp FXVI_MeasureISamp | FPVI_CH0 | 0/Average_Value | 0.01 | 100 |
1/Max_Value | ||||
2/Min_Value |
更改量程测输出电流
通道 | 电流量程 | 测量等待时间 | |
FXVI_MeasureIRS | FPVI_CH0 | pFPVI_1mA | 5mS |
测量完成后会更改回原有量程
设置响应速度
通道 | 响应速度 | |
FXVI_RespondSelect | FPVI_CH0 | 0(50uS) |
1(200uS) | ||
2(500uS) | ||
3(1mS) |
默认为1,过快产生超调等需要减慢响应速度时使用
电源输出开关
通道 | 状态 | |
FXVI_Connect | FPVI_CH0 | 0(关) |
1(开) |
板初始化
通道 | |
FXVI_Init | FPVI_CH0 |
断开输出继电器并清零
使用步骤:
1.使用前选定通道、模式、量程等SetMode,需要延时至少3ms再进行其他操作
2.输出设定的电压电流值SetOutVal/SetOutValSlow/SetOutValSite,函数只设定了输出值,实际电压电流并没有完全加出来,需要增加相应的延时时间才能输出设定的值
3.测量需要的信号 MeasureVSamp/MeasureISamp
4.输出清除置零SetOutVal/SetOutValSlow/SetOutValSite
5.复位关闭Init
CBIT
CBIT参数总结:
RelayOn——列出的闭合,没列出的断开
RelaySetOn/RelaySetOff——列出的闭合/断开,没列出的保持原状
默认——操作逻辑通道
S——操作物理通道
AB——合并B站的通道资源到A站使用
通断继电器(逻辑通道)
通道 | |
CBIT_RelayOn | -1 |
CBIT_ABRelayOn | -1 |
设置需要闭合的用户继电器,以-1结束,未列出的设置为断开。 操作继电器的逻辑通道
CBIT_RelayOn(–1);//断开每个site所有用户继电器。
CBIT_RelayOn(0,1,5,15,26,–1);//闭合每个site中0、1、5、15、26号用户继电器,断开其余用户继电器
通断继电器(物理通道)
通道 | |
CBIT_SRelayOn | -1 |
CBIT_ABSRelayOn | -1 |
设置需要闭合的用户继电器,以-1结束,未列出的设置为断开。 操作继电器的物理通道
闭合继电器
通道 | |
CBIT_RelaySetOn | -1 |
设置需要闭合的用户继电器,以-1结束,未列出的保持不变。 操作继电器的逻辑通道
断开继电器
通道 | |
CBIT_RelaySetOff | -1 |
设置需要断开的用户继电器,以-1结束,未列出的保持不变。 操作继电器的逻辑通道
继电器,以-1结束,未列出的保持不变。 操作继电器的物理通道
DIO
设置DIO通道资源
Site | 板(可多个) | |
DIO_SetChCfg | 3 | 0,1 |
DIO_SetChCfg(3,0,1);////将DIO第1块和第2块板分配给site4
选通PIN脚
管脚号(可多个) | |
DIO_SelPin | -1 |
管脚以逗号分隔,以-1结尾。未标注的PIN脚断开。如全断开则写-1
设置参考电平
模块号(0/1/2/3) | VIH | VIL | VOH | VOL | |
DIO_SetVref | 0 | 6 | 0 | 4 | 2 |
不同的模块要分别设置,电压范围-2~+8V
设置向量周期或频率
值 | 单位 | |
DIO_SetPatAdd | 100 | kHz |
可选单位”MHZ”“KHZ”“HZ”“MS”“US”“NS”,实际有效设置范围10kHz–5000kHz
设置向量运行时的参数
驱动前沿时刻 | 驱动后沿时刻 | 比较前沿时刻 | 比较后沿时刻 | 单位 | 管脚号列表 | |
DIO_SetPatAdd | 0 |
可选单位“MHZ”、“KHZ”、“HZ”、“MS”、“US”、“NS”、”%”),其中“%”以SetClock设置的值代表100%。实际有效设置范围要根据DIO_SetClock设置值相适应
设置向量运行时的波形格式
格式代码 | 管脚号(可多个) | |
DIO_SetPatAdd | 0 |
……
设置向量地址
地址类别 | PAT地址 | |
DIO_SetPatAdd | 0 |
载入向量
向量类型 | 载入次数 | 向量字符串 | |
DIO_SetPatAdd | 0(字符串) | 3 | |
1(文件) |
向量字符串,基本字符:1 0 H L X (驱动高低比较高低不关心或三态),空格或_作为分隔符,逗号作为向量行的分隔符,每一行向量最右边为PIN0,从右到左依次增加。
运行向量
运行次数 | 起始地址 | 结束地址 | |
DIO_SetPatAdd | 1 |
该函数执行不会等到向量运行结束再退出,因此执行后要添加WAIT时间等待,用户工程师要估算向量运行的时间等待,否则向量运行未结束就读取运行结果将会得到非真实的结果
循环运行向量
起始地址 | 结束地址 | |
DIO_LoopPattern |
强制停止运行向量
停止方式 | 起始地址 | 结束地址 | |
DIO_StopPattern | 0(立即停止) | ||
1(运行完该次循环后停止) |
获取运行向量结果
模块号(0/1/2/3) | |
DIO_StopPattern | 0 |
返回值:0——PASS/1——FAIL
0XFFFF——向量正在运行
5(0101)——PIN0 PIN2 FAIL
获取运行向量FAIL结果
模块号(0/1/2/3) | |
DIO_GetFailNumber | 0 |
返回值:
0——PASS
5——5个管脚FAIL
65535——向量正在运行
获取指定失效次数
枚举定义板卡号 | 枚举定义PIN脚 | |
DIO_GetSelPinFailCount |
获取DIO_0 pin1的失效次数
Int count = 0;
count = DIO_GetSelPinFailCount(DIO_Board0,Sel_Pin1);
获取DIO_0~1 pin0~7的失效次数
Int count = 0;
count = DIO_GetSelPinFailCount(DIO_Board_Enum,DIO_PinSel_Enum);
enum DIO_Board_Enum{
DIO_Board0 = 0,//DIO_0板卡
DIO_Board1 = 1 //DIO_1板卡
};
enum DIO _PinSel_Enum{
Sel_Pin0= 0,//Pin0
Sel_Pin1= 1,//Pin1
Sel_Pin2= 2,//Pin2
Sel_Pin3= 3,//Pin3
Sel_Pin4= 4,//Pin4
Sel_Pin5= 5,//Pin5
Sel_Pin6= 6,//Pin6
Sel_Pin7= 7 //Pin7
};
获取失效引脚对应log地址
板卡号 | Pin脚 | 失效patten编号(0~255) | |
DIO_GetSelPinFailLogAddr | DIO_Board0 | Sel_Pin1 | 2 |
获取DIO_0 pin1的第2个失效pattern所对应的log存储地址。
intLogAddr= 0;
LogAddr= DIO_GetSelPinFailLogAddr(DIO_Board0,Sel_Pin1,2)
设置DIO I2C总线
Pin脚 | |
DIO_I2CSet | 0,1,2,3 |
管脚两两一组,代表总线0~3的SCL和SDA,单DIO板上的8个pin脚最多分配4个I2C通道
物理I2C接口有两根双向线:串行时钟线(SCL)和双向串行数据线(SDA),可用于发送和接收数据,但是通信都是由主设备发起,从设备被动响应,实现数据的传输。SDA负责在设备间传输串行数据,SCL负责产生同步时钟脉冲。
设置I2C总线周期或频率
使用总线数量(1~4) | 周期或频率值 | 单位 | |
DIO_I2CSet | 1 |
可选单位”MHZ”、“kHZ”、“HZ”、“mS”、“uS”、“nS”),实际有效设置范围10kHz –5000kHz
设置I2C通道时间参数
总线通道号 | 驱动前沿时刻 | 驱动后沿时刻 | 比较前沿时刻 | 比较后沿时刻 | 单位 | |
DIO_I2CSetDelay | 0,1,2,3 | 0 |
在设置时钟周期时会有默认的时间参数,在使用I2C总线时可以不用此函数进行设置,时间参数会影响I2C总线的运行
I2C写功能??
位宽选择 | 设备地址数组 | 寄存器数组 | |
DIO_ IICWriteDataAllSyncSites | 0,1,2,3 | 0 |
I2C读功能??
TMU
TMU初始化
通道号 | |
TMU_Init | 0,1,2,3 |
设置TMU测量模式
通道号 | 测量模式 | 输入阻抗(通常选1) | 触发电压类型(通常选0) | 触发释抑时间(输入值*10ns) | 触发电压1 | 触发电压2 | 测量范围 | ||
TMU_SetMode | 0,1,2,3 | 0 | 0(低输入阻抗50Ω) | 0/LV(低电压≤10V) | 20 | 不用到时建议与TGV1相同 | 100 | ||
1/HV(高电压>10V) | |||||||||
1/HR(高输入阻抗1MΩ) | pFilter_200ns | pLowAccuracy | |||||||
2(高速测量且<2V) |
测量模式:
- 0(pTMU_Frequency/MF)—测量频率(KHZ),触发与TGV1有关,用上升沿或下降沿测量。
- 1(pTMU_Cycle)—测量周期(mS),触发与TGV1有关,用上升沿或下降沿测量。
- 2(pTMU_HighLevel/MHT)—高电平宽度(mS), 触发与TGV1有关
- 3(pTMU_LowLevel/MLT)—低电平宽度(mS), 触发与TGV1有关
- 4(pTMU_Rise)—上升沿时间(mS), 触发与TGV1–>TGV2有关,设置时TGV1<TGV2.
- 5(pTMU_Drop)—下降沿时间(mS), 触发与TGV1–>TGV2有关,设置时TGV1>TGV2.
- 6(pTMU_RiseToRise)、7(pTMU_RiseToDrop)、8(pTMU_DropToRise) 、9(pTMU_DropToDrop)—通道内Start信号、Stop信号触发时间差(测两个不同事件触发延时时间)。触发与TGV1–>TGV2有关,TGV1设置通道Start信号,TGV2设置通道Stop信号。6–上升沿到上升沿PP; 7–上升沿到下降沿PN; 8-下降沿到上升沿NP;9-下降沿到下降沿NN;
- 11(pTMU_DutyCycle)—测量占空比。
触发释抑时间为输入值*10ns,如10均表示100ns,也可输入pFilter_100ns
测量范围默认选择低速模式, 该值一般要设置成小于实际频率值或大于被测信号的最长时间。当频率大于1M(时间参数小于1uS)时,系统自动选择高速模式测量。也可用枚举量pLowAccuracy / pHighAccuracy选择低速或高速模式
TMU测量
通道号 | |
TMU_Measure | 0,1,2,3 |
多次TMU测量求平均值
通道号 | 采样等待时间mS | 采样次数 | |
TMU_MeasureAver | 0,1,2,3 |
取指定周期的时间参数
通道号 | 周期数 | |
TMU_StartNumber | 0,1,2,3 | 3 |
开始测试并清除历史数据
通道号 | |
TMU_Start | 0,1,2,3 |
结束测试并清除历史数据
通道号 | |
TMU_Stop | 0,1,2,3 |
精测测量单个波形
通道号 | |
TMU_TDC_Init | 0,1,2,3 |
用于精测测量模式测量单个波形参数,待测时间长度一般不大于1us。放在波形到来前
返回精测单个波形结果
通道号 | |
TMU_TDC_Measure | 0,1,2,3 |
用于精测测量模式测量单个波形参数,待测时间长度一般不大于1us。放在波形到来后
TMU_SetMode(CH0,pTMU_RiseToRise,pImpedance_1MOhm, pTMU_Vrange_10V,pFilter_0ns,3,5,pHighAccuracy);
TMU_TDC_Init(CH0);
DelaymS(2);
TMU_TDC_Measure(CH0);
//0通道使用高速低压模式测量两个波形信号上升沿时间差,第一个信号触发电压3V,第二个信号触发电压5V。
在一定时间内对波形计数
通道号 | 时间(0.01~200mS) | |
TMU_WaveCountStart | 0,1,2,3 |
放在TMUSetmode后、波形前.。波形计数时TMU的测量模式只能是上升沿模式或者下降沿模式,精度模式为低速
返回波形计数的数量
通道号 | |
TMU_WaveCountMeasure | 0,1,2,3 |
TMU_SetMode(CH0,pTMU_Rise,pImpedance_1MOhm,pTMU_Vrange_10V,pFilter_100ns,2,4,pLowAccuracy);
DelaymS(2);
TMU_WaveCountStart(CH0,1);
DelaymS(1);
TMU_WaveCountMeasure(CH0);
//0通道统计1ms内波形的数量。
清除抖频中的地址、数据信息
通道号 | |
TMU_RamAddClear | 0,1,2,3 |
获取指定地址的测量结果
地址(0~1023) | |
TMU_RamAddClear | 0,1,2,3 |
抖频可以测量不规范波形的时间参数,此函数放置在波形到来之后。
可以再详细一点吗?
百度文库和CSDN有详细手册资源,我这里只是帮助自己理解记忆用的。