壹、STS8200概述
STS8200服务于模拟芯片的测试。主要由测试主机和电脑(PC机)组成。
PC机通过PCI总线接口卡控制和管理测试主机,C/C++编程,支持1/2/4/8/16工位工作模式。
贰、内部模块
一、CBIT
C-bit,或者CBIT,是测试机的一个控制模块,主要用于驱动继电器等功能。
CBIT128是指有128路I/O接口,可实现16工位并行(一般每个工位预留8个C-bit通道)
1.函数CBIT128()
用于定义一块CBIT128
比如进行四工位的测试,假设每个工位使用两个继电器:K1和K2
先进行绑定操作,有点类似于parameter
工位1:K1=Cbit0, K2=Cbit1;
工位2:K1=Cbit8, K2=Cbit9;
工位3:K1=Cbit16, K2=Cbit17;
工位4:K1=Cbit24, K2=Cbit25;(官方手册中写成了K1=Cbit23, K2=Cbit24;,虽然应该能运行,但不规范)
CBIT128 cbit; BYTE K1_S1=0; BYTE K2_S1=1; BYTE K1_S2=8; BYTE K2_S2=9; BYTE K1_S3=16; BYTE K2_S3=17; BYTE K1_S4 =24; BYTE K2_S4 =25; cbit.SetOn(K1_S1, K1_S2, K1_S3, K1_S4, K2_S1, K2_S2, K2_S3, K2_S4,-1);参数-1是结束符,表示参数列表结束
这里一次性传入了 8 个 CBit 编号(4 个 K1 + 4 个 K2),实现4 个工位的继电器同时吸合,也就是 4 个 DUT 同时接入测试资源,并行测试。
2.初始化函数Init
直接调用即可
cbit.Init();二、FPVI10
FPVI10 fpvi0(0); // 使用逻辑通道0 FPVI10 fpvi1(1); // 使用逻辑通道1 //工位绑定 StsSetModuleToSite(MD_FPVI10,SITE_1,0,1,-1); /* StsSetModuleToSite( MD_FPVI10, // 模块类型:FPVI10 SITE_1, // 系统固定:绑定到第1工位 0,1, // 把逻辑通道0、1分给它 -1 // 结束符 ); */ StsSetModuleToSite(MD_FPVI10, SITE_2, 2, 3, -1); //绑定 FPVI10 的 CH2~CH3 为 SITE2 StsSetModuleToSite(MD_FPVI10, SITE_3, 4, 5, -1); //绑定 FPVI10 的 CH4~CH5 为 SITE3 StsSetModuleToSite(MD_FPVI10, SITE_4, 6, 7, -1); //绑定 FPVI10 的 CH6~CH7 为 SITE42.Set()
3.MeasureVI()
4.GetMeasResult()
5.GPFPVI10()
三、FOVI100
FOVI fovi0(0) ; //使用逻辑通道 0 FOVI fovi1(1) ; //使用逻辑通道 1 FOVI fovi2(2) ; //使用逻辑通道 2 FOVI fovi3(3) ; //使用逻辑通道 3 FOVI fovi4(4) ; //使用逻辑通道 4 FOVI fovi5(5) ; //使用逻辑通道 5 FOVI fovi6(6) ; //使用逻辑通道 6 FOVI fovi7(7) ; //使用逻辑通道 7对应工位绑定:
StsSetModuleToSite(MD_FOVI, SITE_1, 0, 1, 2, 3, 4, 5, 6, 7, -1); //绑定 FOVI100 的 CH0~CH7 为 SITE1 StsSetModuleToSite(MD_FOVI, SITE_2, 8, 9, 10, 11, 12, 13, 14, 15, -1); //绑定 FOVI100 的 CH8~CH15 为 SITE2 StsSetModuleToSite(MD_FOVI, SITE_3, 16, 17, 18, 19, 20, 21, 22, 23, -1); //绑定 FOVI100 的 CH16~CH23 为 SITE3 StsSetModuleToSite(MD_FOVI, SITE_4, 24, 25, 26, 27, 28, 29, 30, 31, -1); //绑定 FOVI100 的 CH24~CH31 为 SITE4只需要定义8个逻辑通道变量,4各工位共用这一套变量名
比如说:
StsSetModuleToSite(MD_FOVI, SITE_1, 0,1,2,3,4,5,6,7, -1); // 当代码操作【SITE_1】的【逻辑通道0】时 → 去碰【物理通道0】 // 当代码操作【SITE_1】的【逻辑通道1】时 → 去碰【物理通道1】 StsSetModuleToSite(MD_FOVI, SITE_2, 8,9,10,11,12,13,14,15, -1); // 当代码操作【SITE_2】的【逻辑通道0】时 → 去碰【物理通道8】 // 当代码操作【SITE_2】的【逻辑通道1】时 → 去碰【物理通道9】在真正测电路参数的时候,会这样写:
FOVI VCC(0); //定义逻辑通道 0 给 VCC FOVI VOUT(1) ; //Define Logical channel 1 to VOUT FOVI FB(2) ; //Define Logical channel 2 to FB FOVI CS(3) ; //Define Logical channel 3 to CS2.GPFOVI()
在实际应用中,比如说一次4工位的测试,可以写成
#define STS_SITE_NUM 4 FOVI VCC(0); //Define Logical channel 0 to VCC FOVI VOUT(1) ; //Define Logical channel 1 to VOUT FOVI FB(2) ; //Define Logical channel 2 to FB FOVI CS(3) ; //Define Logical channel 3 to CS STSSetModuleToSite(MD_FOVI,SITE_1,0, 1, 2, 3); STSSetModuleToSite(MD_FOVI,SITE_2, 4, 5, 6,7); STSSetModuleToSite(MD_FOVI,SITE_3, 8, 9, 10, 11); STSSetModuleToSite(MD_FOVI,SITE_4, 12, 13, 14, 15);也可以利用GPFOVI定义一个组,来简化代码,这里先略过,后面给完整实例
3.Set()
一样的,比如说对于
VCC.Set(FV, 5, FOVI_10V, FOVI_100MA, RELAY_ON);恒压模式,5V的电压,量程为10V,100mA,打开输出继电器,没写上升时间,默认为0.1ms,可以自己手动设置,精度为0.1ms。
其中,输出继电器,有四种状态:
4.SetSyn()
double setValue[2] = {3, 5}; int siteSize = 2; fovi0 .SetSyn(FV, setValue, siteSize, FOVI_10V, FOVI_100MA, RELAY_ON);VOUT.MeasureVI(20, 10);fovi0.MeasureVI(20, 10);//fovi0 采样 20 次,间隔 10us for(i=0; i<SITENUM; i++) { adresult[i]=fovi0.GetMeasResult(i, MIRET); //sampleNumber 处参数没有填写,系统默认 AVERAGE_RESULT,此时返回电流平均值 }fovi0.MeasureVI(20, 10); //fovi0 采样 20 次,间隔 10us for(i=0; i<SITENUM; i++) { adresult[i]=fovi0.GetMeasResult(i, MVRET, 14);//返回第 15 个点的电压值 }四、一些重要函数
1.StsGetParam()
CParam *OS_VCC = StsGetParam(funcindex,"OS_VCC");代码找到界面上叫OS_VCC的参数框
OS_VCC->SetTestResult(site, 0, adresult[site]);把测到的电压值,填到这个参数框里,界面就会显示数值
2.