I2Chandler address to reference device e.g OLED and DAC

Hi, I have two devices connected on the I2Cbus: OLED and DAC and have tested with the I2handler to scan and detect devices on:

0x3c - OLED
0x6c - DAC

I would like to:

a) Write display data to OLED - 0x3c
b) Send waves out to the MPC4728 DAC - 0x60

I have found out the the display handler in libDaisy references 0x3c so this just works, have yet to test.

The 4728 DAC does need to use the I2C handler and am following the 4728 DAC example and would like to apadt this to send out waveforms to 4 audio output channels of the DAC.

Hi,
this will not be possible because of timing. I2C works for example at a bitrate of 400kHz, which is low for audio, and the OLED driver will block the I2C bus until it has sent a entire screen buffer.
So you need independent busses and it will have to be faster than I2C.

The audio DACs use I2S bus and DMA transfer, so they can work fully in parallel to OLED.

1 Like

I was told - You can use the display and the quad DAC, on a single I2C bus, without if the OLED and the quad DAC have different I2C addresses. I’m getting conflicting information.

What do you suggest is the best approach for setting up a OLED and DAC. I want to design a 4 voice digital oscillator and have have 4 separate outs for the waverforms.

No, you’re not getting conflicting info. You can definitely use the OLED and the DAC on the same I2C bus.

But you can’t expect to run audio to the DAC and periodically update the OLED, without the audio suffering.

The quad I2C DAC is much more suited to creating (relatively) slow-changing CV outputs.

Thanks. So my best approach would be to just use I2C bus for audio output and use SPI for OLED setup?

(We just discussed this on Discord)

No, I2C DAC is still not appropriate for audio on Daisy, and especially not 4 channels.

So 4 output channels is the goal?
As far as I understand, there should be a possibility to attach a second Pcm3060 chip over I2S bus, see datasheet of Daisy? That would give 4 channels in total.
It might also be possible to use the 2 onboard Dac pins, if you learn how to write code for timer interrupt or dma…

I have the Patch SM which doesn’t have I2S SIA pins. So yes it is possible but only with Seed.