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

📄 special example.c

📁 DSP281X A/D D/A 转换综合运用例子
💻 C
字号:
#include "DSP281x_Device.h"     // DSP281x Headerfile Include File
#include "DSP281x_Examples.h"   // DSP281x Examples Include File

#define SELDAC 1	// Select DAC
#define SELPWM 0	// Select PWM

interrupt void adc_isr(void);
void spi_init(void);
void pwm_init(void);

Uint16 LoopCount;
Uint16 Voice;

main() 
{
   DINT;
   IER = 0x0000;
   IFR = 0x0000;

   InitSysCtrl();
   InitPieCtrl();
   InitPieVectTable();
     
   EALLOW;
   PieVectTable.ADCINT = &adc_isr;
   EDIS;

   InitAdc();

   #if SELDAC
      EALLOW;
      GpioMuxRegs.GPFMUX.all=0x000F;
      EDIS;

      spi_init();
   #endif

   #if SELPWM
      EALLOW;
	  GpioMuxRegs.GPAMUX.bit.T2PWM_GPIOA7 = 1;
	  EDIS;

      pwm_init();
   #endif

   PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
   IER |= M_INT1;
   
   LoopCount = 0;
   
   AdcRegs.ADCTRL1.bit.CPS = 0;
   AdcRegs.ADCTRL3.bit.ADCCLKPS = 3;   
   AdcRegs.ADCMAXCONV.all = 0x0000;
   AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x6;
   AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1;
   AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;

   EvaRegs.T1CMPR = 0x0000;
   EvaRegs.T1PR = 0x0370;
   EvaRegs.GPTCONA.bit.T1TOADC = 1;
   EvaRegs.T1CON.all = 0x1042;

   EINT;
   ERTM;

   while(1)
   {
      LoopCount++;
   }

}

interrupt void  adc_isr(void)
{
  Voice = AdcRegs.ADCRESULT0 >>4;
  
  #if SELDAC
     SpiaRegs.SPITXBUF = (Voice*0.2) + 0x4000;
  #endif

  #if SELPWM
     EvaRegs.T2CMPR = (Voice*0.2);
  #endif
        
  AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
  AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
  PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
  
  return;
}

void spi_init(void)										
{
   SpiaRegs.SPICCR.bit.SPISWRESET=0;  // Reset SCI

   SpiaRegs.SPICCR.all=0x000F;        //16-bit character, Loopback mode 
   SpiaRegs.SPICTL.all=0x0017;        //Interrupt enabled, Master/Slave XMIT enabled
   SpiaRegs.SPISTS.all=0x0000;
   SpiaRegs.SPIBRR=0x0006;            // Baud rate
   SpiaRegs.SPIFFTX.all=0x8028;       // Enable FIFO's, set TX FIFO level to 8
   SpiaRegs.SPIFFRX.all=0x0028;       // Set RX FIFO level to 31
   SpiaRegs.SPIFFCT.all=0x00;
   SpiaRegs.SPIPRI.all=0x0010;
    
   SpiaRegs.SPICCR.bit.SPISWRESET=1;  // Enable SCI

   SpiaRegs.SPIFFTX.bit.TXFIFO=1;
   SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;
}

void pwm_init(void)
{
   EvaRegs.T2PR = 0x9C4;
   EvaRegs.T2CMPR = 0x0000;
   EvaRegs.T2CNT = 0x0000;
   EvaRegs.T2CON.all = 0x1042;   

   EvaRegs.GPTCONA.bit.TCMPOE = 1;
   EvaRegs.GPTCONA.bit.T2PIN = 1;
}




⌨️ 快捷键说明

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