利用TMS320f28335c2000和DAC7724芯片设计DA输出(输出锯齿波和cos),列出关键代码和引脚初始化代码
时间: 2024-02-03 22:13:49 浏览: 27
以下是使用TMS320f28335c2000和DAC7724芯片设计DA输出的关键代码和引脚初始化代码:
1. 关键代码:
```c
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#define DAC_CS 0x0001
void InitSPI(void);
void DAC_write(unsigned int data);
void main(void)
{
InitSysCtrl();
InitSPI();
while(1)
{
DAC_write(0x7FFF); // 输出cos波形
DELAY_US(10);
DAC_write(0x8000); // 输出锯齿波形
DELAY_US(10);
}
}
void InitSPI(void)
{
// 初始化SPI引脚
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO22 = 1;
GpioDataRegs.GPASET.bit.GPIO22 = 1;
GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO23 = 1;
EDIS;
// 初始化SPI
SpiaRegs.SPICCR.bit.SPISWRESET = 0;
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0; // 时钟极性
SpiaRegs.SPICCR.bit.SPICHAR = 15; // 数据位宽度
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;
SpiaRegs.SPICTL.bit.TALK = 1;
SpiaRegs.SPICTL.bit.CLK_PHASE = 0; // 时钟相位
SpiaRegs.SPIBRR.bit.SPI_BIT_RATE = 15; // 时钟频率为 3.125MHz
SpiaRegs.SPICCR.bit.SPISWRESET = 1;
// 初始化DAC
DAC_write(0x8000);
}
void DAC_write(unsigned int data)
{
GpioDataRegs.GPACLEAR.bit.GPIO22 = 1; // 片选 DAC
SpiaRegs.SPITXBUF = (DAC_CS << 12) | data; // 发送数据
while(SpiaRegs.SPISTS.bit.INT_FLAG == 0); // 等待传输完成
SpiaRegs.SPISTS.bit.INT_FLAG = 1; // 清除标志位
GpioDataRegs.GPASET.bit.GPIO22 = 1; // 取消片选信号
}
```
2. 引脚初始化代码:
```c
void InitGpio(void)
{
EALLOW;
// DAC CS 引脚初始化
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioDataRegs.GPASET.bit.GPIO0 = 1;
// SPI 引脚初始化
GpioCtrlRegs.GPAMUX1.bit.GPIO16 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO17 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO18 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO19 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO16 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO17 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO18 = 1;
GpioCtrlRegs.GPADIR.bit.GPIO19 = 1;
EDIS;
}
```