工具/软件:Code Composer Studio
您好 Frank:
ADC 模块 A 的采样周期为125us、对三相电机电流值进行采样。 输入信号 RC 滤波时间常数为10us。 信号的基频不超过50Hz。
ADC 模块 B 的采样周期为2ms。 输入信号是直流信号、RC 滤波器的时间常数为112.8us。 ADC 模块 D 未使用。
我使用以下函数初始化和校准 ADC 模块,并使用主函数中的指令 InitAdc()调用此函数。
空 InitAdc (空)
{EALLOW;
AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4、30M
AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;//设置 ADCACLK 加电
AdcbRegs.ADCCTL2.bit.prescale = 10;//将 ADCCLK 分频器设置为/6、20M
AdcSetMode (ADC_ADCB、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);
AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;//设置 ADCBCLK 加电
AdcdRegs.ADCCTL2.bit.prescale = 10;//将 ADCCLK 分频器设置为/6、20M
AdcSetMode (ADC_ADCD、ADC_Resolution、12位、ADC_SIGNALMODE_SINGLE);
AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;//设置 ADCDCLK 加电
DELAY_US (1000);//延迟1ms 以允许 ADC 加电时间
AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 6;// SOC0-5为高优先级,SOC6-15循环
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 29;//将 ADCA SOC0采样保持时间设置为0.25us
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;//为 ADCINA0设置 ADCA SOC0、即相位 AP 电流
AdcaRegs.ADCSOC1CTL.bit.ACQPS = 29;//将 ADCA SOC1采样保持时间设置为0.25us
AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;//为 ADCINA1设置 ADCA SOC1、即 A 相电流
AdcaRegs.ADCSOC2CTL.bit.ACQPS = 29;//将 ADCA SOC2采样保持时间设置为0.25us
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//为 ADCINA2设置 ADCA SOC2、即相位 BP 电流
AdcaRegs.ADCSOC3CTL.bit.ACQPS = 29;//将 ADCA SOC0采样保持时间设置为0.25us
AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;//为 ADCINA3设置 ADCA SOC0、即 BN 相电流
AdcaRegs.ADCSOC4CTL.bit.ACQPS = 29;//将 ADCA SOC1采样保持时间设置为0.25us
AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//为 ADCINA4设置 ADCA SOC1、即相位 CP 电流
AdcaRegs.ADCSOC5CTL.bit.ACQPS = 29;//将 ADCA SOC2采样保持时间设置为0.25us
AdcaRegs.ADCSOC5CTL.bit.CHSEL = 5;//为 ADCINA5设置 ADCA SOC2、即相位 CN 电流
AdcbRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 3;// SOC0-2为高优先级,SOC3-15循环
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 29;//将 ADCB SOC0采样保持时间设置为2us
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;//为 ADCINB0设置 ADCB SOC0、即直流总线 P
AdcbRegs.ADCSOC1CTL.bit.ACQPS = 29;//将 ADCB SOC1采样保持时间设置为2us
AdcbRegs.ADCSOC1CTL.bit.CHSEL = 1;//为 ADCINB1设置 ADCB SOC1、即直流总线 N
AdcbRegs.ADCSOC2CTL.bit.ACQPS = 29;//将 ADCB SOC2采样保持时间设置为2us
AdcbRegs.ADCSOC2CTL.bit.CHSEL = 2;//为 ADCINB2设置 ADCB SOC2、即 IGBT 温度
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;// ADCA INT 脉冲在 ADC 结果前1个周期发生
AdcbRegs.ADCCTL1.bit.INTPULSEPOS = 1;// ADCB INT 脉冲在 ADC 结果前1个周期发生
AdcaRegs.ADCINTFLGCLR.All=15;//清除 ADCAINT1-4
AdcaRegs.ADCINTOVFCLR.All=15;//清除 ADCAINTOVFCLR1-4
AdcaRegs.ADCINTSEL1N2.all =0x25;//启用 ADCA INT1、EOC 中断(位于5)
EDIS;
//IER |= M_INT1;//启用连接到 ADC INT 的 CPU INT1
AdcTrig (0);//为软件设置 TRIG 源
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 0;//软件 ADCSOCB/D
AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 0;//软件 ADCSOCB/D
AdcbRegs.ADCSOC2CTL.bit.TRIGSEL = 0;//软件 ADCSOCB/D
AdcbRegs.ADCSOCFRC1.all =7;//快速启动 ADCB0-2
}