看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
Eric Ma:
yang jin,
它们最快采样频率是一样的,都为12.5MSPS。见F28335 datasheet p77和F2812 p63
Fast conversion rate: 80 ns at 25-MHz ADC clock, 12.5 MSPS
Eric
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
yang jin:
回复 Eric Ma:
我实际测试了一下,不知道是否设置正确,但是采样到数据转换最多只能达到6.2MHz
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
Eric Ma:
回复 yang jin:
yang,
不知道你是用什么测试方法?
你可以只配置一个通道,然后采用连续采样的模式,在中断服务程序里面设一个GPIO翻转,通过GPIO翻转频率来看采样的频率。当然,还要考虑从AD转换完成到进入中断这十几个系统时钟的时间。
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
yang jin:
回复 Eric Ma:
我确实使用的是只配置一个通道,然后采用连续采样的模式,每采样一次,计数器加1,使用1us的中断周期,用一个100个成员的数组保存计数器的值,基本上是61,62
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
yang jin:
回复 yang jin:
不好意思,是10us的中断周期
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
Eric Ma:
回复 yang jin:
yang jin,
我感觉应该跟测试代码有关系。
我的建议是,程序load 在RAM中,然后测试代码在做完初始化之后,就什么都不要做,进入while(1){}空循环,等待中断。
然后在中断里面放三条语句
首先一条是GPIO34toggle,另外两条清除ADC标志位以及PIE标志位。
如果以上测试还没达到十几M,那就得 你把ADC的初始化代码发上来,我们一起看一下有哪些地方是不是没配置准确。
Eric
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
yang jin:
回复 Eric Ma:
AD初始化代码如下:
void ADReal_init(void){ EALLOW; SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1; ADC_cal(); EDIS;
AdcRegs.ADCTRL3.all = 0x00E0; // Power up bandgap/reference/ADC circuits DELAY_US(5000L); // Delay before converting ADC channels
AdcRegs.ADCTRL1.bit.ACQ_PS = 0x0; AdcRegs.ADCTRL3.bit.ADCCLKPS = 1; AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; AdcRegs.ADCTRL1.bit.SEQ_CASC = 0; AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; AdcRegs.ADCTRL1.bit.CONT_RUN = 1; AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0;
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0; //Max Conv AdcRegs.ADCMAXCONV.bit.MAX_CONV2 = 0; //Max Conv
AdcRegs.ADCCHSELSEQ1.all = 0x3210; AdcRegs.ADCCHSELSEQ2.all = 0x7654; AdcRegs.ADCCHSELSEQ3.all = 0xBA98; AdcRegs.ADCCHSELSEQ4.all = 0xFEDC;
}
Main函数代码如下:
void main(void){ InitSysCtrl();
EALLOW; SysCtrlRegs.HISPCP.all = 0x0003; EDIS;
DINT;
InitPieCtrl();
IER = 0x0000; IFR = 0x0000;
InitPieVectTable();
EALLOW; PieVectTable.TINT0 = &CPU_timer0_isr;
EDIS;
InitCpuTimers();
// 150MHz CPU Freq, 1 second Period (in uSeconds 1000000) ConfigCpuTimer(&CpuTimer0, 150, 100);
PieCtrlRegs.PIEIER1.bit.INTx7 = M_INT1;
EnableInterrupts(); // Step 3. Initialize all the Device Peripherals: Adreal_init();
IER = M_INT1; AdcRegs.ADCTRL2.all = 0x2000;
CpuTimer0Regs.TCR.all = 0x4001;
for(;;) { while(AdcRegs.ADCST.bit.INT_SEQ1 == 0){} AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; Point++; }}
CPUTIMER0中断如下:
interrupt void CPU_timer0_isr(void){ State[i++] = Point;
Point = 0;
if(i>=99) i = 0; // Acknowledge this interrupt to receive more interrupts from group 1 PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;}
程序是RAM调试程序,直接在RAM中运行的,请帮助看看程序是否有问题?测试出来的结果数组中基本都是61或62.
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
lewes lewes:
回复 yang jin:
现在问题解决了吗?我现在也遇到这样的问题,我用0.5MHz的方波试的,采样结果显示,一个周期10个点,即采样率5MHz。 我的QQ:290094668多交流啊!
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
lewes lewes:
回复 Eric Ma:
现在问题解决了吗?我现在也遇到这样的问题,我用0.5MHz的方波试的,采样结果显示,一个周期10个点,即采样率5MHz。 我的QQ:290094668多交流啊!
看2812与28335的Datasheet,写的好几个地方都有矛盾。
2812的AD采样最快频率是25MHz吗?
28335的AD采样最快频率是12.5MHz吗?
是不是2812的AD采样速率比28335块?
是不是2812的采样带宽同样比28335快?
wenlong zhang87:
回复 yang jin:
LZ你这里设置的有点乱呀,我这里有一个HELLODSP的例程,这个可以实现,你参考研究一下吧,大家共同学习,我已经下面个哥们QQ,大家有机会多交流一下。