📄 dsomaindlg.cpp
字号:
acquire.acquire_freq=0;
ord[3]=0x4c;
ord[4]=0x4b;
ord[5]=0x3F;
ord[6]&=0xfd; //SLOW 采样模式,不采用触发
break;
case 1: //5s =5/50=0.1s 100ms 采样率50M/s 分频因 2500000-1=2499999 每个100ms采集并绘制一点
acquire.acquire_freq=0;
ord[3]=0x26;
ord[4]=0x25;
ord[5]=0x9F;
ord[6]&=0xfd; //SLOW 采样模式,不采用触发
break;
case 2: //2s =2/50=0.04s 40ms 采样率50M/s 分频因 1000000-1=999999 每个40ms采集并绘制一点
acquire.acquire_freq=0;
ord[3]=0x0f;
ord[4]=0x42;
ord[5]=0x3f;
ord[6]&=0xfd; //SLOW 采样模式,不采用触发
break;
case 3: //1s =1/50=0.02s 20ms 采样率50M/s 分频因 500000-1=499999 每个20ms采集并绘制一点
acquire.acquire_freq=0;
ord[3]=0x07;
ord[4]=0xa1;
ord[5]=0x1F;
ord[6]&=0xfd; //SLOW 采样模式,不采用触发
break;
case 4: //500ms =500/50= 10ms 采样率50M/s 分频因 250000-1=249999 每个10ms采集并绘制一点
acquire.acquire_freq=0;
ord[3]=0x03;
ord[4]=0xd0;
ord[5]=0x8f;
ord[6]&=0xfd; //SLOW 采样模式,不采用触发
break;
case 5: //200ms =200/50= 4ms 采样率50M/s 分频因 100000-1=99999 每个4ms采集并绘制一点
acquire.acquire_freq=0;
ord[3]=1;
ord[4]=0x86;
ord[5]=0x9F;
ord[6]&=0xfd; //SLOW 采样模式,不采用触发
break;
case 6: //100ms =100/50= 2ms 采样率50M/s 分频因 50000-1=49999 1s更新1次波形
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0xc3;
ord[5]=0x4F;
break;
case 7: //50ms =50/50= 1ms 采样率50M/s 分频因 25000-1=24999
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0x61;
ord[5]=0xa7;
break;
case 8: //20ms =20/50= 400us 采样率50M/s 分频因 10000-1=9999
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0x27;
ord[5]=0x0F;
break;
case 9: //10ms =10/50= 200us 采样率50M/s 分频因 5000-1=4999
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0x13;
ord[5]=0x87;
break;
case 10: //5ms =5/50= 100us 采样率50M/s 分频因 2500-1=2499
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=9;
ord[5]=0xc3;
break;
case 11://2ms =2/50 40us 采样率50M/s 分频因 1000-1=999
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=3;
ord[5]=0xe7;
break;
case 12://1ms =1/50 20us/20=1000/2=500 采样率50M/s 分频因 500-1=499
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=1;
ord[5]=0xf3;
break;
case 13: //500us =500/50 10us/20=500/2=250 采样率50M/s 分频因 250-1=249
if (acquire.acquisition==2) //10000ns/4ns =2500/2=1250
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=4;
ord[5]=0xe2;
}
else
{
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0;
ord[5]=249;
}
break;
case 14: //200us =200/50 4us/20ns=200/2=100 采样率50M/s 分频因 100-1=99
if (acquire.acquisition==2) //4000ns/4ns =1000/2=500
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=1;
ord[5]=0xf4; //500;
}
else
{
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0;
ord[5]=99;
}
break;
case 15: //100us =100/50 2us/20ns=100/2=50 采样率50M/s 分频因 50-1=49
if (acquire.acquisition==2) //2000ns/4ns =500/2=250
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=250;
}
else
{
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0;
ord[5]=49;
}
break;
case 16: //50us =50/50 1us/20ns=50/2=25 采样率50M/s 分频因 25-1=24
if (acquire.acquisition==2) //1000ns/4ns =250/2=125
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=125;
}
else
{
acquire.acquire_freq=1; //3cc8
ord[3]=0;
ord[4]=0;
ord[5]=24;
}
break;
case 17: //20us =20000/50 400ns/20ns=20/2=10 采样率50M/s 分频因 10-1=9
if (acquire.acquisition==2) //400ns/4ns =100/2=50
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=50;
}
else
{
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0;
ord[5]=9;
}
break;
case 18: //10us =10000/50 200ns/20ns=10/2=5 采样率50M/s 分频因 5-1=4
if (acquire.acquisition==2) //200ns/4ns =50/2=25
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=25;
}
else
{
acquire.acquire_freq=1;
ord[3]=0;
ord[4]=0;
ord[5]=4;
}
break;
case 19: //5us =5000/50 100ns 采样率100M/s 分频因 5-1=4
if (acquire.acquisition==2) //100ns/4ns =25/2=12
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=12;
}
else
{
acquire.acquire_freq=2; //3ac8
c=FREQ_SEL_100M;
ord[3]=0;
ord[4]=0;
ord[5]=4;
}
break;
case 20: //2us =2000/50 40ns 采样率50M/s 分频因 2-1=1
if (acquire.acquisition==2) //40ns/4ns =10/2=5
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=5;
}
else
{
acquire.acquire_freq=0;
ord[3]=0;
ord[4]=0;
ord[5]=0;
}
break;
case 21: //1us =1000/50 20ns 采样率50M/s 直接绘制波形
if (acquire.acquisition==2) //20ns/4ns =5/2=2
{acquire.acquire_freq=3;
c=FREQ_SEL_250M;
ord[3]=0;
ord[4]=0;
ord[5]=2;
}
else
{ acquire.acquire_freq=1;
// ord[3]=0;
// ord[4]=0;
// ord[5]=0x01;
ord[6]=0x02; //禁止低速采样
}
break;
case 22: //500ns =500/50 10ns 采样率100M/s 直接绘制波形
acquire.acquire_freq=2;
c=FREQ_SEL_100M;
ord[6]=0x02; //禁止低速采样
break;
case 23: //200ns =200/50 4ns 采样率250M/s 直接绘制波形
acquire.acquire_freq=3; //38fa
c=FREQ_SEL_250M;
ord[6]=0x02; //禁止低速采样
break;
case 24: //100ns =100/50 2ns 采样率250M/s 隔一点绘制
case 25: //50ns =50/50 1ns 采样率250M/s 隔二点绘制
case 26: //20ns =20/50 0.4ns 采样率500M/s 使用插值sin(x)/x插值算法
case 27: //10ns =10/50 0.2ns 采样率500M/s 使用插值sin(x)/x算法
case 28: //5ns =5/50 0.1ns 采样率500M/s 使用插值sin(x)/x算法
c=FREQ_SEL_250M;
ord[6]=0x02; //禁止低速采样 使两个AD同时工作
//time_base.x_step=step[i-24];
acquire.acquire_freq=4;
break;
}
ord[1]=c;
// ord[6]|=0x04;
SendCommandToUSB(VR_USRCMD);
//ord[0]='C';
// SendCommandToUSB(VR_USRCMD);
/*
ord[0]='L';
ord[1]=0;
ord[2]=0;
ord[3]=0;
ord[4]=0;
ord[5]=0;
ord[6]=0;
if(i>18)
{ ord[6]|=0x0c;
ord[6]|=0x30;
}else
{
ord[6]|=0x08;
ord[6]|=0x20;
}
SendCommandToUSB(VR_USRCMD);*/
m_displayWnd.ReDrawSCreen();
}
const int vlot_div[]={50000,20000,10000,5000,2000,1000,500,200,100,50,20,10,5};
//0 10V/Div 5X10V=50V -->衰减100倍=500mV 500/500=1 放大系数 1dB
//1 5V/Div 5X5V=25V -->衰减100倍=250mV 500/250=2 放大系数 2dB
//2 2V/Div 5X2V=10V -->衰减100倍=100mV 500/100=5 放大系数 5dB
//3 1V/Div 5X1v=5V -->衰减10倍=500mV 500/500=1 -------->1dB
//4 0.5V/Div 5X0.5V=2.5V -->衰减10倍=250mV 500/250=2 -------->2dB
//5 0.2V/Div 5X0.2V=1V -->衰减10倍=100mV 500/100=5 ------->5dB
//6 0.1V/Div 5X0.1V=500mV 500/500=1 ------->1dB
//7 50mV/Div 5X50mV=250mV 500/250=2 ------->2dB
//8 20mV/Div 5X20mV=100mV 500/100=5 ------->5dB
//9 10mV/Div 5X10mV=50mV 500/50=10 ------->10dB
//10 5mV/Div 5X5mV=25mV 500/25=20 ------->20dB
//#define PD 0x2000
#define AD8337_1DB_H 0xAD //控制电压小于-610mV dx=(700-(-610))*1024/2330=576=0x240*4|PD=0x2900
#define AD8337_1DB_L 0x38
#define AD8337_2DB_H 0xaB //控制电压-481mV dx=(700+481)*1024/2330=519=0x207*4|PD=0x281c
#define AD8337_2DB_L 0x2c
#define AD8337_5DB_H 0xa9 //控制电压-338mV dx=(700+338)*1024/2330=456=0x1c8*4|PD=0x2720
#define AD8337_5DB_L 0x58
#define AD8337_10DB_H 0xa7 //控制电压-103mV dx=(700+103)*1024/2330=353=0x161*4|PD=0x2584
#define AD8337_10DB_L 0xBc
#define AD8337_20DB_H 0xa5 //控制电压 360mV dx=(700-360)*1024/2330=149=0x95*4|PD=0x2254
#define AD8337_20DB_L 0x60
#define PWM1_1DB 210
#define PWM1_2DB 211
#define PWM1_5DB 211
#define PWM1_10DB 212
#define PWM1_20DB 214
//D0 : ac
//d1 : dc
//d2: att 100
//d3: short att 100
//d4: att 10
//d5: short att 10
//D6 : att GND
#define ATT_1000 0x14
#define ATT_100 0x24
#define ATT_10 0x18
#define ATT_1 0x28
void CDSOMainDlg::OnChadbCtrl()
{
int i=m_chadbCtl.GetSelectSwitch();
cha_param.vlot_d =vlot_div[i];
ord[0]=CMD_CTL_CHX;
ord[2]=0;
switch(i)
{
case 0: //50V/div //衰减1000dB
ord[1]=ATT_1000;
ord[3]=AD8337_2DB_H;
ord[4]=AD8337_2DB_L;
ord[5]=PWM1_2DB;
break;
case 1: //20V/div
ord[1]=ATT_1000; //衰减1000dB
ord[3]=AD8337_5DB_H;
ord[4]=AD8337_5DB_L;
ord[5]=PWM1_5DB;
break;
case 2: //10V/div //衰减100dB
ord[1]=ATT_100;
ord[3]=AD8337_1DB_H;
ord[4]=AD8337_1DB_L;
ord[5]=PWM1_1DB;
break;
case 3: //5V/div
ord[1]=ATT_100; //衰减100dB
ord[3]=AD8337_2DB_H;
ord[4]=AD8337_2DB_L;
ord[5]=PWM1_2DB;
break;
case 4: //2V/div
ord[1]=ATT_100; //衰减100dB
ord[3]=AD8337_5DB_H;
ord[4]=AD8337_5DB_L;
ord[5]=PWM1_5DB;
break;
case 5: //1V/div
ord[1]=ATT_10; //衰减10dB
ord[3]=AD8337_1DB_H;
ord[4]=AD8337_1DB_L;
ord[5]=PWM1_1DB;
break;
case 6: //500mV/div
ord[1]=ATT_10; //衰减10dB
ord[3]=AD8337_2DB_H;
ord[4]=AD8337_2DB_L;
ord[5]=PWM1_2DB;
break;
case 7: //200mV/div
ord[1]=ATT_10; //衰减1dB
ord[3]=AD8337_5DB_H;
ord[4]=AD8337_5DB_L;
ord[5]=PWM1_5DB;
break;
case 8: //100mV/div
ord[1]=ATT_1;//衰减1dB
ord[3]=AD8337_1DB_H;
ord[4]=AD8337_1DB_L;
ord[5]=PWM1_1DB;
break;
case 9: //50mV/div
ord[1]=ATT_1;//衰减1dB
ord[3]=AD8337_2DB_H;
ord[4]=AD8337_2DB_L;
ord[5]=PWM1_2DB;
break;
case 10: //20mV/div
ord[1]=ATT_1; //衰减1dB
ord[3]=AD8337_5DB_H;
ord[4]=AD8337_5DB_L;
ord[5]=PWM1_5DB;
break;
case 11: //10mV/div
ord[1]=ATT_1; //衰减1dB
ord[3]=AD8337_10DB_H;
ord[4]=AD8337_10DB_L;
ord[5]=PWM1_10DB;
break;
case 12: //5mV/div
ord[1]=ATT_1; //衰减1dB
ord[3]=AD8337_20DB_H;
ord[4]=AD8337_20DB_L;
ord[5]=PWM1_20DB;
break;
}
ord[1]|=coupline_reg;
SendCommandToUSB(VR_USRCMD);
Sleep(50);
ord[0]=CMD_I;
ord[1]=0x00;
ord[1]|=coupline_reg;
SendCommandToUSB(VR_USRCMD);
m_displayWnd.ReDrawSCreen();
}
#define AD8337_1DB_H_CH2 0x6D //控制电压小于-610mV dx=(700-(-610))*1024/2330=576=0x240*4|PD=0x2900
#define AD8337_1DB_L_CH2 0xb8
#define AD8337_2DB_H_CH2 0x6b //控制电压-481mV dx=(700+481)*1024/2330=519=0x207*4|PD=0x281c
#define AD8337_2DB_L_CH2 0x90
#define AD8337_5DB_H_CH2 0x69 //控制电压-338mV dx=(700+338)*1024/2330=456=0x1c8*4|PD=0x2720
#define AD8337_5DB_L_CH2 0x8c
#define AD8337_10DB_H_CH2 0x67 //控制电压-103mV dx=(700+103)*1024/2330=353=0x161*4|PD=0x2584
#define AD8337_10DB_L_CH2 0xdc
#define AD8337_20DB_H_CH2 0x64 //控制电压 360mV dx=(700-360)*1024/2330=149=0x95*4|PD=0x2254
#define AD8337_20DB_L_CH2 0xfc
#define PWM2_1DB 202
#define PWM2_2DB 202
#define PWM2_5DB 202
#define PWM2_10DB 202
#define PWM2_20DB 202
void CDSOMainDlg::OnChbdbCtrl()
{
int i=m_chbdbCtl.GetSelectSwitch();
chb_param.vlot_d =vlot_div[i];
ord[0]=CMD_CTL_CHX;
ord[2]=1;
switch(i)
{
case 0: //50V/div //衰减1000dB
ord[1]=ATT_1000;
ord[3]=AD8337_2DB_H_CH2;
ord[4]=AD8337_2DB_L_CH2;
ord[5]=PWM2_2DB;
break;
case 1: //20V/div
ord[1]=ATT_1000; //衰减1000dB
ord[3]=AD8337_5DB_H_CH2;
ord[4]=AD8337_5DB_L_CH2;
ord[5]=PWM2_5DB;
break;
case 2: //10V/div //衰减100dB
ord[1]=ATT_100;
ord[3]=AD8337_1DB_H_CH2;
ord[4]=AD8337_1DB_L_CH2;
ord[5]=PWM2_1DB;
break;
case 3: //5V/div
ord[1]=ATT_100; //衰减100dB
ord[3]=AD8337_2DB_H_CH2;
ord[4]=AD8337_2DB_L_CH2;
ord[5]=PWM2_2DB;
break;
case 4: //2V/div
ord[1]=ATT_100; //衰减100dB
ord[3]=AD8337_5DB_H_CH2;
ord[4]=AD8337_5DB_L_CH2;
ord[5]=PWM2_5DB;
break;
case 5: //1V/div
ord[1]=ATT_10; //衰减10dB
ord[3]=AD8337_1DB_H_CH2;
ord[4]=AD8337_1DB_L_CH2;
ord[5]=PWM2_1DB;
break;
case 6: //500mV/div
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -