本人应用DSP28335片内ADC对外部信号进行采样,其中信号为正弦波、2KHz、VPP = 2.2v,偏置1.1V(保证信号在正半轴范围内,且信号在3V范围内),应用信号源给出!其中片内ADC采样率是通过ePWM进行产生的,采样率为8KHz,通过28335片内ADC采样的波形如下图所示:
图1:片内ADC采样波形
图2:片内ADC采样波形2KHz正弦波
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,感谢您给予回复意见,您提出的这一点在最开始就予以排除了,因为Graph中的数据类型和自身定义的数据类型不一致的话,显示的波形肯定不会正确,我现在定义的数据类型为浮点型,即float32。数据类型这一块可以排除,我最担心的是不是我的片内ADC应用的不正确。下面把我对ADC的相关配置书写如下,希望能从这一块帮忙查找一下:
AdcRegs.ADCTRL1.bit.RESET = 1; /* 复位片内ADC外设 */
AdcRegs.ADCTRL1.bit.SUSMOD = 0; /* 忽略仿真挂起 */
AdcRegs.ADCREFSEL.bit.REF_SEL = 0; /* 采用内部基准电压处理 */
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 3; /* 能带隙电路和参考电路上电 */
DELAY_US(10000);
AdcRegs.ADCTRL3.bit.ADCPWDN = 1; /* ADC内核中模拟电路上电 */
DELAY_US(5000);
AdcRegs.ADCTRL1.bit.ACQ_PS = 2; /* SOC脉冲宽度为3个ADCLK */
AdcRegs.ADCTRL1.bit.CPS = 1; /* Fclk = HSPCLK/2 */
AdcRegs.ADCTRL1.bit.CONT_RUN = 0; /* 工作于启动-停止模式*/
AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; /* 工作于"级联模式" */
AdcRegs.ADCTRL3.bit.ADCCLKPS = 15; /* ADCLK = HSPCLK/ 15*2 */
/*****************************************************************************
*** HSPCLK
*** ADCLK = -------------------------
*** 2×ADCLKPS ×(CPS + 1)
*******************************************************************************/
AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; /* 采用顺序采样模式采样 */
AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 7; /* 最大转换通道为8 */
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x08; /* ADCINB0作为第1路SEQ1序列 */
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x08; /* ADCINB0作为第2路SEQ1序列 */
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 0x09; /* ADCINB1作为第1路SEQ1序列 */
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 0x09; /* ADCINB1作为第2路SEQ1序列 */
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 0x0A; /* ADCINB2作为第1路SEQ2序列 */
AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 0x0A; /* ADCINB2作为第2路SEQ2序列 */
AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 0x0B; /* ADCINB3作为第1路SEQ2序列 */
AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 0x0B; /* ADCINB3作为第2路SEQ2序列 */
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; /* 清除SEQ1中的中断标志位INT_SEQ1 */
AdcRegs.ADCST.bit.INT_SEQ2_CLR = 1; /* 清除SEQ2中的中断标志位INT_SEQ2 */
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; /* 立即复位发生器到CONV00状态(手动) */
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; /* 使能INT_SEQ1的中断请求 (every EOS) */
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2 = 0; /* 屏蔽SEQ2的中断请求 */
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0; /* 在每一个SEQ1序列结束时设置INT_SEQ1 */
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;/* 由ePWM SOCA触发信号启动SEQ1 */
AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 0; /* 清除一个不确定的SOC触发 */
}
为了获得较高质量的信号,对外部信号采用了过采样处理,其中应用内部2路通道采集外部1路,采集的波形就如上面图中的那样【最开始应用的正常采样,即1路对应1路,采集的波形也是上图中的那样】。希望能给予指导和建议!