<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        TMS320F2812外設例程系列之Adc

        作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月16日   【字體:

        //#####################################################################

        //文件:  Example_281xAdcSeqModeTest.c
        //功能:  對通道A0的輸入信號進行AD轉換
        //#####################################################################
        #include "DSP281x_Device.h"       //DSP2812 頭文件
        #include "DSP281x_Examples.h"   
        //AD 定義
        #define ADC_MODCLK 0x3   //HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25MHz
        #define ADC_CKPS 0x1 //ADC 模塊時鐘 = HSPCLK/2*ADC_CKPS = 25MHz/(1*2) = 12.5MHz
        #define ADC_SHCLK 0xf   //ADC模塊的采樣/保持周期 = 16 ADC clocks
        #define AVG        1000 //平均采樣界限
        #define BUF_SIZE  2048 //采樣緩沖器長度
        //全局變量
        Uint16 SampleTable[BUF_SIZE];
        //主程序
        main() 
        {
            Uint16 i;
          //步驟1.初始化系統控制:PLL、看門狗、使能外設時鐘
            InitSysCtrl();
          //本例的時鐘配置      
            EALLOW;
            SysCtrlRegs.HISPCP.all = ADC_MODCLK; //HSPCLK = SYSCLKOUT/ADC_MODCLK
            EDIS;
          //步驟2.初始化GPIO
          //InitGpio();       //本例中略過  
          //步驟3.清除所有中斷并初始化PIE控制寄存器,關CPU中斷
            DINT;               //關全局中斷
            InitPieCtrl();
            IER = 0x0000;       //關所有CPU級中斷
            IFR = 0x0000;       //清除CPU所有中斷標志
          //初始化中斷向量表
            InitPieVectTable();
          //步驟4.初始化所有外設,本例中只初始化ADC
          //InitPeripherals(); //本例中不需要
            InitAdc();           //初始化AD
          //本例中 ADC的設置
            AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
            AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;     
            AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;       //配置為級聯模式
            AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
            AdcRegs.ADCTRL1.bit.CONT_RUN = 1;         //配置為連續轉換模式
          //步驟5.使能CPU中斷
          //初始化 SampleTable 為0
            for (i=0; i<BUF_SIZE; i++)
            {
              SampleTable[i] = 0;
            }
            //啟動序列器1
            AdcRegs.ADCTRL2.all = 0x2000;
            //獲取 ADC 轉換數據并裝載到SampleTable數組  
            while(1)
            {  
              for (i=0; i<AVG; i++)
            {
                while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}     //等待中斷
                //Software wait = (HISPCP*2) * (ADCCLKPS*2) * (CPS+1) cycles
                //           =(3*2)*(1*2)*(0+1)=12cycles
                asm(" RPT #11 || NOP");
                AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
                SampleTable[i] =((AdcRegs.ADCRESULT0>>4) ); 
              }
            }
        }
         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮