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.