Hello,
i have a project which uses the PCM5100A as I2S Audio Codec.
I currently use the bluetooth audio sink example from the esp-idf which was made for the PCM51002A.
Audio is playing fine until i increase the volume to above 80%.
If i go higher i can hear some serious distortion.
What could be the reason for that?
I am not sure if this is a hardware or software related issue.
To check that, i just ordered a PCM51002A to see if the error also occurs. (waiting for delivery)
The reason to choose the PCM5100A over the PCM51002A is to reduce BOM cost.
Here is the current schematic:
Crossed out parts (R502, R504, R506) are not mounted.
So CODEC_FLT, CODEC_DEMP and CODEC_FMT are pulled low by 10k resistors.
Thank you very much!
Kind Regards
Danie
PCM5100A DAC distortion on high(er) volume
Re: PCM5100A DAC distortion on high(er) volume
After a bit of research i was able to fix the problem.
Maybe someone is facing a similar issue.
The clue was to set the communication_format to I2S_COMM_FORMAT_I2S in the i2s config struct:
With this settings - audio works as expected without any distortion.
But now i am facing another issue:
In my application i need to read serial input and depending on the serial commands read and write to I2C devices, send back data to uart and so on...
Unfortunately while processing the serial and I2C stuff the audio is sometimes interrupted.
I am running the I2S on core 0 and the other code is running in a separate task on core 1!
Is there any workaround or a better way to separate the work so that the I2S stream is not affected?
Kind regards
Danie
Maybe someone is facing a similar issue.
The clue was to set the communication_format to I2S_COMM_FORMAT_I2S in the i2s config struct:
i2s_config_t i2s_config = {
.mode = I2S_MODE_MASTER | I2S_MODE_TX, // Only TX
.sample_rate = 44100,
.bits_per_sample = 32,
.channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT, // 2-channels
.communication_format = I2S_COMM_FORMAT_I2S | I2S_COMM_FORMAT_I2S_MSB,
.dma_buf_count = 6,
.dma_buf_len = 60,
.intr_alloc_flags = 0, // Default interrupt priority
.tx_desc_auto_clear = true, // Auto clear tx descriptor on underflow
.use_apll = 1
};
i2s_driver_install(0, &i2s_config, 0, NULL);
With this settings - audio works as expected without any distortion.
But now i am facing another issue:
In my application i need to read serial input and depending on the serial commands read and write to I2C devices, send back data to uart and so on...
Unfortunately while processing the serial and I2C stuff the audio is sometimes interrupted.
I am running the I2S on core 0 and the other code is running in a separate task on core 1!
Is there any workaround or a better way to separate the work so that the I2S stream is not affected?
Kind regards
Danie
- jgustavoam
- Posts: 165
- Joined: Thu Feb 01, 2018 2:43 pm
- Location: Belo Horizonte , Brazil
- Contact:
Re: PCM5100A DAC distortion on high(er) volume
Hi, interesting project!
May you post the code?
Thanks.
May you post the code?
Thanks.
Retired IBM Brasil
Electronic hobbyist since 1976.
Electronic hobbyist since 1976.
Who is online
Users browsing this forum: Google [Bot] and 139 guests