Alsa записывает двойную скорость

Отказ от ответственности: я писал по той же проблеме (с другой точки зрения) здесь

Я использую микрофон SPH0645 I2S с кастомным драйвером .

Это швы правильно распознаны alsa:

      arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: imxaudiosph0645 [imx-audio-sph0645], device 0: imx-sph0645 snd-soc-dummy-dai-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

При записи с помощью звук увеличивается на 2

При записи с помощью Arecordarecord -d (продолжительность):

  • продолжительность команды в два раза больше запрошенной
  • записанный файл имеет правильную продолжительность, но его скорость увеличивается на 2

Я использовал осциллограф, чтобы проверить часы BCLK и часы кадра (WS):

      time arecord -D hw:0,0 -r 48000 -f S32_LE -c 1 -d 5 -t wav -v 48000_32_1.wav
fsl_sai logs : clk_rate = 3072000, ratio = 1, ret = 0, freq = 3072000
Record time : 10s
File duration : 5s
Osciloscope BCLK clock 3.072 MHz, frame (WS) clock 48kHz
When opening the file in audacity, the configuration is correct but its length is 5 sec but it is speed up.

Пример звука: здесь

Насколько я понимаю, часы правильные. В таблице данных указано: «Частота передискретизации зафиксирована на уровне 64, поэтому сигнал WS должен быть BCLK / 64 и синхронизирован с BCLK».

Может быть, где-то в alsa есть конфигурация, о которой я не знаю?

Дайте мне знать, если я могу добавить дополнительную информацию.

1 ответ

Решение

Я нашел решение и разместил его в своем первоначальном посте на форуме nxp .

Ошибка была в драйвере:

      - snd_soc_dai_set_sysclk(cpu_dai, 1, bclk, SND_SOC_CLOCK_OUT);
+ snd_soc_dai_set_sysclk(cpu_dai, 0, bclk, SND_SOC_CLOCK_OUT);

Обновленный патч драйвера можно найти здесь

Другие вопросы по тегам