Note: a reader alerted me that the on-board microprocessor goes to sleep after setting up the registers of the DAC. In such case, there should be no additional noise from the on-board microprocessor. However, when the microprocessor is sleeping, only an interrupt can wake it up. If one uses the Arduino as the external microprocessor, some of the code may not be interrupt based, for example polling IR remote signals. So, if the microprocessor is doing more than just setting up the registers at power-on, in general it is not a good idea to put the microprocessor to sleep. Therefore some isolation in the i2c lines would be a welcomed noise avoidance implementation.
Analog Devices magnetic coupling devices has a solution for this task: The ADum1250. Previous observations here indicate that this is the best solution.
The ADuM1250/ADuM12511 are hot swappable digital isolators with nonlatching, bidirectional communication channels compatible with I2C® interfaces. This eliminates the need for splitting I2C signals into separate transmit and receive signals for use with standalone optocouplers.The application note indicates that side 1 (left) should be used for the device (the DAC) and side 2 for the I2C bus (Arduino)
The ADuM1250 provides two bidirectional channels, supporting a complete isolated I2C interface. The ADuM1251 provides one bidirectional channel and one unidirectional channel for those applications where a bidirectional clock is not required.
Both the ADuM1250 and ADuM1251 contain hot swap circuitry to prevent glitching data when an unpowered card is inserted onto an active bus.
The pull up resistors on side 2 (right side) in the diagram are already implemented in Arduino (inside the uP and enabled in software).
The pull-up resistors on side 1 (left side) I believe are already implemented in Buffalo II as R14 and R15? -Need to confirm with the designers.
6 comments:
In order for this to have any positive effect at all, the ground plane and power supply for the processor would be seperate from the ESS Sabre's ground and power. This would require a seperate board. and wires for the I2C bus.
It's probably unnecessary. When you are playing music, the PIC processor is sleeping.
Russ posted the code for his Buffalo 1 a long time ago. When the processor isn't actively doing something such as booting up or configuring the Sabre, the processor goes to sleep.
Sleep mode in a PIC processor is low power and quiet. It's not clocking the I2C bus during normal operation.
RossL,
Thanks for the comment. Yes, one side will be powered by Buffalo and the other side powered by the Arduino board.
Interesting about sleeping. In the Arduino environment (since i only know Arduino), the Atmel processor is always in a loop waiting for "events" to happen like an interrupt change in state in an I/O pin. I'll have to research "sleep mode" in Arduino and see how that works. "main" in Arduino is a loop.
Because the uC does not actually drive anything (except to GND), it is actually very quiet even when communicating. this is because the I2C lines are only weakly pulled up via fairly high resistors. there is not much current moving around. :)
This is not speculation. It has been tested. :)
Are you Russ from TPA? Thanks for the tip. I don't have test gear to measure, but given the fact that there is a 16 MHz clock running in the uP, and the oscillator in Buff is of the lowest phase noise possible, spending a few $ on a chip that has been designed as an I2C isolator was at least a reasonable (engineering) idea :-)
It is indeed the same Russ. :)
I understand your very valid motivation, and for an external controller such as yours it may be prudent.
My key point is simply that I have designed and tested the supplies on the BUF-II for isolation from each other using inductors(ferrites) and caps and careful routing.
I don't think your likely to find controller noise polluting the clock supplies.
Still what you are doing can't hurt a bit.
Cheers!
Russ
Oh, appreciate you taking time to comment in this blog. I'm sure Arduino was not designed for low noise. Low cost and wide availability was the main motivation.
Post a Comment