DAC80508: Dac channel output is not available / inconsistent.

Part Number: DAC80508

Tool/software:

Hey i am using the DAC80508ZRTER IC and the output that I am getting is inconsistent : It works when I am outputting a constant value, but when I am trying to output a ramp or a sinusoidal wave it either tends to stay at a constant value or random values and on rare ocassions it gives the right signal. The schematic , code ,SPI configuration and signal output is attached with this post. Another doubt that I have is, while writing what is SDO supposed to output? because at the moment I am getting random values.  

for(uint16_t i = 0; i < 65000; i+=1000)
{
    dac8050x_writeDacReg(0, i);
    HAL_Delay(1000);
}

bool dac8050x_writeDacReg(uint8_t channelNo , uint16_t value)
{
    uint8_t tempBufferTransmit[NUM_FOUR] = {INIT_ZERO};
    tempBufferTransmit[NUM_ZERO] = 0x00 | (08 + channelNo);
    tempBufferTransmit[NUM_ONE] = ((uint16_t)value >> 8);
    tempBufferTransmit[NUM_TWO] = ((uint8_t)value);
   return (dac8050x_writeRegister(tempBufferTransmit));
}

  • Hello, 

    Are you using different code when writing a constant value vs a ramp/sinusoid? Because to the DAC as SPI write is a SPI write. If the constant value writes work then the issue could be with how you are implementing the sinusoid. 

    SDO will either echo the last write command or return the requested data if the last command was a read command. What is the part number you actually have populated on the board? I notice you have a CLR test point. The part numbers that include the letter C have a CLR pin instead of an SDO pin. In that case the pin is a clear input rather than an SDO output. 

    Can you also look at the analog view of the SPI write? Would be useful to see what these jumps are:

    What is the logic level of your SPI signals? 

    Have you sent any other configuration settings to the DAC? Or after a power cycle are you just writing to the DAC output register? 

    Best,

    Katlynne Jones