0
\$\begingroup\$

I am working on a project where I may need to trigger two different DAC components at the same time if the timing for two simultaneous experiments line up. Originally, I was planning to use two separate SPI controllers (separate buses) for each DAC. But as both DAC's respond to the exact same command (bit for bit) to update their internal registers, is it possible to set both CS pins to low (the devices are active-low) and send the DAC command to update the DAC's simultaneously or will there be an issue?

\$\endgroup\$
1
  • \$\begingroup\$ As long as neither one drives MISO during that kind of cycle, it should be fine. \$\endgroup\$
    – Dave Tweed
    Commented Apr 28 at 21:07

1 Answer 1

0
\$\begingroup\$

Knowing what DAC you're using would potentially help us answer this more accurately... though there are some things to keep in mind for this sort of approach:

Synchronisation

Events don't often line up exactly... in fact, depending on your trigger mechanism, they may virtually never line up. In this case, even if you implement this scheme, you may (will) still end up with the two DACs being triggered one after the other sequentially.

For example:

  1. Trigger-A arrives
  2. SPI communication to start DAC-A begins
  3. Trigger-B arrives
  4. SPI communication to start DAC-A completes
  5. SPI communication to start DAC-B begins
  6. SPI communication to start DAC-B completes

timeline showing the order of events descrived above

Multiple Drivers

SPI is a full-duplex interface, where the controller will drive the COPI line push-pull, and the peripheral will drive the CIPO line push-pull. This means that if you select two peripherals, you may well end up in a situation where they are "fighting" over the desired state of the CIPO signal (one driving high, one driving low). This can cause issues ranging from "mysteriously" corrupt data, all the way through unexpectedly high current consumption, to damaged devices.

You might be able to alleviate this concern with inline resistors or a Tri-State buffer.

\$\endgroup\$
2
  • \$\begingroup\$ Hi, sorry for the lack of information. To clarify, the DACs are DAC80501 and DAC80502. Neither of them output anything on CIPO (there isn't a CIPO connection). Would this be okay as only the controller drives the remaining lines (COPI and SCLK)? Also my bad on the synchronous events. I didn't specify, but I would have precalculated the intervals between commands and would like to send a single command to both instead of two commands (one for each) if their timesteps align. Thank you for the answer \$\endgroup\$
    – YashaSange
    Commented Apr 28 at 23:02
  • \$\begingroup\$ In that case, it sounds like it'll be fine! :) \$\endgroup\$
    – Attie
    Commented Apr 28 at 23:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.