This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于TIVA C Launchpad 与DAC(TLV5618)SPI通信的问题

Other Parts Discussed in Thread: TLV5616

输出一个电压正常,但是让它先输出一个电压,停1秒,再输出另一个电压就不正常了,不知道问题出在哪,求大神解答。

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "inc/hw_gpio.h"
#include "inc/hw_ssi.h"
#include "grlib/grlib.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/ssi.h"
#include "driverlib/pin_map.h"

#define uchar unsigned char
#define uint unsigned int

void DAC_Write_A(float out_volt);

void main(void)
{

SysCtlClockSet(SYSCTL_SYSDIV_3 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlGPIOAHBEnable(GPIO_PORTF_BASE);//挂在AHB高性能总线上
GPIOPinConfigure(GPIO_PF2_SSI1CLK);
GPIOPinConfigure(GPIO_PF3_SSI1FSS);
GPIOPinConfigure(GPIO_PF1_SSI1TX);
GPIOPinTypeSSI(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_2);
//SSI1_BASE/时钟频率/时钟协议,moto代表SPI协议/工作模式:主机模式/位速率4M/数据帧位数16
SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0 , SSI_MODE_MASTER, 25000000, 16);
SSIEnable(SSI1_BASE);

while(1)
{
DAC_Write_A(1);
//SysCtlDelay(SysCtlClockGet()/3);
//DAC_Write_A(2);
//SysCtlDelay(SysCtlClockGet()/3);
}
}

void DAC_Write_A(float out_volt)
{
//(uint)(out_volt*4095)/(2*3.281) 先将电压值转化为0~4095的整数
//0x0fff& 转化成16位二进制数,后12位为数据位
//0xc000| 前面加上4位为1100(命令位):快速模式,正常功耗,写数据到A通道
SSIDataPut(SSI1_BASE, 0xc000|(0x0fff&((uint)((out_volt*4095)/(2*3.281)))));
while(SSIBusy(SSI1_BASE)) ;//等待发送完毕
}

代码如上,输出1个电压为1V的电压没问题。但是让它先输出1个电压为1V的电压,停1s,再输出一个2V的电压就出问题了,输出电压一直都是1V不变