TI中文支持网
TI专业的中文技术问题搜集分享网站

28027 AD速率上不去(最高几百K)

       最近使用28027做数据采集(内部AD),发现采样率上不去,于是写了一个最简单的连续采集的程序,仍然无法正确采集到几十k的信号,通过计算可得大概其采样率最高为几百k的样子。(使用的是CCS5.3 硬件是C2000 Piccolo LaunchPad)

       可是按照理论分析,时钟是60m的,单个AD消耗也就22个时钟周期,即便加上进入AD中断读取结果的这段时间,也完全不至于最高采样率如此之低。请问这是哪里出了问题呢?

以下附上采集程序:

#include "DSP28x_Project.h"
#include "F2802x_Device.h"

interrupt void adc_isr(void);

Uint16 g_ADC_Results[1024]; // 存放ADC计算结果
char count=0;

/***************************************************************************************************
**Function: ** main
**Description: ** Main program
**Input: ** Null
**Output: ** Null
**Others: ** Null
***************************************************************************************************/
void main(void)
{
Uint32 l_ADC_Results_Tmp;
/* 系统初始化 */
InitSysCtrl();
InitAdc();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; // 中断脉冲在 ADC 结果锁存到结果寄存器可的一个周期前产生
/* SOCx 通道选择 */
AdcRegs.ADCSOC0CTL.bit.CHSEL= 3;//选择 ADCA2通道
/* 采样窗设置 */
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;
/* 中断模式设置 */
AdcRegs.INTSEL1N2.bit.INT1CONT = 1; //ADC连续转换使能,
AdcRegs.INTSEL1N2.bit.INT1E = 1; // 使能ADC中断1
AdcRegs.INTSEL1N2.bit.INT1SEL = 0; // ADC SOC0转换结束触发ADCInterrupt 1
/* 选择ADCINT1触发的SOC */
AdcRegs.ADCINTSOCSEL1.bit.SOC0 = 1;
AdcRegs.ADCSOCFRC1.bit.SOC0 = 1; // 强制SOC0开始一次转换
PieVectTable.ADCINT1 = &adc_isr;
EDIS;
/* 使能PIE ADCINT1*/
PieCtrlRegs.PIEIER1.bit.INTx1 = 1; // 使能PEI INT 1.1
IER |= M_INT1; // 使能CPU中断1
EINT; // 使能全局中断INTM
//CpuTimer0Regs.PRD.all = 10000; // 1/6 S

while(1)
{

}
}

/***************************************************************************************************
**Function: ** interrupt void adc_isr(void)
**Description: ** ADCINT1中断
**Input: **
**Output: ** Null
**Others: ** Null
***************************************************************************************************/
interrupt void adc_isr(void)
{
if(count<1023)
{
g_ADC_Results[count] = AdcResult.ADCRESULT0;
count++;
}
else
{
count=0;
}
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; // 清除ADCINT1中断标志
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // 应答PIE
}

yanqiang zhan:

同样遇到此问题,没有解决~

赞(0)
未经允许不得转载:TI中文支持网 » 28027 AD速率上不去(最高几百K)
分享到: 更多 (0)