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.

关于AD采样的问题



专家您好:

我用的是F28035芯片。

现在用PWM2去触发中断以及AD采样,

在中断服务程序的中间和结尾都用数组去收集AdcResult.ADCRESULT2的值,

发现读出来的AD值不一样。

我之前的理解是:

在一个中断服务程序中,AD结果寄存器保存的转换值应该是不变的。因为没有其他的事件去触发SOC。

但从实验结果来看,理解好像是错的。

请专家指正

  • ADC是SOC2么?

    SOC2的结果才存储在ADCResult2中。

    SOC2里面可以设置触发源是PWM2,和采样的AD通道,另外采样窗的长度设置成多少了?

    两次采样的结果哪次是对的? 还是都是错的?

  • 我配置的AD触发源都是PWM2

    AdcRegs.ADCSOC1CTL.bit.ACQPS=6;//采样窗口

    AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

    AdcRegs.ADCSOC2CTL.bit.CHSEL=2;//采样通道ADCINA2---ADCRESULT2

    我主要是验证

    在AD转换完之后,主CPU和CLA的采样结果应该一样的,但是测试结果并不一样,不理解。

    我配置成CLA中断是发生在主CPU 中断之后。

    谢谢

  • AdcRegs.ADCSOC1CTL.bit.ACQPS=6;//采样窗口

    AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

    AdcRegs.ADCSOC2CTL.bit.CHSEL=2;//采样通道ADCINA2---ADCRESULT2

     

    AdcRegs.ADCSOC1CTL.bit.ACQPS=6;//采样窗口

    你没发现,配置中是SOC1CTL,是1 不是2

     

    AdcRegs.ADCSOC0CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

    SOC0CTL,是0不是2

    这几个要统一,如果是Result2, 就是SOC2,上面3个配置都是SOC2

     

  • 不好意思,我拷错了。

    //SOC2
    AdcRegs.ADCSOC2CTL.bit.ACQPS=6;//采样窗口
    AdcRegs.ADCSOC2CTL.bit.CHSEL=2;//采样通道ADCINA2---ADCRESULT2----A相电压N
    AdcRegs.ADCSOC2CTL.bit.TRIGSEL=7;//触发源-PWM2-SOCA

    SOC2的触发源是PWM2,通道配置AD2,

    然后CLA和主CPU的AD值不一样。

  • 怎么又出现CLA了?

    是CLA和主CPU都在采样么?

    如果这样的话,肯定不同啊,两次采样时间不同么,好像论坛还有一个帖子也是这方面的事情。