[sdiy] analogDNA

Daniel Kruszyna dan at krue.net
Sun Jun 18 03:21:46 CEST 2006


Rob <rob at emulatorarchive.com> wrote:
> I2C is a serious contender, but I'm using SPI on the module PCB's - so maybe
> I could mix them? CAN is certainly more complex but its becoming popular.

i2c is intended for communication between chips on the same board. Not that
you can't use it to connect modules, but it lacks differential signaling
for noise immunity and may have a bus length limitation. (anyone know?
CAN's is 40m at 1Mbps)

The CAN protocol is certainly more complex, but CAN controllers implement
a lot more in hardware than any of the i2c controllers I've seen. Most CAN
controllers have the concept of mailboxes; to send a message, your program
initializes a mailbox with an indentifier and data (if any) and the controller
does the rest, notifying your program with a status bit or interrupt when the
transmission is complete. Most i2c controllers (including the avrmegas - not
sure on the pics) require program interaction at each step of a transfer:
send address, check arbitration, send data, check ack, etc...
Writing code to handle CAN messages may be less complex than for i2c,
especially if the i2c code must handle things like multiple masters and
master/slave modes on the same node.

Another difference between the two protocols is in the addressing.
In i2c, each node is distinguished with a unique (7bit) address. In CAN,
the MESSAGES are distinguished with an 11 or 29bit indentifier. You can't
address a particular node with CAN, although the higher level protocol
usually supports it. Instead, you send out a message to everyone on the
network, and all nodes with mailboxes configured to accept it will receive
it simultaneously. With i2c, you would have to send a separate message
to each destination (and keep track of them). I like this abstraction
because it emphasizes the signals instead of their source and destination(s).
Sort of like 1/4" plugs vs bananas :)

> The analogDNA design doesn't transport analog signals, as shipping 24-bit
> data realtime for 100 modules is a bit tricky and possibly expensive to
> develop as Synth DIY.

I was considering a module that uses one of those analog crosspoint
switches to get some control over patching audio signals -- controlled
via CAN, of course. It may be a good compromise.

> I'll put some design and progress notes at www.emulatorarchive.com

I'll check it out.

-- Daniel



More information about the Synth-diy mailing list