|
发表于 2024-1-21 18:47:43
|
显示全部楼层
/* 以指定参数执行一次测量
excitI:指定电流档位,以0-3由小到大表示四个电流档位
curPGA:是否使用PGAX10(1为放大10倍,0为不放大)
*/
u16 Take_a_Measurement(u8 excitI,u8 curPGA)
{
u16 counter=0;
Vref_ReturnTo0; //参考电压泄放
DUT_DisChargeStart;//DUT残留电压泄放
delay_ms(10);
DUT_ChargeReady;//DUT准备充电
Vref_EstableReady;//参考电压准备启动
if(curPGA)PGAX10_Contrl=0;//放大10倍
else PGAX10_Contrl=1; //不放大
TIM1->CCR1=2;
TIM1->CNT=0;
TIM_Cmd(TIM1, ENABLE);//启动PWM建构锯齿波参考电压
//
while(1)
{
DUT_DisChargeStart;//DUT残留电压泄放
delay_us(492);
if(counter>=MAXMEAS_VAL)
{ counter=0; break;}//计数大于限定值,强制置为0退出
counter++;
DUT_ChargeReady;//DUT准备充电
TurnExcitCurr(excitI, T_ON);//开启激励电流给DUT充电
delay_us(7);
// TurnExcitCurr(excitI, T_OFF);//关闭激励电流
/* 在激励脉冲结束瞬间,检查比较器输出 */
if(IsVrefExceedVdut(5,3)) {/* 参考电压开始超出DUT电压 */
tim_ccr=TIM1->CCR1; break;}
TurnExcitCurr(excitI, T_OFF);//关闭激励电流
}
TurnExcitCurr(excitI, T_OFF);//关闭激励电流
TIM_Cmd(TIM1, DISABLE);//停止PWM锯齿波参考电压
Vref_ReturnTo0;//参考电压泄放
DUT_DisChargeStart;//DUT残留电压泄放
return counter;
} |
|