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.

DSP28335 ADC采样率及采样窗口的问题

Other Parts Discussed in Thread: TMS320F28335, CONTROLSUITE

DSP28335 ADC部分的转换启动有三种方式:1.软件方式启动;2.ePWM方式启动;3.外部管脚启动。

我想了解的是:应用ePWM方式启动ADC,如何确定该部分的采样率就是自己配置的,如10K大小的采样率。

还有就是,ADC中的采样窗口对序列转换的时间有什么影响,因为序列转换完成后才会触发中断,进而进行相应的 操作处理,而ePWM方式给出采样率是触发启动的ADC转换,此处的关系有些不太清晰?

望高手给予指点!谢谢!

  • ePWM触发ADC整体就是用途就是可以做到在PWM波的高电平时的某个阶段去采集AD值

    确保PWM控制的模块的电压值达到一个稳定的状态后去采集

    关于采样频率就直接与PWM波的频率有关了

  • 如果用PWM的方式去启动ADC,假设使用PWM周期事件去启动ADC,那么PWM的频率就是采样率,即隔多久去采样启动ADC模块进行采样。

    采样窗会影响的是采样保持到转换结果的时间。

    Eric

  • 问题描述:
    应用的平台是TMS320F28335;
    应用其片内外设ADC对模拟信号进行采样处理;
    使用方式:
    ADC使用级联方式,工作于启动/停止方式,SOC启动通过ePWM触发,片内ADC的工作时钟配置为1.171875MHz,采样窗大小为3个;其中配置源程序如下:
    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(2000);
    AdcRegs.ADCTRL1.bit.ACQ_PS = 2; /* SOC脉冲宽度为3ADCLK*/
    AdcRegs.ADCTRL1.bit.CPS = 1; /* Fclk = HSPCLK/2 */
    AdcRegs.ADCTRL1.bit.CONT_RUN = 1; /* 工作于启动-停止模式 */
    AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; /* 工作于"级联模式" */
    AdcRegs.ADCTRL3.bit.ADCCLKPS = 15; /* ADCLK = HSPCLK/ 15*2 */
    AdcRegs.ADCTRL3.bit.SMODE_SEL = 0; /* 采用顺序采样模式采样 */
    AdcRegs.ADCMAXCONV.bit.MAX_CONV1 = 0; /* 4路采样,提高其精度 */
    AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; /* ADCINA0作为第1路SEQ1序列 */
    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触发 */
    ****************************************************************************************
    其中ePWM则采用递增计数模式,直接产生方波信号进行处理运算,其配置如下:
    EALLOW;
    /* 在 InitSysCtrl()中已经将ePWM1的时钟进行了使能 */
    /* 用来配置ADC的采样率 */

    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Disable TBCLK within the ePWM

    /* ePWM1的相关配置,以供片内ADC的启动 */
    EPwm1Regs.TBCTL.bit.CLKDIV = 0;
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1; /* TBCLK = SYSCLK/2 = 75MHz*/
    EPwm1Regs.ETSEL.bit.SOCAEN = 1; /* 使能ADC开始转换A脉冲,使能ePWMxSOCA脉冲 */
    EPwm1Regs.ETSEL.bit.SOCASEL = 2;/* 使能,ePWMxSOCA脉冲当定时器递增时时间基准计数器等于CMPA */
    EPwm1Regs.ETPS.bit.SOCAPRD = 1; /* 在第一个事件上生成ePWMxSOCA脉冲 */

    EPwm1Regs.TBPRD = 0x493E; /* 设置时间基准计数器的周期,决定 PWM1的频率 */
    EPwm1Regs.TBCTR = 0; /* 清空计数器 */
    EPwm1Regs.TBCTL.bit.CTRMODE = 0; /* 设置计数器模式为递增计数模式 */
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM

    EDIS;
    按理讲,TBPRD的值是产生SOCA信号的关键,实际上当把ePWM用于自身中断时已经进行了试验,对其进行的是驱动IO口翻转处理,试验证明TBPRD的值能够实现周期计数的变化;但是当把ePWM用于ADC时,在ADC中断函数中同样驱动IO口翻转处理,但是IO口翻转的频率和TBPRD的值没有关系,反倒是更改ADC的SOC窗口的大小对ADC的采样率有一定的影响。
    各中原因尚不明确,望高手给与指导建议!

  • 您好,您所说的上述情况理论上是这样,但是在采集过程中,AD的采样率的确是不受控制了,这一块儿现在不是很明白,希望能给予指导!

  • 您好,我用的ccs5.2版本,利用controlsuite的28335A/Dsoc例程采样时,当输入采集电压值0-3v时,我在watch窗口的expression添加电压变量值观看采集进来的的电压数值是否有变化,结果一直是0没有数值变化,请教原因。

    另外有人推荐看波形窗口,我从网上找这个窗口没有找到,请教那个窗口是观看采集进来的电压值波形呢?

    谢谢指导!急求

  • AdcRegs.ADCTRL1.bit.CONT_RUN = 1; /* 工作于启动-停止模式 */          这一句是连续运行模式,赋值0才是启动停止模式

  • 请问问题解决了吗,我也发现ADC通过EPWM触发方式,ADC采样率!=PWM频率??请问楼主解决没有

  • ADC采用时候,采样频率不一定等于EPWM的周期,这取决于你的出发方式以及PWM波形。只有比如你可以设置上升沿触发,可以设置下降沿触发,也可以设置上升下降沿均触发。在不同的方式下,两者的关系不同。当设置上升沿触发时候,ADC与PWM的频率相同

  • 你好,我EPWM频率60K,向上计数,Counter=CMP,触发ADC采样,ADC进入中断,我在AD中断里翻转IO口,波形如下

  • 请问 你是想说 ADC采样率!=PWM频率??,即 ADC采样率不等于PWM频率吗??

  • ADC采样频率是否等于PWM频率,一个要看SOC设置的触发点再一个PWM周期是几个,比如增减模式,就可能在一个周期触发两次ADC SCO的采样。另外你所说的采样率是不是指采样窗的大小还是最快的采样频率?

  • 您好!请问你这个是什么原因?怎么解决的,可以分享一下么?谢谢。

  • 您好!请问您的问题解决了吗,我也遇到了这个问题

  • 请问采样频率是不是大于等于PWM波的频率就够了,比如开关频率10KHZ,则采样频率只要高于10KhZ 就行?