Audio interference from OLED

The audio outputs on the Daisy Patch pick up a lot of noise from the OLED display. The inputs might be affected to, I’m not quite sure. It’s definitely tied to the activity of the display. The noise changes depending on what is being displayed.

I’ve added the ability to turn off the display in my project to reduce the noise, but I’m not fond of such workarounds. And it doesn’t completely eliminate the noise, it just makes it tolerable.

I’d like to avoid the same thing in my own design. I’m wondering if the switching power supply for the OLED is responsible, but I have no idea what the contributing factors are.

Is this a well understood phenomenon?

Hey miminashi!

I’m sorry to hear that Patch is being noisy.

Could you tell us more about your hardware setup? From power supply to the other modules you have in the case, any little info helps!
I connected a very noisy module to my setup before and it led to my other modules outputting noise and such. It’s tedious, but it may be worth disconnecting the other modules.

Also, which program are you running? Please feel free to post the code!
If it’s noisy just from the simple oscillator example, then that’s worrying (but it could also potentially mean that it’s something other than the OLED causing the noise).

Finally, there has been lot of discussions surrounding OLED in our Daisy Discord, so I recommend joining there (especially as you design your own project with it). The ‘hardware’ channel has been mostly about OLED in the past week :slight_smile: There was even a post over the weekend with one member posting a breadboard photo of their project which included an OLED.

Hopefully this issue gets resolved.

I have the Patch in a fully loaded Intelljel Performance case at the moment. But previously I had the Patch in a different case almost by itself, with only a couple of low power analog modules, and the noise issue was still evident. So I don’t think that the noise is being induced by other modules.

I don’t have a readily sharable example, unfortunately. I tried to replicate the behavior in an init project by adding a display update with some text in the main loop, but the issue was not evident. My project is too large to share here, but I will try to boil it down into something more shareable that reproduces the behavior.

It’s possible that my application is not producing full-scale output, and so I’m having to apply too much external gain which is amplifying the noise.

What is the expected range for samples in the audio callback? I’m generating samples in the range -1.0 to 1.0. Or at least I think I am. :slight_smile: I’ll need to double check. What is the expected peak-to-peak voltage for the audio outputs?

Intellijel power is great!! So that’s one less thing to investigate.

Definitely, I highly recommend scaling down or starting a new code with the bare minimum for testing.

AFAIK, I think it’s 1.0. I remember going beyond that with a sine-tone and it was clipping.

I just did a little test, and found that the peak-to-peak voltage at the outputs is a whopping 20 volts. Those are some pretty hot outputs. The peak voltage is achieved with a sample value of about 2.0 – which is kinda strange, but at least it’s easy to calculate the output voltage for a given sample level. :slight_smile:

I also found that outputs 1 & 2 (from the on-board WM8743 codec) are about 16% hotter than outputs 3 & 4 (from the AK4556). Based on the schematics it looks like the gain stage after the codec outputs are the same, so I guess that must be about the difference in Vpp between the two codecs.

One last observation: outputs 1 & 2 are inverted, and outputs 3 & 4 are not inverted. Since the analog stages after the codec are more or less the same, it must be a configuration issue?

So I’ve recently assembled my Patch-based prototype, and it too exhibits audio interference from the OLED at about the same amplitude as the Patch. This suggests that the noise is inherent to the circuit design, and not some layout quirk.

I probed around a bit on the board with my old oscilloscope, and the noise is present on the 3.3V OLED supply and the filtered +12V rail. It’s the noise on the +12V that’s audible on the outputs.

I piggybacked a 2-pin header on the Vcc and GND pins for the OLED, and found that adding a large electrolytic cap (470uF) greatly reduces the noise.

Adding such a large cap is not very practical. I think for my next revision I will fit as large a filtering cap as possible on the OLED Vcc input, and add a bunch of caps on the +12V rail closer to my analog section.

I do still wonder why the OLED supply is dumping so much noise onto the +12V rail. Perhaps it’s time to rethink the whole 3.3V supply circuit.

1 Like

This doesn’t seem to be a case of EMI. The noise can be almost completely eliminated with a simple RC filter on the 12V line feeding the 3.3V converter. There’s a good thread about it on MW: 3.3V supply for OLED - MOD WIGGLER

I may stick with the switching regulator from the Daisy Patch, with the additional filtering I have been experimenting with. Or I might switch to an isolated 3.3V converter similar to the one used for the 5V supply. I’m still trying to decide.

In my quest for noise-reduction, I found these - perhaps you can use it ?

changing SSD 1327 initialization settings reduced audible noise.

noise is reduced using a 470uF capacitor on the power line for the OLED.

1 Like

Excellent, thanks for the links. Interesting to see pretty much the exact issue I’m having, with some of the same mitigation strategies. :slight_smile:

I’ve been eyeballing the initialization code, but I wasn’t sure what to attempt. It looks like the current values are straight from the OLED datasheet, for the most part. One thing I did was turn the contrast down a bit, since I found the original setting to be a bit bright. That does reduce the noise a bit.

Based on the eevblog post it looks like there is a lot to gain from tweaking the refresh and voltage settings, so I’ll try that out.