利用TMS320f28335c2000和DAC7724芯片设计定时DA输出(输出锯齿波和cos),列出关键代码和引脚初始化代码
时间: 2024-02-03 09:13:52 浏览: 23
以下是基于TMS320f28335c2000和DAC7724芯片设计定时DA输出的关键代码和引脚初始化代码:
关键代码:
```c
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#define DLEN 2 //数据长度
Uint16 dac_data[DLEN] = {0}; //输出数据缓存
void main(void)
{
InitSysCtrl();
InitSPIA();
InitSPIB();
InitDAC();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
while(1)
{
//生成cos波
for(int i = 0;i < DLEN;i++)
{
dac_data[i] = (Uint16)(2048.0 + 2047.0*cos(2*3.14*i/DLEN));
}
//输出数据
SendData_SPIB(dac_data,DLEN);
//延时
DELAY_US(10);
}
}
void InitSPIB(void)
{
SpibRegs.SPICCR.bit.SPISWRESET = 0; // Reset SPI
SpibRegs.SPICCR.all = 0x000F; // 16-bit character, Loopback mode
SpibRegs.SPICTL.all = 0x0006; // Enable master mode, CLK low on idle,
// Enable talk, and SPI interrupt disabled.
SpibRegs.SPIBRR = 0x007F; // Baud rate
SpibRegs.SPICCR.bit.SPISWRESET = 1; // Enable SPI
}
void InitDAC()
{
//设置DAC7724的引脚
GpioDataRegs.GPAMUX2.bit.GPIO20 = 1; //设置GPIO20为SPIB_CLK
GpioDataRegs.GPAMUX2.bit.GPIO19 = 1; //设置GPIO19为SPIB_SIMO
//初始化DAC7724
//参考手册P.338
Uint16 dac_write[3] = {0};
dac_write[0] = 0x0FFC; //写入控制字0
dac_write[1] = 0x0000; //写入控制字1
dac_write[2] = 0x0000; //写入控制字2
SendData_SPIB(dac_write,3); //发送控制字
}
void SendData_SPIB(Uint16 *data,Uint16 len)
{
for(int i = 0;i < len;i++)
{
while(SpibRegs.SPISTS.bit.INT_FLAG == 0); //等待数据发送完成
SpibRegs.SPITXBUF = data[i]; //发送数据
}
}
```
引脚初始化代码:
```c
void InitGpio(void)
{
EALLOW;
//DAC7724引脚初始化
GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; //使能GPIO20上拉
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; //使能GPIO19上拉
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 3; //设置GPIO20为SPIB_CLK
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 3; //设置GPIO19为SPIB_SIMO
EDIS;
}
```