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.

DAC8811 Jumping signal

Other Parts Discussed in Thread: DAC8811

I have a DAC8811 that has been modified for +-10V operation and it is connected to a F28335. I have been testing to see what is going on with my output voltage with respect to the data signal being sent to it. I have noticed that the code 0xFFFF will pass through the Vref (10V) to the first amplifier on the board. If 0xFFFE the amplifier will output 5 volts. Which seems like odd behavior that I haven't seen documented.

When I increment the value being sent to the DAC by odd values it starts sending the voltage to rails while also producing the saw tooth waveform. If it is increment by a even value it behaves as expected. If I increment the value 10 or greater it does not have this behavior. It really can be seen when I single step through the code. Send one code and see what voltage it goes to and continue that.

These scope traces have the output updated at about a 5kHz rate and the SPI clock is at 40MHz. Here is a picture of the output with a odd increment:

With an even increment and what is expected:

Below is the SPI code being used to setup the transfer. I have tried various SPI clocks to see if that might be one of the issues, but it does not change what is going on.

void spi_init()
{
    SpiaRegs.SPICCR.all =0x000F;                 // Reset on, rising edge, 16-bit char bits
    SpiaRegs.SPICTL.all =0x0006;                 // Enable master mode, normal phase,
                                                 // enable talk, and SPI int disabled.
    SpiaRegs.SPIBRR =0x0008;
    //SpiaRegs.SPIBRR =0x00A7;
    SpiaRegs.SPICCR.all =0x009F;                 // Relinquish SPI from Reset
    SpiaRegs.SPIPRI.bit.FREE = 1;                // Set so breakpoints don't disturb xmission
}

void spi_xmit(Uint16 a)
{

    SpiaRegs.SPITXBUF=a;
}

void spi_fifo_init()
{
// Initialize SPI FIFO registers
    SpiaRegs.SPIFFTX.all=0xE040;
    SpiaRegs.SPIFFRX.all=0x204f;
    SpiaRegs.SPIFFCT.all=0x0;
}