Hi,
I have a Tiva C Series Connected Launchpad TM4C1294XL and I have the AD5754 D/A converter connected to it.
I am able to send data to it over SSI2. But now I want to send a whole block of data (say 512 16 Bit samples to it). The problem is that the AD5754 needs the following cycle for each sample:
- Set SYNC to low.
- Send channel number over SPI (8 Bit)
- Send channel value over SPI (16 Bit)
- Set SYNC to high.
- Send other channel?
- Trigger LDAC to update the analogous outputs.
Before you trigger LDAC you may first send all four channel values to the device and then trigger their outputs at the same time.
Theoretically (according to the datasheet) I am able to update all four channels 268961 times a second. But if I do this the CPU has no time to do other stuff like networking or reading/writing from/to an SD card. So I thought I could use µDMA for that purpose. But how can I teach my µC to send this data block in smaller 24 Bits blocks and set SYNC high and then low between these blocks?
I could use two µDMA channels. One of them sends the 24 Bit data blocks with an 8 Bit "gap" (null byte) between them. The other µDMA channel sets SYNC to high while the first one sends the 8 Bit gap. With a third µDMA channel I also would be able to trigger LDAC after 4 values were sent to the AD5754.
Do you have any ideas?