Hi,
My board has two DACs with the SPI connected in a daisy chain. We are unable to program the 2nd DAC in the chain. There are 3 relevant pieces of information:
- a) The DACs power up in 3-wire SPI mode (i.e daisy chain is disabled, i.e. SDO pin disabled) which means that they only latch the first 24 SDI bits after SYNC goes low.
- b) My goal is to configure both DACs into 4-wire SPI mode (i.e. daisy chain enabled) by enabling the SDO pin on each DAC. The command to enable SDO is 3 bytes: [0x26,0x00,0x01].
- c) Texas Instruments acknowledges in AN-2001 that after SS goes low, the first bit transmitted out of the DAC's SDO is always 1, and we have confirmed this behavior on DAC53204.
So we try to program the DACs in 4-wire SPI mode and quickly run into an issue programming the second DAC, as described below:
- We issue an SPI write [0x26,0x00,0x01] to the first DAC. This successfully enables the SDO pin on the first DAC. So far so good.
- We then issue a no-op SPI write [0x00,0x00,0x00] to the first DAC. This should cause the first DAC to echo its previous command [0x26,0x00,0x01] onto SDO towards the second DAC. However, since the first bit on SDO is replaced with a 1, the first DAC actually echos the command [0xA6,0x00,0x01] to the second DAC and the second DAC fails to enable its SDO pin because it received the wrong command.
You might suggest that we send the command twice in a single transfer, i.e. transfer 6 bytes instead of 3, so that the last 24 bits seen by the 2nd DAC are correct, but the 2nd DAC will only latch the first 24 bits because it powered up in 3-wire SPI mode.
How can we ensure that the first 24 bits seen by the 2nd DAC are [0x26, 0x00, 0x01] if the 1st DAC always outputs a 1 on the first SDO bit? (which converts the 0x26 into 0xA6)