problem to play Audio with Rate 22050Hz & 44100Hz on STM32MP257F board
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-10-22 2:59 AM - last edited on ‎2024-10-22 3:04 AM by Andrew Neil
Hi ST Team,
We have developed a board based on the STM32MP257F. Currently, I am focusing on the audio section. We use an I2S port to connect to a codec called ES8388 chip. You can find the schematic in the attached picture,
the connection between ES8388 and STM32MP25 like the following path,
I2S2_MCK --- PI15
I2S2_CK --- PB0
I2S2_SDO -- PK1
I2S2_WS --- PI14
I2S2_SDI --- PB6
I modified the dts, like the following code show,
/ {
es8388: es8388@11 {
compatible = "everest,es8388";
reg = <0x11>;
#sound-dai-cells = <0>;
clocks = <&i2s2>; /* The codec is a consumer of I2S2 master clock */
clock-names = "MCLK"; /* Feed MCLK codec clock with I2S2 master clock provider */
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
es8388_in: endpoint {
remote-endpoint = <&i2s2_endpoint>;
};
};
};
};
};
&i2s2_pins_a {
pins1 {
pinmux = <STM32_PINMUX('K', 1, AF2)>, /* I2S2_SDO */
<STM32_PINMUX('B', 6, AF2)>, /* I2S2_SDI */
<STM32_PINMUX('I', 14, AF2)>, /* I2S2_WS */
<STM32_PINMUX('B', 0, AF2)>, /* I2S2_CK */
<STM32_PINMUX('I', 15, AF2)>; /* I2S2_MCK */
slew-rate = <1>;
drive-push-pull;
bias-disable;
};
};
&i2s2_sleep_pins_a {
pins {
pinmux = <STM32_PINMUX('K', 1, ANALOG)>, /* I2S2_SDO */
<STM32_PINMUX('B', 6, ANALOG)>, /* I2S2_SDI */
<STM32_PINMUX('I', 14, ANALOG)>, /* I2S2_WS */
<STM32_PINMUX('B', 0, ANALOG)>, /* I2S2_CK */
<STM32_PINMUX('I', 15, ANALOG)>; /* I2S2_MCK */
};
};
&i2s2 {
#clock-cells = <0>; /* Set I2S2 as master clock provider */
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2s2_pins_a>;
pinctrl-1 = <&i2s2_sleep_pins_a>;
status = "okay";
i2s2_port: port {
i2s2_endpoint: endpoint {
remote-endpoint = <&es8388_in>;
format = "i2s";
mclk-fs = <256>; /* Set mclk/fs radio. (256 or 512)*/
};
};
};
&i2c2 {
es8388: es8388@11 {
compatible = "everest,es8388";
reg = <0x11>;
#sound-dai-cells = <0>;
clocks = <&i2s2>; /* The codec is a consumer of I2S2 master clock */
clock-names = "MCLK"; /* Feed MCLK codec clock with I2S2 master clock provider */
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
es8388_in: endpoint {
remote-endpoint = <&i2s2_endpoint>;
};
};
};
};
};
I rebuilt the kernel and download it to board, I can recognized the audio card by using "aplay -l" command and also can play audio with rate 16000Hz,
root@stm32mp2:~# aplay test1.wav
Playing WAVE 'test1.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
but when I play one audio with rate 22050Hz, the error occured,
root@stm32mp2:~# aplay test2.wav
Playing WAVE 'test2.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
[ 198.334255] st,stm32-i2s 400b0000.audio-controller: Failed to find an accurate rate
[ 198.336312] st,stm32-i2s 400b0000.audio-controller: ASoC: error at snd_soc_dai_set_sysclk on 400b0000.audio-controller: -22
[ 198.347840] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at snd_soc_link_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
[ 198.361021] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at __soc_pcm_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
[ 203.384524] st,stm32-i2s 400b0000.audio-controller: Failed to find an accurate rate
[ 203.386627] st,stm32-i2s 400b0000.audio-controller: ASoC: error at snd_soc_dai_set_sysclk on 400b0000.audio-controller: -22
[ 203.398530] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at snd_soc_link_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
[ 203.411318] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at __soc_pcm_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
and rate 44100hz also has error,
root@stm32mp2:~# aplay test3.wav
Playing WAVE 'test3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
[ 132.343536] st,stm32-i2s 400b0000.audio-controller: Failed to find an accurate rate
[ 132.345630] st,stm32-i2s 400b0000.audio-controller: ASoC: error at snd_soc_dai_set_sysclk on 400b0000.audio-controller: -22
[ 132.356832] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at snd_soc_link_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
[ 132.370390] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at __soc_pcm_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
[ 137.389972] st,stm32-i2s 400b0000.audio-controller: Failed to find an accurate rate
[ 137.392105] st,stm32-i2s 400b0000.audio-controller: ASoC: error at snd_soc_dai_set_sysclk on 400b0000.audio-controller: -22
[ 137.403519] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at snd_soc_link_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
[ 137.416918] 400b0000.audio-controller-es8328-hifi-analog: ASoC: error at __soc_pcm_hw_params on 400b0000.audio-controller-es8328-hifi-analog: -22
Can someone help check what happened? Did I miss something?
- Labels:
-
STM32MP25 Lines
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-10-25 7:38 AM
Hi @Nicky ,
Our local Chinese support office will soon contact you.
Olivier
In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2024-10-27 10:41 PM
Hi Olivier,
Thank you.
