您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > DSP-F2812-SPI数模转换例程
/**************************************注意开SPI的时钟!!!!2011年10月29日9:44:52DA芯片是TLV5620,数据线和时钟都是用SPI的,LOAD线用GPIOA15来控制!*******************************************/#includeDSP28_Device.hvoidGpio_select(void);voidspi_init(void);voiddac_load(charchannel,intvalue);interruptvoidcpu_timer0_isr(void);voidmain(void){Uint16voltage=0;/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER=0x0000;IFR=0x0000;//清中断/*初始化PIE*/InitPieCtrl();/*初始化PIE中断矢量表*/InitPieVectTable();Gpio_select();spi_init();EALLOW;PieVectTable.TINT0=&cpu_timer0_isr;EDIS;InitCpuTimers();ConfigCpuTimer(&CpuTimer0,120,1000);PieCtrl.PIEIER1.bit.INTx7=1;IER|=M_INT1;EINT;ERTM;CpuTimer0Regs.TCR.bit.TSS=0;for(;;){while(CpuTimer0.InterruptCount3);CpuTimer0.InterruptCount=0;dac_load(0,voltage);if(voltage++255)voltage=0;}}voidGpio_select(void){EALLOW;GpioMuxRegs.GPFMUX.bit.SPICLKA_GPIOF2=1;GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0=1;GpioMuxRegs.GPADIR.bit.GPIOA15=1;GpioDataRegs.GPASET.bit.GPIOA15=1;EDIS;}voidspi_init(void){SpiaRegs.SPICCR.all=0x0000;//spiswreset=0;SpiaRegs.SPICTL.bit.CLK_PHASE=1;//设置clockphase,输出早于输入SpiaRegs.SPICTL.bit.MASTER_SLAVE=1;SpiaRegs.SPICTL.bit.TALK=1;SpiaRegs.SPIBRR=0x001d;//30M/(29+1)=1MHZSpiaRegs.SPICCR.all=0x00ca;//spiswreset=1;clockpolarity=1;}interruptvoidcpu_timer0_isr(void){CpuTimer0.InterruptCount++;PieCtrl.PIEACK.all=PIEACK_GROUP1;}voiddac_load(charchannel,intvalue){SpiaRegs.SPICCR.bit.RESET=1;//准备发送SpiaRegs.SPITXBUF=value5;//因为是11位数据,要保证左对齐需左移5位while(SpiaRegs.SPISTS.bit.INT_FLAG==0);SpiaRegs.SPICCR.bit.RESET=0;//清标志GpioDataRegs.GPACLEAR.bit.GPIOA15=1;asm(rpt#500||nop);GpioDataRegs.GPASET.bit.GPIOA15=1;}
本文标题:DSP-F2812-SPI数模转换例程
链接地址:https://www.777doc.com/doc-5055590 .html