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.
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;
}
SSquared,
Sequentially writing even or odd values to the DAC should make no difference on the behavior of the output. Try to get a closer shot of whats happening across the time domain, maybe one period or a half period of the sawtooth waveform so we can actually see what's happening. It looks like theres some aliasing happening with your scope on the first shot.
Posted on Michael's Behalf:
I am not sure what aliasing would have to be doing with it. I would expect it to be aliasing if I wasn’t able to see while setting a break point and not actually running the microcontroller in real-time. It seems like a very strange behavior that is going on. Which I am unsure why the DAC would be behaving in this way. The value to the DAC should be able to be increment by 1 and going through the 65535 combinations of the possible values.
I zoomed in on the oscilloscope to basically see when the outputs are being changed. For some reason the voltage is going to the upper most rail of the output op amps. Sorry the quality of the picture. I wasn’t able to remove the glare.
Thanks!
Can I see a schematic as well? If it's a modified EVM please detail the specific modifications to the EVM.
The EVM is connected to the Delfino F28335 on Pins16, 18, 19 (MOSI, CLK, CS respectively). The modification is as follows from the following forum tread:
http://e2e.ti.com/support/data_converters/precision_data_converters/f/73/t/122879.aspx
Instead of the 5kOhm resistor like it specifies here to the a +-10V swing. It as changed to a 2.5kOhm resistor. This was noted because sending the code 0 through 0xFFFE to the DAC8811 and checking the Vout labeled on the schematic that the voltage swung from 0 to 5 Volts. When a 0xFFFF is sent then there is a 10 volt output at Vout.
I can also probe Vout to see the same type of behavior. From what I have seen it isn't the amplification circuit.
SSquared,
How about an oscilloscope capture of the SPI bus transaction so I can see phase/polarity and look for any other issues on these lines. If you can also catch the update event on Iout or the output of the amplifier as well that would be excellent.
Here is the CS, Data line, and Clock:
Here is the Vout line and the Main output with an odd increment:
Here is 0x0101 being sent to the DAC:
When 0x0100 being sent to the DAC:
The capture of 0x0100 should be the way it should react. As it can be seen giving a 0x0101 the DAC output goes to -5V. Which is the rail of the voltage. All odd values have been doing this. If I send 0x1001 it does the same thing. Etc Etc.
Any thoughts about it? I am stuff dumbfounded that the signal would jump to the value of 0xFFFF when any odd value is sent to it.
SSquared,
I have not been able to replicate such behavior here. Your digital signals look clean but if I were to be playing with anything on your setup to fix the problem it would most likely be on the digital side. I'll try to get some more time to look at this soon.