[分享] 【DSP】TMS320F28035 ADC例程(软件触发+查询)

火辣西米秀   2019-10-13 09:05 楼主

#include "DSP28x_Project.h"

Uint16 ConversionCount;
Uint16 Voltage1[10];
Uint16 Voltage2[10];


main()
{
    InitSysCtrl();

    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;
    InitPieVectTable();

    InitAdc();

    ConversionCount = 0;

    EALLOW;
    AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1;    //转换完成前一个ADC时钟周期产生EOC
    AdcRegs.INTSEL1N2.bit.INT1E     = 1;    //使能ADCINT1
    AdcRegs.INTSEL1N2.bit.INT1CONT  = 0;    //关闭连续模式
    AdcRegs.INTSEL1N2.bit.INT1SEL   = 1;    //将ADCINT1映射到EOC1
    AdcRegs.ADCSOC0CTL.bit.CHSEL    = 0;    //将ADCINA0映射到通道0
    AdcRegs.ADCSOC1CTL.bit.CHSEL    = 1;    //将ADCINA1映射到通道1
    AdcRegs.ADCSOC0CTL.bit.TRIGSEL  = 0;    //软件触发SOC0
    AdcRegs.ADCSOC1CTL.bit.TRIGSEL  = 0;    //软件触发SOC1
    AdcRegs.ADCSOC0CTL.bit.ACQPS    = 6;    //设置窗口采样次数
    AdcRegs.ADCSOC1CTL.bit.ACQPS    = 6;    //设置窗口采样次数
    EDIS;

    AdcRegs.ADCSOCFRC1.all = 0x0003;//强制给通道0和1产生SOC信号

   for(;;)
   {
      while(AdcRegs.ADCINTFLG.bit.ADCINT1 == 0){}    //等待EOC1信号(ADCINT1)
      AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;        //清除EOC1信号(ADCINT1)

      AdcRegs.ADCSOCFRC1.all = 0x0003;//强制给通道0和1产生SOC信号

      if(ConversionCount == 9)
      {
          ConversionCount = 0;
      }
      else ConversionCount++;

      Voltage1[ConversionCount] = AdcResult.ADCRESULT0;
      Voltage2[ConversionCount] = AdcResult.ADCRESULT1;
   }
}

 

回复评论 (2)

有时想想,技术这种东西,要是有标题,内容,计划,设计,框图,代码,实验,视频,资料,摘要,说明,补充,那人人都变成大才,就没有竞争感了

点赞  2019-10-13 11:26
引用: led2015 发表于 2019-10-13 11:26 有时想想,技术这种东西,要是有标题,内容,计划,设计,框图,代码,实验,视频,资料,摘要,说明,补充 ...

有同感啊

谢谢回复

点赞  2019-10-13 16:35
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复