资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
/* *注意开SPI的时钟!2011年10月29日9:44:52DA芯片是TLV5620,数据线和时钟都是用SPI的,LOAD线用GPIOA15来控制!*/#include DSP28_Device.hvoid Gpio_select(void);void spi_init(void);void dac_load(char channel,int value);interrupt void cpu_timer0_isr(void);void main(void)Uint16 voltage = 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.InterruptCount 255)voltage = 0; void Gpio_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;void spi_init(void)SpiaRegs.SPICCR.all = 0x0000;/spi sw reset = 0;SpiaRegs.SPICTL.bit.CLK_PHASE = 1;/设置clock phase,输出早于输入SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;SpiaRegs.SPICTL.bit.TALK = 1;SpiaRegs.SPIBRR = 0x001d;/30M / (29 + 1) = 1MHZSpiaRegs.SPICCR.all = 0x00ca;/ spi sw reset = 1;clock polarity = 1;interrupt void cpu_timer0_isr(void)CpuTimer0.InterruptCount +;PieCtrl.PIEACK.all = PIEACK_GROUP1;void dac_load(char channel,int value)SpiaRegs.SPICCR.bit.RESET = 1;/准备发送SpiaRegs.SPITXBUF = value 5;/因为是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;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号