Thread 中讨论的其他器件: controlSUITE、 C2000WARE
我正在处理整流器项目。 我正在使用所有 ADC 通道。 我想使用我的 TMS320F28069高性能。
因此、当我尝试以100kHz 的频率对所有 ADC 通道进行采样时、它在100kHz 下并不稳定。 它的频率会发生变化。 在 TMS320F2806X 技术参考手册中、一个采样时间为 444.44ns。
因此在 同步采样模式下,8*444.44ns = ~ 3.555us。 因此、最大采样频率为 281kHz。 但我不会以该速率进行采样。 我将添加我的 ADC 设置代码。 问题是什么??
请帮帮我。
EALLOW; SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; (*Device_cal)(); AdcRegs.ADCCTL1.bit.ADCBGPWD=1; //电源 ADC BG AdcRegs.ADCCTL1.bit.ADCREFPWD=1; //电源基准 AdcRegs.ADCCTL1.bit.ADCPWDN = 1; //功率 ADC AdcRegs.ADCCTL1.bit.ADCENABLE = 1; //启用 ADC AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; //选择内部 BG AdcRegs.ADCCTL2.bit.CLKDIV2EN = 0; //ADC 选择 GpioDataRegs.GPACLEAR.bit.GPIO29 = 1; AdcRegs.ADCSAMPLEMODE.All=0x00FF; AdcRegs.ADCCTL2.bit.ADCNONOVERLAP = 1;//启用非重叠模式 AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;// ADCINT1在 AdcResults 锁存后跳闸 AdcRegs.INTSEL1N2.bit.INT1E = 1;//启用 ADCINT1 AdcRegs.INTSEL1N2.bit.INT1CONT = 0;//禁用 ADCINT1连续模式 AdcRegs.INTSEL1N2.bit.INT1SEL = 0x0F;//设置 EOC1以触发 ADCINT1触发 AdcRegs.ADCSOC0CTL.bit.CHSEL = 0x0;//将 SOC0通道选择设置为 ADCINA0 // AdcRegs.ADCSO1CTL.bit.CHSEL = 0x0; AdcRegs.ADCSOC2CTL.bit.CHSEL = 0x1; // AdcRegs.ADCSOC3CTL.bit.CHSEL = 0x1; AdcRegs.ADCSOC4CTL.bit.CHSEL = 0x2; // AdcRegs.ADCSOC5CTL.bit.CHSEL = 0x2; AdcRegs.ADCSOC6CTL.bit.CHSEL = 0x3; // AdcRegs.ADCSOC7CTL.bit.CHSEL = 0x3; AdcRegs.ADCSOC8CTL.bit.CHSEL = 0x4; // AdcRegs.ADCSOC9CTL.bit.CHSEL = 0x4; AdcRegs.ADCSOC10CTL.bit.CHSEL = 0x5; // AdcRegs.ADCSOC11CTL.bit.CHSEL = 0x5; AdcRegs.ADCSOC12CTL.bit.CHSEL = 0x6; // AdcRegs.ADCSOC13CTL.bit.CHSEL = 0x6; AdcRegs.ADCSOC14CTL.bit.CHSEL = 0x7; // AdcRegs.ADCSOC15CTL.bit.CHSEL = 0x7; AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC13CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC14CTL.bit.TRIGSEL = 0;//设置 SOC0在 EPWM1A 上启动触发器,因为轮询 SOC0首先转换 SOC AdcRegs.ADCSOC15CTL.bit.TRIGSEL = 0;//设置 EPWM1A 上的 SOC1启动触发器,因为 SOC0先转换,然后 SOC1 AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC6CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC7CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC8CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC9CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC10CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC11CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC12CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC13CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC14CTL.bit.ACQPS = 6;//将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) AdcRegs.ADCSOC15CTL.bit.ACQPS = 6;//将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1) // PieVectTable.ADCINT1 =&adcHwiISR; //PieCtrlRegs.PIEIER1.bit.INTx1 = 1; IER |= M_INT1;//启用 CPU 中断1 EDIS;