I want to run multiple AD5791 DACs in a daisy-chain controlled by a BeagleBone mini Linux computer. I use the Adafruit_BBIO Library for reading / writing through SPI an controlling a single DAC works flawless.
However when I put two devices in a row, I observe a strangely inconsistent behaviour: Reading out the Control Register or the DAC Register works just as expected: I write zeroes to all other DACs and get the correct result from the AD5791 I addressed. Also write signals to the Control Register work fine.
However writing the DAC Register does not work properly: It seems as if every device would process the signal right away, although Sync still is low. To give few examples:
Writing the DAC Register followed by setting LDAC (via Software Control Register) in the same Sync-Cycle ( ! ) will result in all devices (as soon as both signals pass by) being set to this voltage. (This kind of makes daisy-chaining really useless...)
I can make the same observations when sending e.g. the clear signal: The DAC Register on all devices gets cleared, even though the Sync-Cycle is not ending.
I thought there might be an error with the SPI writes from my BeagleBone (e.g. the Sync Signal is not set correctly). But then reading and writing the Control Register or reading the DAC Register should not work either? And the Signal did seem fine on a scope.
I'm afraid it's somewhat difficult to guess possible issues from this description, but I would appreciate any help as I have no idea what's going on.
PS: CLR, LDAC and RESET Pins are hardwired high.
Unfortunately, the AD5791 cannot be daisy-chained as per Revision D of the datasheet.
As you say, the behaviour seen from the devices on the chain cannot be guaranteed.