本节简要讲述模拟板卡WSMX在SmarTest7软件上编程方式。(WSMX只支持SmarTest7.10及以上软件版本,SmarTest7仅支持C++编程)。以下是关于WSMX PMU、WSMX DGT 、WSMX AWG在SmarTest7上编程实例。
- 直流参数测试 Wave Scale MX PMU
LIMIT limit(TM::GT, -1.0, TM::LT, 1.0); //参数上下限设定
PMU_IFVM pmuIfvm("pinString",TM::PPMU);//pinString 器件管脚名 加流测压
ON_FIRST_INVOCATION_BEGIN();
// Setup PMU
pmuIfvm.iForce(100 uA)
.iRange(190 uA)
.settling(1 ms)
.limits(limit)
.compare("I")
.vClamp(-1 V, 1 V);
// Connect relay
Routing.pin("pinString").connect(TM::PMU_CONNECT);//物理连接PMU
FLUSH();
// Measure
pmuIfvm.execute(TM::PVAL,16,TRUE); // 执行测试
// Open relay
Routing.pin("pinString").disconnect();//物理断开PMU
FLUSH();
ON_FIRST_INVOCATION_END();
// DC result retrieval 测试结果 加流测压得到电压值
DOUBLE rslt;
rslt = pmuIfvm.getValue("pinString");
- DAC测试 WSMX DGT
- ON_FIRST_INVOCATION_BEGIN();
// Step1: 配置数字化仪DGT
ANALOG_SEQUENCER Seq_DAC_Ramp_seq("DAC_Ramp_seq");
Seq_DAC_Ramp_seq.add(TM::HALT, TM::POST, 256, 0);
DGT("DAC_DGT")
.sequencerProgram(Seq_DAC_Ramp_seq)
.frequency(6.25 MHz)
.vOffset(0 V)
.vRange(3.0 V) // peak to peak
.filter(6.25 MHz)
.dutImpedance(100 KOhm)
.waitTrigger("dgtTrig");//等待触发
// Step2: 配置触发 WSMX支持内部触发方法(PATTERN中设置触发指令)
TRIGGER_SET trigSetDAC_DIG("dgtTrig");// 触发指令dgtTrig
trigSetDAC_DIG.sender("@").receiver("pinString").enable();
// Step3: 配置DGT连接模式(单端或差分)
Routing.pin("pinString").connect(TM::SINGLE);//单端配置
DGT("pinString").enable();
// Step4: 执行测试
EXECUTE_TEST();
// Step5: 停用模拟模块,断开继电器,禁用触发器
DGT("pinString").disable() ;
Routing.pin("pinString").disconnect();
trigSetDAC_DIG.disable();
FLUSH();
// Step6: 上传捕获波形信息
ARRAY_D capturedWaveform = DGT("pinString").getWaveform();
// Step7: 处理结果信息
DOUBLE dmin,dmax;
INT imin,imax;
DSP_MINMAX ( capturedWaveform , &dmin, &dmax, &imin, &imax );
ON_FIRST_INVOCATION_END();
- ADC测试 WSMX AWG
// Step1: 配置波形信息
ANALOG_WAVEFORM Wave_ADC_Sine("ADC_Sine");
Wave_ADC_Sine.definition(TM::ASCII,"../waveform/wav_adc_dist_sine_4096_41_100k.txt");//波形名wav_adc_dist_sine_4096_41_100k
AWG("ADC_AWG")
.waveform(Wave_ADC_Sine)
.ac(0.87 V)
.frequency(10 MHz)
.vOffset(1.45 V)
.filter(10 MHz)
.waitTrigger("awgTrig");
// Step2: 配置触发设置
TRIGGER_SET trigSetADC_AWG("awgTrig");
trigSetADC_AWG.sender("@").receiver("ADC_AWG").enable();
// Step3: 配置AWG连接模式(单端或差分)
Routing.pin("ADC_AWG").connect(TM::SINGLE);
AWG("ADC_AWG").enable();
//Step4:执行测试
DIGITAL_CAPTURE_TEST(0.1);
AWG(Av93000jichengDC_AWG).disable();
Routing.pin(ADC_AWG).disconnect();
trigSetADC_AWG.disable();
FLUSH();
// 数字通道捕获测试数据
dgtz_waveformI = VECTOR(cap_label).format("BIN").getVectors();
ON_FIRST_INVOCATION_END();