⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad 测试 a0.txt

📁 f2812内部AD测试程序
💻 TXT
字号:
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File
#include "DSP281x_Examples.h"   // DSP281x Examples Include File

// ADC start parameters
#define ADC_MODCLK 0x3   // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3)         = 25MHz
#define ADC_CKPS   0x1   // ADC module clock = HSPCLK/2*ADC_CKPS   = 25MHz/(1*2) = 12.5MHz
#define ADC_SHCLK  0xf   // S/H width in ADC module periods                      = 16 ADC clocks
#define AVG        1000  // Average sample limit
#define ZOFFSET    0x00  // Average Zero offset
#define BUF_SIZE   2048  // Sample buffer size
void IO_function(void);
void Scib_init(void);
void Scib_xmit(int a);
// Global variable for this example
Uint16 SampleTable[BUF_SIZE];

main() 
{
   Uint16 i;
   
   InitSysCtrl();
            
   EALLOW;
   SysCtrlRegs.HISPCP.all = ADC_MODCLK;	// HSPCLK = SYSCLKOUT/ADC_MODCLK
   EDIS;

   IO_function();

   DINT;

   InitPieCtrl();

   IER = 0x0000;
   IFR = 0x0000;

   InitPieVectTable();
   
   Scib_init();
   InitAdc();  // For this example, init the ADC

// Specific ADC setup for this example:
   AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;
   AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;     
   AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;        // 1  Cascaded mode
   AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;
   AdcRegs.ADCTRL1.bit.CONT_RUN = 1;       // Setup continuous run


// Step 5. User specific code, enable interrupts:


// Clear SampleTable
   for (i=0; i<BUF_SIZE; i++)
   {
     SampleTable[i] = 0;
   }

   // Start SEQ1
   AdcRegs.ADCTRL2.all = 0x2000;

   // Take ADC data and log the in SampleTable array  
   while(1)
   {  
     for (i=0; i<AVG; i++)
     {
        while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} // Wait for interrupt
        // Software wait = (HISPCP*2) * (ADCCLKPS*2) * (CPS+1) cycles
        //               = (3*2)      * (1*2)        * (0+1)   = 12 cycles
        asm(" RPT #11 || NOP");
        AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
        SampleTable[i] =((AdcRegs.ADCRESULT0>>4) );
        Scib_xmit(SampleTable[i]>>8);
	    Scib_xmit(SampleTable[i]&0xff);
     }
   }
}

void IO_function(void)
{
 EALLOW;
 GpioMuxRegs.GPGMUX.all|=0x0030;      //SCIB口功能口
 EDIS;
}

void Scib_xmit(int a)
{
  ScibRegs.SCITXBUF=(a&0xff);             //发送数据缓冲寄存器
  while(ScibRegs.SCICTL2.bit.TXRDY!=1){}; //发送缓冲寄存器准备好标志位
}

void Scib_init(void)
{
	ScibRegs.SCIFFTX.all =0xE040;         //允许接收,使能FIFO,没有FIFO中断
                                         //清除TXFIFINT,
    ScibRegs.SCIFFRX.all =0x2021;         //使能FIFO接收,清除RXFFINT,16级FIFO
    ScibRegs.SCIFFCT.all =0x0000;         //禁止波特率校验
    ScibRegs.SCICCR.all  =0x0007;         //1个停止位,无校验,禁止自测试,
    									 //空闲地址模式,字长8位    									 																																										
   	ScibRegs.SCICTL1.all =0x0003;        //复位
	ScibRegs.SCICTL2.all =0x0003;  
    ScibRegs.SCIHBAUD    =0x0001;        //设定波特率9600bps
    ScibRegs.SCILBAUD    =0x00E7;        //设定波特率9600bps
	ScibRegs.SCICTL1.all =0x0023;        //退出RESET
}   
//===========================================================================
// No more.
//===========================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -