大家好!
我正在为我的应用使用控制器 TMS320F28379S 我正在使用全部20个模拟 输入、我需要知道、ADC 需要多少量才能给我提供结果(ADC 转换时间)?
使用 Timer0触发 ADC、下面是我的 ADC 代码部分
// ADC 配置
EALLOW;
AdcaRegs.ADCCTL2.bit.prescale = ADC_CLK_PRECALAR;//将 ADCCLK 分频器设置为/4
AdcSetMode (ADC_ADCA、ADC_Resolution_12bit、ADC_SIGNALMODE_SINGLE);// ADCA、12位、 单端模式
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;//为 ADC 加电
AdcbRegs.ADCCTL2.bit.prescale = ADC_CLK_PRECALAR;//将 ADCCLK 分频器设置为/4
AdcSetMode (ADC_ADCB、ADC_Resolution_12位、ADC_SIGNALMODE_SINGLE);// ADCA、12位、 单端模式
AdcbRegs.ADCCTL1.bit.ADCPWDNZ = 1;//为 ADC 加电
AdccRegs.ADCCTL2.bit.prescale = ADC_CLK_PRECALAR;//将 ADCCLK 分频器设置为/4
AdcSetMode (ADC_ADCC、ADC_Resolution_12bit、ADC_SIGNALMODE_single);// ADCA、12位、 单端模式
AdccRegs.ADCCTL1.bit.ADCPWDNZ = 1;//为 ADC 加电
AdcdRegs.ADCCTL2.bit.prescale = ADC_CLK_PRECALAR;//将 ADCCLK 分频器设置为/4
AdcSetMode (ADC_ADCD、ADC_Resolution_12bit、ADC_SIGNALMODE_single);// ADCA、12位、 单端模式
AdcdRegs.ADCCTL1.bit.ADCPWDNZ = 1;//给 ADC 加电
// ADC 通道选择
AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚 A0
AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;//SOC1将转换引脚 A1
AdcaRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2将转换引脚 A2
AdcaRegs.ADCSOC3CTL.bit.CHSEL = 3;//SOC3将转换引脚 A3
AdcaRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4将转换引脚 A4
AdcaRegs.ADCSOC5CTL.bit.CHSEL = 5;//SOC5将转换引脚 A5
AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚 B0
AdcbRegs.ADCSOC1CTL.bit.CHSEL = 1;//SOC1将转换引脚 B1
AdcbRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2将转换引脚 B2
AdcbRegs.ADCSOC3CTL.bit.CHSEL = 3;//SOC3将转换引脚 B3
ADccRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0将转换引脚 C2
ADccRegs.ADCSOC1CTL.bit.CHSEL = 3;//SOC1将转换引脚 C3
ADccRegs.ADCSOC2CTL.bit.CHSEL = 4;//SOC2将转换引脚 C4
AdcdRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚 D0
AdcdRegs.ADCSOC1CTL.bit.CHSEL = 1;//SOC1将转换引脚 D1
AdcdRegs.ADCSOC2CTL.bit.CHSEL = 2;//SOC2将转换引脚 D2
AdcdRegs.ADCSOC3CTL.bit.CHSEL = 3;//SOC3将转换引脚 D3
AdcdRegs.ADCSOC4CTL.bit.CHSEL = 4;//SOC4将转换引脚 D4
AdcaRegs.ADCSOC14CTL.bit.CHSEL = 14;//SOC5将转换引脚 A14
AdcaRegs.ADCSOC15CTL.bit.CHSEL = 15;//SOC5将转换引脚 A15
AdcaRegs.ADCSOC0CTL.bit.ACQPS = 14;//SOC0将转换引脚 A0 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC1CTL.bit.ACQPS = 14;//SOC1将转换引脚 A1 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC2CTL.bit.ACQPS = 14;//SOC2将转换引脚 A2 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC3CTL.bit.ACQPS = 14;//SOC3将转换引脚 A3 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC4CTL.bit.ACQPS = 14;//SOC4将转换引脚 A4 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC5CTL.bit.ACQPS = 14;//SOC5将转换引脚 A5 -采样窗口为100个 SYSCLK 周期= 75nS
AdcbRegs.ADCSOC0CTL.bit.ACQPS = 14;//SOC0将转换引脚 B0 -采样窗口为100个 SYSCLK 周期= 75nS
AdcbRegs.ADCSOC1CTL.bit.ACQPS = 14;//SOC1将转换引脚 B1 -采样窗口为100个 SYSCLK 周期= 75nS
AdcbRegs.ADCSOC2CTL.bit.ACQPS = 14;//SOC2将转换引脚 B2 -采样窗口为100个 SYSCLK 周期= 75nS
AdcbRegs.ADCSOC3CTL.bit.ACQPS = 14;//SOC3将转换引脚 B3 -采样窗口为100个 SYSCLK 周期= 75nS
AdccRegs.ADCSOC0CTL.bit.ACQPS = 14;//SOC2将转换引脚 C2 -采样窗口为100个 SYSCLK 周期= 75nS
AdccRegs.ADCSOC1CTL.bit.ACQPS = 14;//SOC3将转换引脚 C3 -采样窗口为100个 SYSCLK 周期= 75nS
AdccRegs.ADCSOC2CTL.bit.ACQPS = 14;//SOC3将转换引脚 C4 -采样窗口为100个 SYSCLK 周期= 75nS
AdcdRegs.ADCSOC0CTL.bit.ACQPS = 14;//SOC0将转换引脚 D0 -采样窗口为100个 SYSCLK 周期= 75nS
AdcdRegs.ADCSOC1CTL.bit.ACQPS = 14;//SOC1将转换引脚 D1 -采样窗口为100个 SYSCLK 周期= 75nS
AdcdRegs.ADCSOC2CTL.bit.ACQPS = 14;//SOC2将转换引脚 D2 -采样窗口为100个 SYSCLK 周期= 75nS
AdcdRegs.ADCSOC3CTL.bit.ACQPS = 14;//SOC3将转换引脚 D3 -采样窗口为100个 SYSCLK 周期= 75nS
AdcdRegs.ADCSOC4CTL.bit.ACQPS = 14;//SOC4将转换引脚 D4 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC14CTL.bit.ACQPS = 14;//SOC4将转换引脚 A4 -采样窗口为100个 SYSCLK 周期= 75nS
AdcaRegs.ADCSOC15CTL.bit.ACQPS = 14;//SOC5将转换引脚 A5 -采样窗口为100个 SYSCLK 周期= 75nS
//------------------------------------------------------- ADC 触发源选择------------------------------------------------------- //
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCSOC5CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//通过计时器0触发/TINT0n
AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcbRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcbRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
ADccRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdccRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 1;//通过计时器触发0 / TINT0n
AdcdRegs.ADCSOC1CTL.bit.TRIGSEL = 1;//通过计时器触发0 / TINT0n
AdcdRegs.ADCSOC2CTL.bit.TRIGSEL = 1;//通过计时器触发0 / TINT0n
AdcdRegs.ADCSOC3CTL.bit.TRIGSEL = 1;//通过计时器触发0 / TINT0n
AdcdRegs.ADCSOC4CTL.bit.TRIGSEL = 1;//通过计时器触发0 / TINT0n
AdcaRegs.ADCSOC14CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCSOC15CTL.bit.TRIGSEL = 1;//由计时器触发0 / TINT0n
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1;// SOC1结束将设置 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除
AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 1;// SOC1结束将设置 INT1标志
AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除。
ADccRegs.ADCINTSEL1N2.bit.INT1SEL = 1;// SOC1结束将设置 INT1标志
AdccRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
ADccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除
AdcdRegs.ADCINTSEL1N2.bit.INT1SEL = 1;// SOC1结束将设置 INT1标志
AdcdRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcdRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清零
EDIS;
50µSec 计时器中断:针对每个 μ s
ADccRegs.ADCSOCFRC1.all = 0x0007;//SOC0、1和 SOC2 // ADCSOC 在 TMR0_ISR 中完成
此致、
拉贾穆鲁甘