Tina_Linux_Audio_Руководство по разработке
Tina_Linux_Audio_Руководство по разработке

Каталог статей

OpenRemoved_Tina_Linux_Audio_Руководство по разработке

1 Обзор

1.1 Цель написания

Расскажите, как использовать аудиомодуль платформы Tina.

1.2 Область применения

Программная платформа Allwinner Tina.

Аппаратная платформа Allwinner R6, R7s, R11, R16, R18, R30, R58, R328, R332, R333, R311, MR133, T7, R329, MR813, R818, R818B, R528, H133, V853, F133.

1.3 Соответствующий персонал

Инженер, разрабатывающий аудиомодули под платформу Tina.

1.4 Связанные термины

термин

Объяснение

ALSA

Advanced Linux Sound Architecture

DMA

Прямой доступ к памяти означает, что данные передаются напрямую между устройствами и памятью, памятью и памятью, а также устройствами, минуя ЦП.

ASoC

ALSA System on Chip

выборка длины выборки

Сэмпл — самая основная единица записи аудиоданных, часто используется 16 бит.

Количество каналовканал

Этот параметр равен 1 для моно и 2 для стерео.

рамка

В кадре записана звуковая единица, длина которой равна длине сэмпла, умноженной на количество каналов.

Частота дискретизации

Количество выборок в секунду для кадров

периодпериод

Количество кадров, необходимое для одной обработки аудиоустройством. Доступ к данным аудиоустройства и хранение аудиоданных основаны на этом устройстве.

чередующийся

Это режим записи аудиоданных. В чередующемся режиме данные сохраняются в виде непрерывных кадров, то есть сначала записываются сэмпл левого канала и сэмпл правого канала кадра 1 (при условии, что это стереоформат). , а затем начинается запись кадра 2. Запись, причем в режиме без чередования, сначала записываются отсчеты левого канала всех кадров в цикле, а затем записываются отсчеты правого канала. Данные сохраняются в непрерывном режиме. канал. Но в большинстве случаев нам просто нужно использовать чередующийся режим.

AudioCodec

Чип встроенного аудиоинтерфейса

Daudio

Цифровой аудиоинтерфейс, можно настроить как стандартный аудиоинтерфейс I2S/PCM.

Dmic

Цифровой микрофонный интерфейс

MAD

Детектор активности микрофона, модуль обнаружения энергии голоса

AGC

Automatic Gain Control

DRC

Dynamic Range Control

2 Введение в модуль

Аудиоподсистема в Linux реализована с использованием архитектуры ALSA. ALSA теперь стала основной аудиоархитектурой для Linux. На уровне драйвера устройства ядра ALSA предоставляет драйвер alsa. В то же время на уровне приложения ALSA предоставляет нам alsa-lib. Пока приложение вызывает API, предоставляемый alsa-lib, оно может выполнять управление. базового аудиооборудования.

2.1 Структура драйверов

Tina SDK реализует драйверы аудиоустройств для каждой платформы, используя архитектуру ASoC. ASoC — это программная система, построенная на стандартном уровне драйвера alsa. Чтобы лучше поддерживать аудиокодек во встроенных процессорах и мобильных устройствах, ASoC делит аудиосистему на 3 части: кодек, платформу и машину.

Драйвер кодека

Важным принципом проектирования в ASoC является требование Драйвер. Кодека не зависит от платформы и содержит некоторые элементы управления звуком. (элементы управления), аудиоинтерфейс, определение DAMP (динамическое управление питанием звука) и некоторые кодеки Функция ввода-вывода. чтобы гарантировать Независимо от оборудования, любой код, специфичный для платформы и машины, необходимо переместить в драйверы платформы и машины. Все Драйвер Кодека должна обеспечивать следующие возможности:

Язык кода:javascript
копировать
 - Codec DAI (Digital Audio интерфейс) и информацию о конфигурации PCM;
 - Метод управления вводом-выводом кодека (I2C, SPI и т. д.);
 - Микшер и другие элементы управления звуком;
 - Кодек и интерфейс управления звуком ALSA;

Драйвер платформы

Включает настройку и управление аудио DMA и аудиоинтерфейсом платформы SoC (I2S, PCM, AC97 и т. д.); Обычно не содержит кода, связанного с платой или кодеком.

Machineводить машина отдельная Платформа и Драйвер кодека не работает,это должно быть сделаноMachineводить машину Объединение их вместе может завершить обработку звука всего устройства.。

2.2 Знакомство с аудиоинтерфейсом.

Аудиоинтерфейсы, которые мы предоставляем, включают в себя:

  • AudioCodec
  • Daudio(I2S)
  • Dmic
  • Spdif
  • MAD

Ресурсы аудиоинтерфейса разных платформ чипов будут разными; разные версии ядра имеют разные соответствующие драйверы ALSA, которые будут подробно описаны ниже;

2.3 Аудиоинтерфейс R6

2.3.1 Аппаратные ресурсы

R6 содержит 2 аудиомодуля, а именно встроенный аудиокодек и daudio0.

2.3.2 Источник синхронизации

В R6 источники синхронизации двух аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.

2.3.3 Структура кода
Язык кода:javascript
копировать
linux-3.10/sound/soc/sunxi/
├── sun3iw1_ac101.c // драйвер машины daudio+ac101
├── sun3iw1_codec.c // codec водить машину
├── sun3iw1_codec.h
├── sun3iw1_daudio.c // daudioизplatformводить машину
├── sun3iw1_daudio.h
├── sun3iw1_sndcodec.c // codec machineводить машину
├── sunxi_cpudai.c // codec platformводить машину
├── sunxi_cpudai.h
├── sunxi_dma.c //общий файл,Обеспечить регистрациюplatformводить машинуизинтерфейси Связанные буквычислонабор
├── sunxi_dma.h
├── sunxi_rw_func.c //Общий файл, интерфейс для чтения и записи аналоговых/цифровых регистров
└── sunxi_rw_func.h

linux-3.10/sound/soc/codecs/
├── ac101.c // daudio+ac101изcodecводить машину
└── ac101.h
2.3.4 Audiocodec.

Аппаратные особенности

  • Двусторонний ЦАП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~192KHzЧастота выборки
  • Всю дорогу АЦП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~48KHzЧастота выборки
  • Один аналоговый выход: один выход для стереонаушников (HPL, HPR)
  • Четыре аналоговых входа: MIC, FMINL, FMINR, LINEIN.
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
2.3.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
    <*> Advanced Linux Sound Architecture --->
        <*> ALSA for SoC audio support --->
            <*> ASoC support for SUNXI --->
                <*> ASoC support for sun3iw1 audiocodec
                <*> ASoC support for internal-codec cpudai
                <*> ASoC support for sun3iw1 audiocodec machine
2.3.4.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[sndcodec]
sndcodec_used = 0x1
;------------------------------------------------------------------------------
[cpudai]
cpudai_used = 0x1
;------------------------------------------------------------------------------
[codec]
codec_used = 0x1
headphonevol = 0x3b
maingain = 0
pa_sleep_time = 30
gpio-spk = port:PD03<1><1><default><default>
gpio_shdn = 1

конфигурация sndcodec, то есть соответствующая конфигурация драйвера машины.

конфигурация sndcodec

конфигурация sndcodecиллюстрировать

sndcodec_used

Использовать ли драйвер sndcodec. 0: Не используется 1: Используется;

Конфигурация cpudai, то есть конфигурация, связанная с драйвером платформы.

конфигурация процессора

конфигурация процессораиллюстрировать

cpudai_used Использовать ли драйвер cpudai.

0: Не используется 1: Используется;

конфигурация кодека, то есть соответствующая конфигурация встроенного драйвера аудиокодека.

конфигурация кодека

конфигурация кодекаиллюстрировать

codec_used

Использовать ли драйвер кодека. 0: Не используется 1: Используется;

headphonevol

Громкость наушников, диапазон настройки: 0–0x3f, 0 означает отключение звука, 163 означает -62 д Б0 д Б, 1 д Б/шаг.

micgain

Усиление микрофона, настраиваемый диапазон: 0–0x7, 0:0 д Б, 17:1533 д Б, 3 д Б/шаг, обычно устанавливается на 0x4, что соответствует 24 д Б. Если он используется в качестве петли AEC, его необходимо установить на 0 д Б.

pa_sleep_time

Время задержки после срабатывания УМ (используется для устранения хлопка), ед. мс

gpio-spk

PIN-код включения PA

gpio_shdn

Режим включения контакта PA. 0: действительно на низком уровне 1: действительно на высоком уровне;

иллюстрировать

  • Если вы хотите загрузить нормальноaudiocodec звуковая карта, Необходимо совместить кодек,платформу и машину Все драйверы выбраны. Прямо сейчасcodec_used, cpudai_used, sndcodec_used настроены на1;
  • headphonevol Эквивалентное значение будет в приводе машинуинициализацияизкогданастраивать,После входа в систему вы также можете пройтиamixer Соответствующий инструменту элемент управления снова модифицируется;
  • Уведомлениеgpio-spk Правильно ли он настроен? Используется ли он другими модулями?gpio;
  • Помимо того, что gpio-spk указывает контакт включения pa, драйвер также обнаруживает поле gpio_num, поэтому вы можете напрямую назначить номер gpio для gpio_num;
  • Уведомлениеgpio_shdn, фактический усилитель мощностиPA На контакте активен высокий или низкий уровень?
2.3.4.3 путь данных кодека

Драйвер аудиокодека платформы R6 автоматически устанавливает соответствующие каналы при воспроизведении песен. Карта звука по умолчанию:

Язык кода:javascript
копировать
Воспроизведение песен
DACL --> HP_L Mux --> HPOUTL
DACR --> HP_R Mux --> HPOUTR

Функция записи управляет соответствующим каналом разрешения пространства по мере необходимости:

Язык кода:javascript
копировать
Запись отдельных данных MIC
MICIN --> ADC Mixer -> ADC

Запись внутренних данных AEC (нет необходимости во внешней схеме восстановления)
Left Output Mixer --> ADC Mixer -> ADC
Right Output Mixer --> ADC Mixer -> ADC

Элементы управления, связанные с R6, следующие:

Имя элемента управления

Функция

числовое значение

ADC INPUT GAIN control

усиление АЦП

0–7, означает -4,5–6 д Б.

ADC MIC Boost AMP

enMIC Boost AMP включить

0: выключено; 1: включено

ADC MIC Boost AMP

регулировка усиления микрофонного усиления

0–7, 0:0dB, 1~7:15–33dB

ADC PA speed select

Выбор скорости PA 0: нормальная 1: быстрая;

ADC mixer mute for FML

Настройки микшера АЦП, включение канала FML

0: выключено; 1: включено

ADC mixer mute for FMR

Настройки микшера АЦП, включение канала FMR

0: выключено; 1: включено

ADC mixer mute for left output

Настройки микшера АЦП, включение левого выходного канала микшера

0: выключено; 1: включено

ADC mixer mute for linein

Настройки микшера АЦП, включение линейного канала

0: выключено; 1: включено

ADC mixer mute for mic

Настройки микшера ADC, включение микрофонного канала

0: выключено; 1: включено

ADC mixer mute for right output

Настройки микшера АЦП, включение правого выходного канала микшера

LINEIN GAIN control

Linein для усиления выходного микшера

0–7, 0~7:0–14dB,2dB/step

MICIN GAIN control

микрофон для выхода усиление микшера 0–7, означает -4,5–6 д Б.

dac digital volume

Цифровая громкость ЦАП 063, означает 0-73,08 д Б, -1,16 д Б/шаг.

head phone volume

громкость наушников

0 означает отключение звука, 163 означает -62д Б0д Б, -1д Б/шаг.

Пример настройки канала записи:

  1. записьмоно данных
Язык кода:javascript
копировать
проходитьMICINзапись:
amixer -D hw:audiocodec cset name='ADC MIC Boost AMP en' 1
amixer -D hw:audiocodec cset name='АЦП микшер отключает микрофон' 1
amixer -D hw:audiocodec cset name='ADC MIC Boost AMP усиление' 4
  1. Внутренняя AEC (внешняя схема AEC может быть опущена)
Язык кода:javascript
копировать
amixer -D hw:audiocodec cset name='ADC mixer mute for left ouput' 1
2.3.5 Daudio.

Аппаратные особенности

  • Полностью I2S/PCM;
  • Поддержка режима «главный-подчиненный»
  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживатьmonoиstereoмодель,Самый высокийподдерживать 2 ряд
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
2.3.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
        <*> Advanced Linux Sound Architecture --->
            <*> ALSA for SoC audio support --->
                <*> ASoC support for SUNXI --->
                    <*> ASoC support for daudio platform
                    <*> ASoC support for sun3iw1 & ac101 daudio machine
2.3.5.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[snddaudio0]
snddaudio0_used = 1
over_sample_rate = 128
[daudio0]
daudio0_used = 1
word_select_size = 32
pcm_sync_period = 32
pcm_lsb_first = 0
over_sample_rate = 128
slot_width_select = 16
pcm_sync_type = 0
pcm_start_slot = 0
tdm_config = 1

конфигурация sndaudio0, то есть соответствующая конфигурация драйвера машины daudio0

конфигурация sndaudio

конфигурация sndaudioиллюстрировать

snddaudio0_used

Использовать ли драйвер sndaudio. 0: Не используется 1: Используется;

over_sample_rate

Поддержка 128fs/192fs/256fs/384fs/512fs/768fs

конфигурация daudio0, то есть соответствующая конфигурация драйвера платформы daudio0

конфигурация sndaudio

конфигурация sndaudioиллюстрировать

daudio0_used

Использовать ли аудиодрайвер. 0: Не используется 1: Используется;

word_select_size

Поддержка 16 бит/20 бит/24 бит/32 бита

pcm_sync_period

16/32/64/128/256

конфигурация sndaudio

конфигурация sndaudioиллюстрировать

pcm_lsb_first

0: msb first; 1: lsb first

over_sample_rate

Поддержка 128fs/192fs/256fs/384fs/512fs/768fs

slot_width_select

16bits/20bits/24bits/32bits

pcm_sync_type

0: long frame sync; 1: short frame sync

pcm_start_slot

0: 1st slot; 1: 2nd slot; 2: 3th slot; 3:4th slot

tdm_config

0:pcm 1:i2s

2.3.6 Кодек плагина: AC101

AC101, используемый в предложении R6, используется для двухканальной записи, а аудиокодек используется в качестве цикла записи для AEC. Вот как настроить и использовать R6. Краткое введение в использование AC101

2.3.6.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
    <*> Sound card support --->
        <*> Advanced Linux Sound Architecture --->
            <*> ALSA for SoC audio support --->
                <*> AC101 Codec
                <*> ASoC support for SUNXI --->
                    <*> ASoC support for daudio platform
                    <*> ASoC support for sun3iw1 & ac101 daudio machine
2.3.6.2 sys_config&конфигурация дтс.

R6 управляет AC101 через TWI1, а I2S0 используется для передачи аудиоданных.

Частичную конфигурацию TWI можно настроить через dts:

Язык кода:javascript
копировать
linux-3.10/arch/arm/boot/dts/sun3iw1p1-sitar-mic2.dts
twi1: twi@0x01c27400{
    ac101@1a {
        compatible = "x-powers,ac101";
        reg = <0x1a>;
        audio_int_ctrl = <&pio PL 12 6 1 1 0>;
        audio_pa_ctrl = <&pio PG 13 1 1 1 0>;
        speaker_val = <0x1b>;
        headset_val = <0x3b>;
        single_speaker_val = <0x19>;
        double_speaker_val = <0x1b>;
        speaker_double_used = <1>;
        earpiece_val = <0x1e>;
        mainmic_val = <0x4>;
        headsetmic_val = <0x4>;
        dmic_used = <0>;
        adc_digital_val = <0xb0b0>;
        agc_used = <0>;
        drc_used = <1>;
        linein_to_spk_used = <0>;
        linein_to_hp_used = <0>;
        linein_to_aif2_used = <0>;
        };
}

Часть конфигурации I2S можно настроить с помощью dts, либо конфигурацию dts можно переопределить с помощью sys_config.

Язык кода:javascript
копировать
[snddaudio0]
snddaudio0_used = 1
over_sample_rate = 128
sunxi,snddaudio-codec = "ac101.1-001a"
sunxi,snddaudio-codec-dai = "ac101"

[daudio0]
daudio0_used = 1
word_select_size = 32
pcm_sync_period = 32
pcm_lsb_first = 0
over_sample_rate = 128
slot_width_select = 16
pcm_sync_type = 0
pcm_start_slot = 0
tdm_config = 1

Форматы, связанные с i2s, необходимо настроить в соответствии со спецификацией AC101.

Обратите внимание, что в sndaudio0 имя кодека должно совпадать с именем разработчика фактического AC101, а имя codec-dai соответствует имени dai, установленному в драйвере AC101.

2.3.7 Метод аудиотестирования ставок

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.3.7.1 Играть

Как упоминалось в главе «Путь к данным аудиокодека R6», путь воспроизведения фиксированно настроен в коде драйвера и может воспроизводиться непосредственно с помощью инструмента aplay после входа в систему, например:

Язык кода:javascript
копировать
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav

Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:

Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='headphone volume' 50
2.3.7.2 Запись

Аудиоканал AC101 необходимо настроить перед использованием AC101 для двухканальной записи. SDK настроит его по умолчанию при запуске. Соответствующий сценарий настройки:

Язык кода:javascript
копировать
/etc/init.d/rc.final

Вы можете записывать напрямую с помощью команды arecord:

Язык кода:javascript
копировать
arecord -Dhw:sndac1011001a -f S16_LE -r 16000 -c 2 /tmp/test.wav

2.4 Аудиоинтерфейс R7s

2.4.1 Аппаратные ресурсы

R7s содержит 2 аудиомодуля, а именно встроенный AudioCodec и Daudio0.

2.4.2 Источник синхронизации

В R7s источники синхронизации двух аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.

2.4.3 Структура кода
Язык кода:javascript
копировать
linux-4.9/sound/soc/sunxi/
├── sunxi-pcm.c //Обеспечить регистрациюplatformводить машинуизинтерфейси Связанные буквычислонабор
├── sunxi-pcm.h
├── sun8iw8
│   ├── sunxi_codec.c // cpudaiводить машину
│   ├── sunxi_codecdma.c // codec platformводить машину
│   ├── sun8iw8_sndcodec_new.c // codecводить машину
│   └── sunxi_sndcodec.c // codec machineводить машину
├── sunxi-daudio.c // daudio platformводить машину
└── sunxi-snddaudio.c // daudio machineводить машину

linux-4.9/sound/soc/soc-utils.c // daudio codecводить машину
2.4.4 Audiocodec.

Аппаратные особенности

  • Двусторонний ЦАП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~192KHzЧастота выборки
  • Двусторонний АЦП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~48KHzЧастота выборки
  • Два аналоговых выхода:
    • Один стереовыход LINEOUT (LINEOUTP, LINEOUTN)
    • Один выход для стереонаушников (HPOUTL, HPOUTR)
  • Два аналоговых входа: MIC1, MIC2
    • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
    • поддерживатьADCизAGC,DRCФункция
    • поддерживатьDACизDRCФункция
2.4.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
    <*> Sound card support --->
        <*> Advanced Linux Sound Architecture --->
            <*> ALSA for SoC audio support --->
                <*> Audiocodec for the SUNXI chips
2.4.4.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[codec]
headphone_vol = 0x3b
lineout_vol = 0x1a
audio_pa_ctrl = port:PB05<1><default><default><0>
adcagc_used = 0
adcdrc_used = 0
dacdrc_used = 0
adchpf_used = 0
dachpf_used = 0

конфигурация кодека

конфигурация кодекаиллюстрировать

headphone_vol

Громкость наушников, диапазон настройки: 0–0x3f, 0 означает отключение звука, 163 означает -62 д Б0 д Б, 1 д Б/шаг.

audio_pa_ctrl

PIN-код включения PA

adcagc_used

1:use adcagc 0:no use

adcdrc_used

1:use adcdrc 0:no use

dacdrc_used

1:use dacdrc 0:no use

adchpf_used

1:use adchpf 0:no use

dachpf_used

1:use dachpf 0:no use

2.4.4.3 путь данных кодека
Язык кода:javascript
копировать
Воспроизведение песен
DACL --> Left Output Mixer --> LINEOUTL
DACR --> Right Output Mixer --> LINEOUTR

запись
MIC1P --> LADC input Mixer --> ADCL
MIC2P --> RADC input Mixer --> ADCR

Имя элемента управления

Функция

числовое значение

Lineout volume

настройка громкости линейки

0–31, означает -43,5–0 д Б.

ADC input gain control

усиление АЦП 0–7, означает -4,5–6 д Б.

HP_L Mux HP_L

Настройки мультиплексора

0:DACL HPL Switch; 1:MIXER_L Switch

HP_R Mux HP_R

Настройки мультиплексора

0:DACR HPR Switch; 1:MIXER_R Switch

LADC input Mixer MIC1 boost Switch

Настройки микшера входа LADC, включение канала MIC1

0: выключено; 1: включено

LADC input Mixer MIC2 boost Switch

Настройки микшера входа LADC, включение канала MIC2

0: выключено; 1: включено

LADC input Mixer l_output mixer Switch

Настройки микшера входа LADC, включение канала l_output

0: выключено; 1: включено

LADC input Mixer r_output mixer Switch

Настройки микшера входа LADC, включите канал r_output

0: выключено; 1: включено

Left Output Mixer DACL Switch

Левые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Left Output Mixer DACR Switch

Левые настройки выходного микшера, включите путь DACR

0: выключено; 1: включено

Left Output Mixer MIC1Booststage Switch

Настройки левого выходного микшера, включение канала MIC1

0: выключено; 1: включено

Left Output Mixer MIC2Booststage Switch

Настройки левого выходного микшера, включение канала MIC2

0: выключено; 1: включено

MIC1 boost AMP gain control

усиление MIC1

0–7, 0:0dB,1~7:24–42dB,3dB/step

MIC1_G boost stageoutput mixer control

Выход от MIC1 до L или R Усиление микшера

0–7, означает -4,5–6 д Б.

MIC2 SRC

Настройки SRC MIC2

0:MIC3; 1:MIC2

MIC2 boost AMP gain control

усиление MIC2

0–7, 0:0dB,1~7:24–42dB,3dB/step

MIC2_G boost stage output mixer control

Выход MIC2 на L или R Усиление микшера

0–7, означает -4,5–6 д Б.

RADC input Mixer MIC1 boost Switch

Настройки микшера входа RADC, включение канала MIC1

0: выключено; 1: включено

RADC input Mixer MIC2 boost Switch

Настройки микшера входа RADC, включение канала MIC2

0: выключено; 1: включено

RADC input Mixer l_output mixer Switch

Настройки входного микшера RADC, включение канала l_output

0: выключено; 1: включено

RADC input Mixer r_output mixer Switch

Настройки входного микшера RADC, включение канала r_output

0: выключено; 1: включено

Right Output Mixer DACL Switch

Правые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Right Output Mixer DACR Switch

Настройки правого выходного микшера, включите путь DACR

0: выключено; 1: включено

Right Output Mixer MIC1Booststage Switch

Настройки правого выходного микшера, включение канала MIC1

0: выключено; 1: включено

Right Output Mixer MIC2Booststage Switch

Настройки правого выходного микшера, включение канала MIC2

0: выключено; 1: включено

SPK_L Mux

SPK_L Настройки мультиплексора

0:MIXER_L Switch; 1:MIXR+MIXL

SPK_R Mux

SPK_R Настройки мультиплексора

0:MIXER_L Switch; 1:MIXR+MIXL

digital volume

Цифровые настройки громкости

0–63, означает -73,08–0 д Б.

headphone volume

громкость наушниковнастраивать

0–63, 0 означает отключение звука, 1–63 означает -62–0 д Б;

Пример настройки пути:

  1. игратьряд
Язык кода:javascript
копировать
Линейная схема:
amixer -D hw:audiocodec cset name='SPK_L Mux' 1
amixer -D hw:audiocodec cset name='SPK_R Mux' 1
amixer -D hw:audiocodec cset name='Правый выходной микшер DACR Switch' 1
amixer -D hw:audiocodec cset name='Левый выходной микшер DACL Switch' 1
amixer -D hw:audiocodec cset name='цифровая громкость' 6
  1. записьряд
Язык кода:javascript
копировать
Автор MIC1,MIC2запись:
amixer -D hw:audiocodec cset name='Входной переключатель MIC1 микшера LADC' 1
amixer -D hw:audiocodec cset name='Входной переключатель MIC2 микшера RADC' 1
amixer -D hw:audiocodec cset name='MIC2 SRC' 0
amixer -D hw:audiocodec cset name='Регулятор усиления AMP MIC1 Boost' 4
amixer -D hw:audiocodec cset name='Регулятор усиления AMP MIC2 Boost' 4
2.4.5 Daudio.

Аппаратные особенности

  • Полностью I2S/PCM;
  • Поддержка режима «главный-подчиненный»
  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживатьmonoиstereoмодель
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
2.4.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
    <*> Sound card support --->
        <*> Advanced Linux Sound Architecture --->
            <*> ALSA for SoC audio support --->
                <*> Allwinner Digital Audio Support
2.4.5.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[tdm0]
daudio_used = 0
daudio_master = 4
daudio_select = 1
audio_format = 1
signal_inversion = 1
sample_resolution = 16
slot_width_select = 16
pcm_lrck_period = 32
pcm_lrckr_period = 1
msb_lsb_first = 0
sign_extend = 0
tx_data_mode = 0
rx_data_mode = 0
;i2s_mclk = port:PB08<2><1><default><default>
i2s_bclk = port:PG11<2><1><default><default>
i2s_lrclk = port:PG10<2><1><default><default>
i2s_dout0 = port:PG12<2><1><default><default>
i2s_dout1 =
i2s_dout2 =
i2s_dout3 =
i2s_din = port:PG13<2><1><default><default>

конфигурация tdm0

конфигурация tdm0иллюстрировать

daudio_master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRM master), то есть интерфейс daudio выполняет функцию подчиненного, кодек как master2: SND_SOC_DAIFMT_CBS_CFM(codec clk slave & FRMmaster), обычно не используйте 3: SND_SOC_DAIFMT_CBM_CFS(codec clk master & frameslave), обычно не используется 4: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRM ведомый), то есть даудиоинтерфейс выступает в роли ведущего, кодек как подчиненный

daudio_select

0: pcm mode; 1: i2s mode

audio_format

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is available on 2ndBCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is available on 1ndBCLK rising edge after LRC rising edge)

signal_inversion

1: SND_SOC_DAIFMT_NB_NF(normal bit clock + frame)2: SND_SOC_DAIFMT_NB_IF(normal BCLK + inv FRM)3: SND_SOC_DAIFMT_IB_NF(invert BCLK + nor FRM)4: SND_SOC_DAIFMT_IB_IF(invert BCLK + FRM)

sample_resolution

Точность выборки: 16 бит, 24 бита, 32 бита

slot_width_select

Поддержка ширины 8 бит, 16 бит, 32 бита

pcm_lrck_period

Настраиваемый 16/32/64/128/256 bclk

pcm_lrckr_period

Настраиваемый 16/32/64/128/256 bclk

msb_lsb_first

0: msb first; 1: lsb first

sign_extend

0: zero pending; 1: sign extend

tx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

rx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

i2s_bclk

i2s_bclk контактный

i2s_lrclk

значок i2s_lrclk

i2s_dout0

i2s_dout контакт

i2s_din

i2s_din контактный

2.4.6 Метод аудиотестирования ставок

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.4.6.1 Играть
Язык кода:javascript
копировать
amixer -D hw:audiocodec cset name='SPK_L Mux' 1
amixer -D hw:audiocodec cset name='SPK_R Mux' 1
amixer -D hw:audiocodec cset name='Lineout volume' 24
amixer -D hw:audiocodec cset name='Right Output Mixer DACR Switch' 1
amixer -D hw:audiocodec cset name='Left Output Mixer DACL Switch' 1
amixer -D hw:audiocodec cset name='digital volume' 0
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav

Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:

Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='Lineout volume' 50
2.4.6.2 Запись

Используйте аудиокодек для записи MIC1 и MIC2.

Язык кода:javascript
копировать
amixer -D hw:audiocodec cset name='LADC input Mixer MIC1 boost Switch' 1
amixer -D hw:audiocodec cset name='RADC input Mixer MIC2 boost Switch' 1
amixer -D hw:audiocodec cset name='MIC1 boost AMP gain control' 4
amixer -D hw:audiocodec cset name='MIC2 SRC' 0
amixer -D hw:audiocodec cset name='MIC2 boost AMP gain control' 4

arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 /tmp/test.wav

Аудиоинтерфейс 2.5 R11

2.5.1 Аппаратные ресурсы

R11 содержит 2 аудиомодуля, а именно встроенный AudioCodec и Daudio0.

2.5.2 Источник синхронизации

В R11 источники синхронизации двух аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.

2.5.3 Структура кода

Язык кода:javascript
копировать
linux-3.4/sound/soc/sunxi/
├── audiocodec
│ ├── sun8iw8_sndcodec_new.c // codec водить машину
│ ├── sun8iw8_sndcodec.h
│ ├── sunxi_codec.c // cpu daiводить машину
│ ├── sunxi_sndcodec.c // codec machineводить машину
│ ├── sunxi_codecdma.c // codec platformводить машину
│ └── sunxi_codecdma.h
└── daudio0
    ├── snddaudio0.c // daudio codecводить машину
    ├── sunxi-daudio0.c // daudio cpu daiводить машину
    ├── sunxi-daudio0.h
    ├── sunxi-daudiodma0.c // daudio platform водить машину
    ├── sunxi-daudiodma0.h
    └── sunxi-snddaudio0.c // daudio machineводить машину

2.5.4 AudioCodec

Аппаратные особенности

  • Двусторонний ЦАП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~192KHzЧастота выборки
  • Двусторонний АЦП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~48KHzЧастота выборки
  • Один аналоговый выход: Один стереовыход LINEOUT (LINEOUTP, LINEOUTN)
  • Один аналоговый вход: MIC1
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживатьADCизAGC,DRCФункция
  • поддерживатьDACизDRCФункция
2.5.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
    <*> Advanced Linux Sound Architecture --->
        <*> ALSA for SoC audio support --->
            <*> Audiocodec for the SUNXI chips
            <*> Audiocodec Machine for codec chips
            <*> Audiocodec for the SUN8IW8 chips
2.5.4.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[audio0]
headphone_vol = 0x3b
lineout_vol = 0x1a
audio_pa_ctrl = port:PB05<1><default><default><0>
audio_pa_active_level = 1
adcagc_used = 0
adcdrc_used = 0
dacdrc_used = 0
adchpf_used = 0
dachpf_used = 0

конфигурация audio0

конфигурация audio0иллюстрировать

headphone_vol

headphone громкость, настраиваемый диапазон 0~0x3f, 0 означает отключение звука,163 означает -62д Б0д Б, 1dB/step

lineout_vol

громкость линейного выхода, диапазон настройки: 0~0x1f, 0 или 1 означает отключение звука, 231 означает -43,5 д Б0 д Б, 1,5 д Б/шаг.

audio_pa_ctrl

PIN-код включения PA

audio_pa_active_level

1:high level active; 0:low level active

adcagc_used

1:use adcagc 0:no use

adcdrc_used

1:use adcdrc 0:no use

dacdrc_used

1:use dacdrc 0:no use

adchpf_used

1:use adchpf 0:no use

dachpf_used

1:use dachpf 0:no use

2.5.4.3 путь данных кодека
Язык кода:javascript
копировать
Воспроизведение песен
DACL --> Left Output Mixer --> LINEOUTL
DACR --> Right Output Mixer --> LINEOUTR

запись
MIC1P --> LADC input Mixer --> ADCL

Имя элемента управления

Функция

числовое значение

Lineout volume

Настройка громкости линейного выхода 0–31, означает -43,5–0 д Б.

ADC input gain control

Коэффициент усиления АЦП 0–7, означает -4,5–6 д Б.

LADC input Mixer MIC1 boost Switch

Настройка микшера входа LADC, включение канала микрофона 0: выключено 1: включено;

Left Output Mixer DACL Switch

Настройка левого выходного микшера, включение канала DACL 0: выключено 1: включено;

Left Output Mixer DACR Switch

Настройка левого выходного микшера, включение канала DACR 0: выключено 1: включено;

Left Output Mixer MIC1Booststage Switch

Настройка левого выходного микшера, включение канала MIC1 0: выключено 1: включено;

MIC1 boost AMP gain control

Усиление MIC1 0–7, 0:0 д Б, 1–7:24–42 д Б, 3 д Б/шаг

MIC1_G boost stage output mixer control

Выход от MIC1 до L или R. Усиление микшера 0–7, что означает -4,5–6 д Б.

Right Output Mixer DACL Switch

Правые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Right Output Mixer DACR Switch

Right Output Mixer настраивать, Включить DACR ряд 0: выключено; 1: включено

Right Output Mixer MIC1Booststage Switch

Right Output Mixer настраивать, Включить микрофон 1 ряд 0: выключено; 1: включено

SPK_L Mux SPK_L Mux

Настройка 0: Переключатель MIXER_L 1: MIXR+MIXL;

SPK_R Mux SPK_R Mux

Настройка 0: Переключатель MIXER_L 1: MIXR+MIXL;

digital volume

Цифровые настройки громкости0–63, Указывает -73,08–0 д Б.

Пример настройки пути:

  1. игратьряд
Язык кода:javascript
копировать
По линейной игре:
amixer -D hw:audiocodec cset name='SPK_L Mux' 1
amixer -D hw:audiocodec cset name='SPK_R Mux' 1
amixer -D hw:audiocodec cset name='Right Output Mixer DACR Switch' 1
amixer -D hw:audiocodec cset name='Left Output Mixer DACL Switch' 1
amixer -D hw:audiocodec cset name='digital volume' 0
  1. записьряд
Язык кода:javascript
копировать
От MIC1запись:
amixer -D hw:audiocodec cset name='LADC input Mixer MIC1 boost Switch' 1
amixer -D hw:audiocodec cset name='MIC1 boost AMP gain control' 4

2.5.5 Daudio.

Аппаратные особенности

  • Полностью I2S/PCM;
  • Поддержка режима «главный-подчиненный»
  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживатьmonoиstereoмодель,Самый высокийподдерживать 2 ряд
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
2.5.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
    <*> Advanced Linux Sound Architecture --->
        <*> ALSA for SoC audio support --->
            <*> SoC daudio0 tdm interface for SUNXI chips
            <*> Daudio0 Public Machine for SUNXI chips
2.5.5.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[tdm0]
daudio_used = 1
daudio_master = 4
daudio_select = 1
audio_format = 1
signal_inversion = 1
sample_resolution = 16
slot_width_select = 16
pcm_lrck_period = 32
pcm_lrckr_period = 1
msb_lsb_first = 0
sign_extend = 0
tx_data_mode = 0
rx_data_mode = 0
;i2s_mclk = port:PB08<2><1><default><default>
i2s_bclk = port:PG11<2><1><default><default>
i2s_lrclk = port:PG10<2><1><default><default>
i2s_dout0 = port:PG12<2><1><default><default>
i2s_dout1 =
i2s_dout2 =
i2s_dout3 =
i2s_din = port:PG13<2><1><default><default>

конфигурация tdm0

конфигурация tdm0иллюстрировать

daudio_master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRM master), то есть интерфейс daudio выполняет функцию подчиненного, кодек как master2: SND_SOC_DAIFMT_CBS_CFM(codec clk slave & FRMmaster), обычно не используйте 3: SND_SOC_DAIFMT_CBM_CFS(codec clk master & frameslave), обычно не используется 4: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRM ведомый), то есть даудиоинтерфейс выступает в роли ведущего, кодек как подчиненный

daudio_select

0: pcm mode; 1: i2s mode

deaudio_format

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is available on 2ndBCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is available on 1nd BCLK rising edge after LRC rising edge)

signal_inversion

1: SND_SOC_DAIFMT_NB_NF(normal bit clock + frame)2: SND_SOC_DAIFMT_NB_IF(normal BCLK + inv FRM)3: SND_SOC_DAIFMT_IB_NF(invert BCLK + nor FRM)4: SND_SOC_DAIFMT_IB_IF(invert BCLK + FRM)

sample_resolution

Точность выборки: 16 бит, 24 бита, 32 бита

slot_width_select

Поддержка ширины 8 бит, 16 бит, 32 бита

pcm_lrck_period

Настраиваемый 16/32/64/128/256 bclk

pcm_lrckr_period

Настраиваемый 16/32/64/128/256 bclk

msb_lsb_first

0: msb first; 1: lsb first

sign_extend

0: zero pending; 1: sign extend

tx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

rx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

i2s_bclk

i2s_bclk контактный

i2s_lrclk

значок i2s_lrclk

i2s_dout0

i2s_dout контакт

i2s_din

i2s_din контактный

2.5.6 Метод аудиотестирования ставок

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.5.6.1 Играть
Язык кода:javascript
копировать
amixer -D hw:audiocodec cset name='SPK_L Mux' 1
amixer -D hw:audiocodec cset name='SPK_R Mux' 1
amixer -D hw:audiocodec cset name='Lineout volume' 24
amixer -D hw:audiocodec cset name='Right Output Mixer DACR Switch' 1
amixer -D hw:audiocodec cset name='Left Output Mixer DACL Switch' 1
amixer -D hw:audiocodec cset name='digital volume' 0
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav

Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:

Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='Lineout volume' 50
2.5.6.2 Запись

Моно-запись с использованием AudioCodec

Язык кода:javascript
копировать
amixer -D hw:audiocodec cset name='LADC input Mixer MIC1 boost Switch' 1
amixer -D hw:audiocodec cset name='MIC1 boost AMP gain control' 4

arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 1 /tmp/test.wav

Аудиоинтерфейс 2.6 R16

2.6.1 Аппаратные ресурсы

R16 содержит 3 аудиомодуля, а именно встроенный AudioCodec, I2S0 и I2S1.

2.6.2 Источник синхронизации

В R16 источники синхронизации трех аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.

2.6.3 Структура кода

Язык кода:javascript
копировать
linux-3.4/sound/soc/sunxi/
├── audiocodec
│   ├── sun8iw5_machine.c // codec machineводить машину
│   ├── sun8iw5_sndcodec.c // codecводить машину
│   ├── sun8iw5_sndcodec.h
│   ├── sunxi_codecdma.c // codec platformводить машину
│   ├── sunxi_codecdma.h
│   └── sunxi_codec.c // cpu daiводить машину
├── i2s0
│ ├── sndi2s0.c // i2s codecводить машину
│ ├── sunxi-i2s0dma.c // i2s platformводить машину
│ ├── sunxi-i2s0dma.h
│ ├── sunxi-i2s0.c // i2s cpu daiводить машину
│ ├── sunxi-i2s0.h
│ └── sunxi-sndi2s0.c // i2s machineводить машину
└── i2s1
    ├── sndi2s1.c // i2s codecводить машину
    ├── sunxi-i2s1dma.c // i2s platformводить машину
    ├── sunxi-i2s1dma.h
    ├── sunxi-i2s1.c // i2s cpu daiводить машину
    ├── sunxi-i2s1.h
    └── sunxi-sndi2s1.c // i2s machineводить машину

2.6.4 AudioCodec

Аппаратные особенности

  • Двусторонний ЦАП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~192KHzЧастота выборки
  • Двусторонний АЦП
    • поддержка16 бит, точность дискретизации 24 бита
    • поддерживать8KHz~48KHzЧастота выборки
  • Два аналоговых выхода:
    • Один выход для стереонаушников (HPOUTL, HPOUTR)
    • Один стереофонический выход (PHONEOUTP, PHONEOUTN)
  • Четыре аналоговых входа: MIC1, MIC2, линейный вход, телефонный вход.
  • поддерживатьheadphoneводить машину
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
2.6.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
    <*> Advanced Linux Sound Architecture --->
        <*> ALSA for SoC audio support --->
            <*> Audiocodec for the SUNXI chips
            <*> Audiocodec Machine for sun8iw5 chips
            <*> Audiocodec for the SUN8IW5 chips
2.6.4.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[audio0]
audio_used = 1
headphone_vol = 0x3b
pa_double_used = 1
headphone_direct_used = 1
headset_mic_vol = 3
main_mic_vol = 1
;audio_linein_detect = port:PB07<0><default><default><0>
audio_pa_ctrl = port:PD11<1><default><default><0>
pa_gpio_reverse = 0
aif2_used = 0
aif3_used = 0
headphone_mute_used = 0
aif1_lrlk_div = 0x40

конфигурация audio0

конфигурация audio0иллюстрировать

audio0

Использовать ли драйвер аудиокодека. 0: Не используется 1: Используется;

headphone_vol

headphone громкость, настраиваемый диапазон 0~0x3f, 0 означает отключение звука,163 означает -62д Б0д Б, 1dB/step

pa_double_used

Использовать ли два ЦАП одновременно, 0: Не используется 1: Используется;

headphone_direct_used

Использовать ли выход для наушников, 0: Не используется 1: Используется;

main_mic_vol

Усиление по умолчанию MIC1, 0–7, 0:0 д Б, 1–7:24–42 д Б, 3 д Б/шаг

headset_mic_vol

Усиление по умолчанию MIC2, 0–7, 0:0 д Б, 1–7:24–42 д Б, 3 д Б/шаг

audio_pa_ctrl

PIN-код включения PA

pa_gpio_reverse

PIN-код включения Перевернут ли PA, 0: нормальный, то есть высокий level active; 1: перевернутый, то есть низкий level active

aif1_lrlk_div

lrck коэффициент деления частоты aif1

2.6.4.3 путь данных кодека
Язык кода:javascript
копировать
Воспроизведение песен через HPOUTL/R
AIF1DACL --> AIF1IN0L Mux --> DACL Mixer --> Left Output Mixer --> HP_L Mux --> HPOUTL
AIF1DACR --> AIF1IN0R Mux --> DACR Mixer --> Right Output Mixer --> HP_R Mux --> HPOUTR

От MIC1запись
AIF1ADCL <-- AIF1OUT0L Mux <-- AIF1 AD0L Mixer <-- ADCL Mux <-- LEFT ADC input Mixer <--
MIC1 PGA <-- MIC1P/N

Элементы управления, связанные с R16, следующие:

Имя элемента управления

Функция

числовое значение

HeadphoneSwitch

Включить ряд наушников

0: выключено; 1: включено

ADC input gain

усиление АЦП

0–7, означает -4,5–6 д Б.

ADC volume

Настройка громкости ADCL/ADCR

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

ADCL Mux

ADCL Настройки мультиплексора,Толькоподдерживать0:ADC

0:ADC

ADCR Mux

ADCR Настройки мультиплексора,Толькоподдерживать0:ADC

0:ADC

AIF1 AD0L MixerADCL Switch

AIF1 AD0L Настройка микшера, включение ADCLряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF1 DA0L Switch

AIF1 AD0L Настройка микшера, включение AIF1 DA0Lряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF2 DACL Switch

AIF1 AD0L Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF2 DACRSwitch

AIF1 AD0L Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 AD0R MixerADCR Switch

AIF1 AD0R Настройка микшера, включение ADCRряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF1 DA0R Switch

AIF1 AD0R Настройка микшера, включение AIF1 DA0Rряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF2 DACL Switch

AIF1 AD0R Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF2 DACRSwitch

AIF1 AD0R Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 AD1L MixerADCL Switch

AIF1 AD1L Настройка микшера, включение ADCLряд

0: выключено; 1: включено

AIF1 AD1L MixerAIF2 DACL Switch

AIF1 AD1L Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD1R MixerADCR Switch

AIF1 AD1R Настройка микшера,ENABLEADCRряд

0: выключено; 1: включено

AIF1 AD1R MixerAIF2 DACR Switch

AIF1 AD1R Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 ADC timeslot0 mixer gain

Микшер AIF1 ADC0L/ADC0R, цифровое усиление

0:0dB; 1:-6dB;

Для микшера ADC0L бит0:AIF2 DACR;бит1:ADCL;бит2:AIF2 DACL;бит3:AIF2 DA0L; Для микшера ADC0R бит0:AIF2 DACL;бит1:ADCR;бит2:AIF2 DACR;бит3:AIF2 DA0R;

AIF1 ADC timeslot0 volume

Настройка громкости AIF1 ADC0L/ADC0R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 ADC timeslot1 mixer gain

AIF1 Микшер ADC1L/ADC1R, цифровое усиление

0:0dB; 1:-6dB;

Для микшера ADC1L бит0: ADCL; бит1: AIF2 DACL; для микшера ADC1R бит0: ADCR;

AIF1 ADC timeslot1 volume

Настройка громкости AIF1 ADC1L/ADC1R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 DAC timeslot0 volume

Настройка громкости AIF1 DAC0L/DAC0R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 DAC timeslot1 volume

Настройка громкости AIF1 DAC1L/DAC1R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1IN0L Mux

AIF1IN0L Настройки мультиплексора

0:AIF1_DA0L; 1:AIF1_DA0R;2:SUM_AIF1DA0L_AIF1DA0R;3:AVE_AIF1DA0L_AIF1DA0R

AIF1IN0R Mux

AIF1IN0R Настройки мультиплексора

0:AIF1_DA0R; 1:AIF1_DA0L;2:SUM_AIF1DA0L_AIF1DA0R;3:AVE_AIF1DA0L_AIF1DA0R

AIF1IN1L Mux

AIF1IN1L Настройки мультиплексора

0:AIF1_DA1L; 1:AIF1_DA1R;2:SUM_AIF1DA1L_AIF1DA1R;3:AVE_AIF1DA1L_AIF1DA1R

AIF1IN1R Mux

AIF1IN1R Настройки мультиплексора

0:AIF1_DA1R; 1:AIF1_DA1L;2:SUM_AIF1DA1L_AIF1DA1R;3:AVE_AIF1DA1L_AIF1DA1R

AIF1OUT0L Mux

AIF1OUT0L Настройки мультиплексора

0:AIF1_AD0L; 1:AIF1_AD0R;2:SUM_AIF1AD0L_AIF1AD0R;3:AVE_AIF1AD0L_AIF1AD0R

AIF1OUT0R Mux

AIF1OUT0R Настройки мультиплексора

0:AIF1_AD0R; 1:AIF1_AD0L;2:SUM_AIF1AD0L_AIF1AD0R;3:AVE_AIF1AD0L_AIF1AD0R

AIF1OUT1L Mux

AIF1OUT1L Настройки мультиплексора

0:AIF1_AD1L; 1:AIF1_AD1R;2:SUM_AIF1AD1L_AIF1AD1R;3:AVE_AIF1AD1L_AIF1AD1R

AIF1OUT1R Mux

AIF1OUT1R Настройки мультиплексора

0:AIF1_AD1R; 1:AIF1_AD1L;2:SUM_AIF1AD1L_AIF1AD1R;3:AVE_AIF1AD1L_AIF1AD1R

DAC mixer gain

Усиление микшера ЦАП

0:0dB; 1:-6dB;

Для микшера DACL: бит 1: AIF2 DACL; бит 3: AIF1 DAC0L; для микшера DACR бит 0: ADCR; бит 2: AIF1 DAC1R;

DAC volume

Настройка громкости DACL/DACR

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

DACL MixerADCL Switch

DACL Настройка микшера, включение ADCLряд

0: выключено; 1: включено

DACL MixerAIF1DA0L Switch

DACL Настройка микшера, включение AIF1DA0Lряд

0: выключено; 1: включено

DACL MixerAIF1DA1L Switch

DACL Настройка микшера, включение AIF1DA1Lряд

0: выключено; 1: включено

DACL MixerAIF2DACL Switch

DACL Настройка микшера, включение AIF2DACLряд

0: выключено; 1: включено

DACR MixerADCR Switch

DACR Настройка микшера,ENABLEADCRряд

0: выключено; 1: включено

DACR MixerAIF1DA0R Switch

DACR Настройка микшера, включение AIF1DA0Rряд

0: выключено; 1: включено

DACR MixerAIF1DA1R Switch

DACR Настройка микшера, включение AIF1DA1Rряд

0: выключено; 1: включено

DACR MixerAIF2DACR Switch

DACR Настройка микшера, включение AIF2DACRряд

0: выключено; 1: включено

External SpeakerSwitch

Включить наушники и PA

0: выключено; 1: включено

HP_L Mux

HP_L Настройки мультиплексора

0:DACL ; 1:Left Output Mixer

HP_R Mux

HP_R Настройки мультиплексора

0:DACR ; 1:Right Output Mixer

LEFT ADC inputMixerLout_Mixer_Switch

LEFT ADC input Настройка микшера, включение Lout Mixerряд

0: выключено; 1: включено

LEFT ADC inputMixer MIC1 boostSwitch

LEFT ADC input Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

LEFT ADC inputMixer MIC2 boostSwitch

LEFT ADC input Mixerнастраивать,Включить MIC2ряд

0: выключено; 1: включено

LEFT ADC inputMixerRout_Mixer_Switch

LEFT ADC input Микшер Настройки, включить Маршрут Mixerряд

0: выключено; 1: включено

Left Output MixerDACL Switch

Левые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Left Output MixerDACR Switch

Левые настройки выходного микшера, включите путь DACR

0: выключено; 1: включено

Left Output MixerMIC1BooststageSwitch

Настройки левого выходного микшера, включение канала MIC1

0: выключено; 1: включено

Left Output MixerMIC2BooststageSwitch

Настройки левого выходного микшера, включение канала MIC2

0: выключено; 1: включено

MIC1 boostamplifier gain

усиление MIC1

0–7, 0:0dB, 1~7:24–42dB,3dB/step

MIC2 SRC

Настройки SRC MIC2

0:MIC3; 1:MIC2

MIC2 boostamplifier gain

усиление MIC2

0–7, 0:0dB, 1~7:24–42dB,3dB/step

RIGHT ADC inputMixerLout_Mixer_Switch

RIGHT ADC inputНастройка микшера, включение LoutMixerряд

0: выключено; 1: включено

RIGHT ADC inputMixer MIC1 boostSwitch

RIGHT ADC inputMixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

RIGHT ADC inputMixer MIC2 boostSwitch

ПРАВЫЙ вход АЦПНастройка микшера, включение MIC2ряд

0: выключено; 1: включено

RIGHT ADC inputMixerRout_Mixer_Switch

RIGHT ADC inputМикшер Настройки, включить МаршрутMixerряд

0: выключено; 1: включено

Right OutputMixer DACLSwitch

Правые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Right OutputMixer DACRSwitch

Настройки правого выходного микшера, включите путь DACR

0: выключено; 1: включено

Right OutputMixerMIC1BooststageSwitch

Right Output Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

Right OutputMixerMIC2BooststageSwitch

Настройки правого выходного микшера, включение канала MIC2

0: выключено; 1: включено

digital volume

Цифровые настройки громкости

0–63, означает -73,08–0 д Б.

headphonevolume

громкость наушниковнастраивать

0–63, 0 означает отключение звука, 1–63 означает -62–0 д Б;

2.6.5 Daudio.

Аппаратные особенности

• Двусторонний I2S/PCM;

• Поддержка режима «главный-подчиненный»

  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживатьmonoиstereoмодель,поддерживать 8 ряд выходных данных и 2 ряд входных данных
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
2.6.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
<*> SoC i2s0 interface for SUNXI chips
<*> SoC i2s1 interface for SUNXI chips
2.6.5.2 Конфигурация sys_config.

Метод настройки I2S0 и I2S1 одинаковый. Ниже описан только I2S0.

Язык кода:javascript
копировать
[i2s0]
i1s0_used = 1
i2s0_channel = 2
i2s0_master = 4
i2s0_select = 1
audio_format = 1
signal_inversion = 1
over_sample_rate = 512
sample_resolution = 16
word_select_size = 32
pcm_sync_period = 256
msb_lsb_first = 0
slot_index = 0
slot_width = 16
frame_width = 1
tx_data_mode = 1
rx_data_mode = 1
i2s0_mclk =
i2s0_bclk = port:PB05<2><1><default><default>
i2s0_lrclk = port:PB04<2><1><default><default>
i2s0_dout0 = port:PB06<2><1><default><default>
i2s0_dout1 =
i2s0_dout2 =
i2s0_dout3 =
i2s0_din = port:PB07<2><1><default><default>

конфигурация i2s0

конфигурация i2s0иллюстрировать

i2s0_used

Использовать ли драйвер i2s. 0: Не используется 1: Используется;

i2s0_master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRMmaster), то есть интерфейс daudio выполняет функцию подчиненного, кодек как master2: SND_SOC_DAIFMT_CBS_CFM(codec clk slave &FRM мастер), обычно не используйте 3: SND_SOC_DAIFMT_CBM_CFS(codec clk master &frame подчиненный), обычно не используется 4: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRMведомый), то есть даудиоинтерфейс выступает в роли ведущего, кодек как подчиненный

audio_format

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is availableon 2nd BCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is availableon 1nd BCLK rising edge after LRC rising edge)

signal_inversion

1: SND_SOC_DAIFMT_NB_NF(normal bit clock +frame)2: SND_SOC_DAIFMT_NB_IF(normal BCLK + invFRM)3: SND_SOC_DAIFMT_IB_NF(invert BCLK + nor FRM)4: SND_SOC_DAIFMT_IB_IF(invert BCLK + FRM)

over_sample_rate

Поддержка 128fs/192fs/256fs/384fs/512fs/768fs

sample_resolution

Точность выборки: 16 бит, 24 бита, 32 бита

word_select_size

Поддержка 16 бит/20 бит/24 бит/32 бита

pcm_sync_period

16/32/64/128/256

msb_lsb_first

0: msb first; 1: lsb first

slot_index

0: 1st slot; 1: 2nd slot; 2: 3th slot; 3:4th slot

slot_width

8: 8 clocks width; 16: 16 clocks width

frame_width

0: long frame sync; 1: short frame sync

tx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

rx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

i2s0_mclk

значок i2s0_mclk

i2s0_bclk

i2s0_bclk пин-код

i2s0_lrclk

значок i2s0_lrclk

i2s0_dout0

i2s0_dout контактный

i2s0_din

i2s0_din контактный

2.6.6 Метод аудиотестирования ставок

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.6.6.1 Играть
Язык кода:javascript
копировать
проходитьспикериграть
amixer cset name = 'AIF1IN0L Mux' 'AIF1_DA0L';
amixer cset name = 'AIF1IN0R Mux' 'AIF1_DA0R';
amixer cset name = 'DACL Mixer AIF1DA0L Switch' 1;
amixer cset name = 'DACR Mixer AIF1DA0R Switch' 1;
amixer cset name = 'HP_L Mux' 'DACL HPL Switch' ;
amixer cset name = 'HP_R Mux' 'DACR HPR Switch';
amixer cset name = 'Переключатель внешнего динамика' 1;
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
Язык кода:javascript
копировать
mixer cset name='AIF1IN0L Mux' 'AIF1_DA0L';
amixer cset name='AIF1IN0R Mux' 'AIF1_DA0R';
amixer cset name='DACL Mixer AIF1DA0L Switch' 1;
amixer cset name='DACR Mixer AIF1DA0R Switch' 1;
amixer cset name='HP_L Mux' 'DACL HPL Switch' ;
amixer cset name='HP_R Mux' 'DACR HPR Switch';
amixer cset name='Headphone Switch' 1;
aplay -Dhw:sndcodec /mnt/UDISK/1KHz_0dB_16000.wav

Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:

Язык кода:javascript
копировать
amixer -Dhw:sndcodec cset name='headphone volume' 58
2.6.6.2 Запись

Использование аудиокодека для монозаписи

Язык кода:javascript
копировать
amixer cset name='LEFT ADC input Mixer MIC1 boost Switch' 1
amixer cset name='AIF1 AD0L Mixer ADCL Switch' 1
amixer cset name='AIF1OUT0L Mux' 'AIF1_AD0L'
amixer cset name='MIC1 boost amplifier gain' 4
arecord -Dhw:sndcodec -f S16_LE -r 16000 -c 1 /tmp/test.wav

2.7 Аудиоинтерфейс R18

2.7.1 Аппаратные ресурсы

R18 содержит 4 аудиомодуля, а именно встроенный AudioCodec и Daudio0, Daudio1 и Daudio2.

2.7.2 Источник синхронизации

В R18 источники синхронизации четырех аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.

2.7.3 Структура кода

Язык кода:javascript
копировать
linux-4.4/sound/soc/sunxi/
├── sun50iw1-codec.c // codecводить машину
├── sun50iw1-codec.h
├── sun50iw1-sndcodec.c // codec machineводить машину
├── sunxi-inter-i2s.c // codec platformводить машину
├── sunxi-daudio.c // daudio platformводить машину
├── sunxi-daudio.h
├── sunxi-snddaudio.c // daudio machineводить машину
├── sunxi-snddaudio.h
├── sunxi-pcm.c //общий файл,Обеспечить регистрациюplatformводить машинуизинтерфейси Связанные буквычислонабор
├── sunxi-pcm.h
├── sunxi_rw_func.c //Общий файл, интерфейс для чтения и записи аналоговых/цифровых регистров
├── sunxi_rw_func.h
├── spdif-utils.c // spdif codecводить машину
├── sunxi-sndspdif.c // spdif machineводить машину
├── sunxi-spdif.c // spdif platformводить машину
├── sunxi-spdif.h
├── sunxi-hdmi.c // hdmi codecводить машину
└── sunxi-sndhdmi.c // hdmi machineводить машину
Язык кода:javascript
копировать
hdmi Модель платформы: sunxi-daudio.c.
linux-4.4/sound/soc/soc-utils.c // snd-soc-dummmyводить машина,можно использовать для аудио модель кодека
linux-4.4/sound/soc/codecs/ac108.c // ac108 codecводить машину
linux-4.4/sound/soc/codecs/tas5731.c // кодек-привод цифрового усилителя tas5731 машину

2.7.4 AudioCodec

Аппаратные особенности

• Два ЦАП

  • поддержка16 бит, точность дискретизации 24 бита
  • поддерживать8KHz~192KHzЧастота выборки
  • Двусторонний АЦП
  • поддержка16 бит, точность дискретизации 24 бита
  • поддерживать8KHz~48KHzЧастота выборки
  • Четыре аналоговых выхода:
  • Один стереовыход для наушников (EAROUTP, EAROUTN)
  • Один стереофонический выход (PHONEOUTP, PHONEOUTN)
  • Один выход для стереонаушников (HPOUTL, HPOUTR)
  • Один линейный стереовыход (LINEOUTL, LINEOUTR)
  • Четыре аналоговых входа: MIC1, MIC2, линейный вход, телефонный вход.
  • поддерживатьheadphoneводить машину
  • поддерживатьearpieceводить машину
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддержкаDRCФункция для DAC
  • утверждениеAGC для ADC,DRCФункция
2.7.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun50iw1 Codec Support
2.7.4.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[sndcodec]
sndcodec_used = 0x1
aif2fmt = 0x3
aif3fmt = 0x3
aif2master = 0x1
linein_detect = port:PH05<6><default><default><default>
hp_detect_case = 0x1
;------------------------------------------------------------------------------
[i2s]
i2s_used = 0x1
;-------------------------------------------------------------------------------
[codec]
codec_used = 0x1
headphonevol = 0x38
Язык кода:javascript
копировать
spkervol = 0x1d
earpiecevol = 0x1e
maingain = 0x4
headsetmicgain = 0x4
adcagc_cfg = 0x0
adcdrc_cfg = 0x0
adchpf_cfg = 0x1
dacdrc_cfg = 0x0
dachpf_cfg = 0x0
aif2config = 0x0
aif3config = 0x0
aif1_lrlk_div = 0x40
aif2_lrlk_div = 0x40
pa_sleep_time = 0x0a
dac_digital_vol = 0x9898
gpio-spk =

конфигурация sndcodec,Прямо сейчас Сопутствующие конфигурации драйвера машины

конфигурация sndcodec

конфигурация sndcodecиллюстрировать

sndcodec_used Использовать ли драйвер sndcodec.

0: Не используется 1: Используется;

linein_detect

контакт обнаружения линии

hp_detect_case

jack irq level, 0:low; 1:high

конфигурация кодека,Прямо сейчасвстроенныйaudiocodecводить машинуиз Связанный Конфигурация

конфигурация кодека

конфигурация кодекаиллюстрировать

codec_used

Использовать ли драйвер кодека.0: Не используется 1: Используется;

headphonevol

headphone громкость, настраиваемый диапазон 0~0x3f, 0 означает отключение звука, 163поверхность<br/>Показывать-62dB0dB, 1dB/step

spkervol

spk(lineout) громкость, можно установить в диапазоне 0~0x1f, 0 или 1 означает немой, 231<br/>поверхность Показывать-43.5dB0dB, 1.5dB/step

earpiecevol

earpiece громкость, можно установить в диапазоне 0~0x1f, 0 или 1 означает немой, 231поверхность<br/>Показывать-43.5dB0dB, 1.5dB/step

maingain

Усиление по умолчанию MIC1, 0–7, 0:0 д Б, 1–7:24–42 д Б, 3 д Б/шаг

headsetmicgain

Усиление по умолчанию MIC2, 0–7, 0:0 д Б, 1–7:24–42 д Б, 3 д Б/шаг

adcagc_cfg

Использовать ли adcagc. 0: Не применимо; 1 :использовать

adcdrc_cfg

Использовать ли adcdrc. 0: Не применимо; 1 :использовать

adchpf_cfg

Использовать ли adchpf. 0: Не применимо; 1 :использовать

dacdrc_cfg

Использовать ли dacdrc. 0: Не применимо; 1 :использовать

dachpf_cfg

Использовать ли dachpf. 0: Не применимо; 1 :использовать

aif1_lrlk_div

lrck коэффициент деления частоты aif1

pa_sleep_time

Время ожидания перед включением pa, ед. мс

dac_digital_vol

Цифровая громкость DACL/DACR, 0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB, 0,75 д Б/шаг, например 0xA0 означает 0 д Б, 0x98 означает -6 д Б

конфигурация кодека

конфигурация кодекаиллюстрировать

gpio-spk

PIN-код включения PA

2.7.4.3 путь данных кодека
Язык кода:javascript
копировать
Воспроизведение песен через HPOUTL/R
AIF1DACL --> AIF1IN0L Mux --> DACL Mixer --> HP_L Mux --> HPOUTL
AIF1DACR --> AIF1IN0R Mux --> DACR Mixer --> HP_R Mux --> HPOUTR
От MIC1,2запись
AIF1ADCL <-- AIF1OUT0L Mux <-- AIF1 AD0L Mixer <-- ADCL Mux <-- LADC input Mixer <-- MIC1
PGA <-- MIC1P/N
AIF1ADCR <-- AIF1OUT0R Mux <-- AIF1 AD0R Mixer <-- ADCR Mux <-- RADC input Mixer <-- MIC2
PGA <-- MIC2P/N

Элементы управления, связанные с R18, следующие:

Имя элемента управления

Функция

числовое значение

Headphone Switch

Включить ряд наушников

0: выключено; 1: включено

Linein_detectSwitch

Обнаружение линейного входа включено

0: выключено; 1: включено

ADC input gaincontrol

усиление АЦП

0–7, означает -4,5–6 д Б.

ADC volume

Настройка громкости ADCL/ADCR

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

ADCL Mux

ADCL Настройки мультиплексора,Толькоподдерживать0:ADC

0:ADC

ADCR Mux

ADCR Настройки мультиплексора,Толькоподдерживать0:ADC

0:ADC

AIF1 AD0L MixerADCL Switch

AIF1 AD0L Настройка микшера, включение ADCLряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF1 DA0L Switch

AIF1 AD0L Настройка микшера, включение AIF1 DA0Lряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF2 DACL Switch

AIF1 AD0L Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF2 DACR Switch

AIF1 AD0L Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 AD0R MixerADCR Switch

AIF1 AD0R Настройка микшера, включение ADCRряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF1 DA0R Switch

AIF1 AD0R Настройка микшера, включение AIF1 DA0Rряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF2 DACL Switch

AIF1 AD0R Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF2 DACR Switch

AIF1 AD0R Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 AD1L MixerADCL Switch

AIF1 AD1L Настройка микшера, включение ADCLряд

0: выключено; 1: включено

AIF1 AD1L MixerAIF2 DACL Switch

AIF1 AD1L Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD1R MixerADCR Switch

AIF1 AD1R Настройка микшера,ENABLEADCRряд

0: выключено; 1: включено

AIF1 AD1R MixerAIF2 DACR Switch

AIF1 AD1R Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 ADC timeslot0 mixer gain

Микшер AIF1 ADC0L/ADC0R, цифровое усиление

0:0dB; 1:-6dB;

Для микшера ADC0L бит0:AIF2 DACR;бит1:ADCL;бит2:AIF2 DACL;бит3:AIF2 DA0L; Для микшера ADC0R бит0:AIF2 DACL;бит1:ADCR;бит2:AIF2 DACR;бит3:AIF2 DA0R;

AIF1 ADC timeslot0 volume

Настройка громкости AIF1 ADC0L/ADC0R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 ADC timeslot1 mixer gain

AIF1 ADC1L/ADC1RМикшер, цифровое усиление

0:0dB; 1:-6dB;

Для микшера ADC1L бит0: ADCL; бит1: AIF2 DACL; для микшера ADC1R бит0: ADCR;

AIF1 ADC timeslot1 volume

Настройка громкости AIF1 ADC1L/ADC1R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 DAC timeslot0 volume

Настройка громкости AIF1 DAC0L/DAC0R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 DAC timeslot1 volume

Настройка громкости AIF1 DAC1L/DAC1R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1IN0L Mux

AIF1IN0L Настройки мультиплексора

0:AIF1_DA0L; 1:AIF1_DA0R;2:SUM_AIF1DA0L_AIF1DA0R;3:AVE_AIF1DA0L_AIF1DA0R

AIF1IN0R Mux

AIF1IN0R Настройки мультиплексора

0:AIF1_DA0R; 1:AIF1_DA0L;2:SUM_AIF1DA0L_AIF1DA0R;3:AVE_AIF1DA0L_AIF1DA0R

AIF1IN1L Mux

AIF1IN1L Настройки мультиплексора

0:AIF1_DA1L; 1:AIF1_DA1R;2:SUM_AIF1DA1L_AIF1DA1R;3:AVE_AIF1DA1L_AIF1DA1R

AIF1IN1R Mux

AIF1IN1R Настройки мультиплексора

0:AIF1_DA1R; 1:AIF1_DA1L;2:SUM_AIF1DA1L_AIF1DA1R;3:AVE_AIF1DA1L_AIF1DA1R

AIF1OUT0L Mux

AIF1OUT0L Настройки мультиплексора

0:AIF1_AD0L; 1:AIF1_AD0R;2:SUM_AIF1AD0L_AIF1AD0R;3:AVE_AIF1AD0L_AIF1AD0R

AIF1OUT0R Mux

AIF1OUT0R Настройки мультиплексора

0:AIF1_AD0R; 1:AIF1_AD0L;2:SUM_AIF1AD0L_AIF1AD0R;3:AVE_AIF1AD0L_AIF1AD0R

AIF1OUT1L Mux

AIF1OUT1L Настройки мультиплексора

0:AIF1_AD1L; 1:AIF1_AD1R;2:SUM_AIF1AD1L_AIF1AD1R;3:AVE_AIF1AD1L_AIF1AD1R

AIF1OUT1R Mux

AIF1OUT1R Настройки мультиплексора

0:AIF1_AD1R; 1:AIF1_AD1L;2:SUM_AIF1AD1L_AIF1AD1R;3:AVE_AIF1AD1L_AIF1AD1R

DAC mixer gain

Усиление микшера ЦАП

0:0dB; 1:-6dB;

Для микшера DACL: бит 1: AIF2 DACL; бит 3: AIF1 DAC0L; для микшера DACR бит 0: ADCR; бит 2: AIF1 DAC1R;

DAC volume

Настройка громкости DACL/DACR

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

DACL Mixer ADCLSwitch

DACL Настройка микшера, включение ADCLряд

0: выключено; 1: включено

DACL MixerAIF1DA0L Switch

DACL Настройка микшера, включение AIF1DA0Lряд

0: выключено; 1: включено

DACL MixerAIF1DA1L Switch

DACL Настройка микшера, включение AIF1DA1Lряд

0: выключено; 1: включено

DACL MixerAIF2DACL Switch

DACL Настройка микшера, включение AIF2DACLряд

0: выключено; 1: включено

DACR Mixer ADCRSwitch

DACR Настройка микшера,ENABLEADCRряд

0: выключено; 1: включено

DACR MixerAIF1DA0R Switch

DACR Настройка микшера, включение AIF1DA0Rряд

0: выключено; 1: включено

DACR MixerAIF1DA1R Switch

DACR Настройка микшера, включение AIF1DA1Rряд

0: выключено; 1: включено

DACR MixerAIF2DACR Switch

DACR Настройка микшера, включение AIF2DACRряд

0: выключено; 1: включено

EAR Mux

EAR Настройки мультиплексора

0:DACR; 1:DACL; 2:Right AnalogMixer; 3:Left Analog Mixer

Earpiece Switch

Включить ряд наушников

0: выключено; 1: включено

External SpeakerSwitch

Включить наушники и PA

0: выключено; 1: включено

HP_L Mux

HP_L Настройки мультиплексора

0:DACL ; 1:Left Output Mixer

HP_R Mux

HP_R Настройки мультиплексора

0:DACR ; 1:Right Output Mixer

LADC input MixerLINEINL

LADC вход Микшернастройка, включение LINEINLряд

0: выключено; 1: включено

LADC input MixerMIC1 boost Switch

Настройки микшера входа LADC, включение канала MIC1

0: выключено; 1: включено

LADC input MixerMIC2 boost Switch

Настройки микшера входа LADC, включение канала MIC2

0: выключено; 1: включено

LADC input Mixerl_output mixerSwitch

Настройка входного микшера LADC, включение l_outputmixerряд

0: выключено; 1: включено

LADC input Mixerr_output mixerSwitch

Настройка входного микшера LADC, включение r_outputmixerряд

0: выключено; 1: включено

LINEINL/R to L_Routput mixer gainLeft Output MixerDACL Switch

Левые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Left Output MixerDACR Switch

Левые настройки выходного микшера, включите путь DACR

0: выключено; 1: включено

Left Output MixerLINEINL Switch

Left Output Настройка микшера,ENABLE LINEINLряд

0: выключено; 1: включено

Left Output MixerMIC1BooststageSwitch

Настройки левого выходного микшера, включение канала MIC1

0: выключено; 1: включено

Left Output MixerMIC2BooststageSwitch

Настройки левого выходного микшера, включение канала MIC2

0: выключено; 1: включено

MIC1 boostamplifier gain

усиление MIC1

0–7, 0:0dB, 1~7:24–42dB,3dB/step

MIC1_G booststage output mixercontrol

Выход от MIC1 до L или R. Усиление микшера.

0–7, означает -4,5–6 д Б.

MIC2 BST stage toL_R outp mixergain

Выход MIC2 на левый или правый уровень усиления микшера

0–7, означает -4,5–6 д Б.

MIC2 SRC

Настройки SRC MIC2

0:MIC3; 1:MIC2

MIC2 boost AMPgain control

усиление MIC2

0–7, 0:0dB, 1~7:24–42dB,3dB/step

RADC input MixerLINEINR Switch

Настройка микшера входа RADC, включение LINEINRряд

0: выключено; 1: включено

RADC input MixerMIC1 boost Switch

Настройки микшера входа RADC, включение канала MIC1

0: выключено; 1: включено

RADC input MixerMIC2 boost Switch

Настройки микшера входа RADC, включение канала MIC2

0: выключено; 1: включено

RADC input Mixerl_output mixerSwitch

RADC input Настройка микшера, включение l_outputmixerряд

0: выключено; 1: включено

RADC input Mixerl_output Switch

RADC input Настройка микшера, включение l_outputmixerряд

0: выключено; 1: включено

Right Output MixerDACL Switch

Правые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Right Output MixerDACR Switch

Настройки правого выходного микшера, включите путь DACR

0: выключено; 1: включено

Right Output MixerLINEINR Switch

Right Output Настройка микшера,ENABLE LINEINRряд

0: выключено; 1: включено

Right Output MixerMIC1BooststageSwitch

Right Output Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

Right Output MixerMIC2BooststageSwitch

Настройки правого выходного микшера, включение канала MIC2

0: выключено; 1: включено

SPK_L Mux

SPK_L Настройки мультиплексора

0:MIXEL Switch; 1:MIXL MIXRSwitch

SPK_R Mux

SPK_R Настройки мультиплексора

0:MIXER Switch; 1:MIXR MIXLSwitch

digital volume

Цифровые настройки громкости

0–63, означает -73,08–0 д Б.

earpiece volume

настройка громкости наушника

0–31, означает -43,5–0 д Б.

headphone volume

громкость наушниковнастраивать

0–63, 0 означает отключение звука, 1–63 означает -62–0 д Б;

speaker volume

настройка громкости динамика (линейного выхода)

0–31, означает -43,5–0 д Б.

2.75 Daudio.

Аппаратные особенности

• Трехсторонний I2S/PCM;

• Поддержка режима «главный-подчиненный»

  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
2.7.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
2.7.5.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[snddaudio0]
snddaudio0_used = 1
;-----------------------------------------------------------------------------
[daudio0]
daudio0_used = 1
pcm_lrck_period = 0x60
pcm_lrckr_period = 0x01
slot_width_select = 0x18
pcm_lsb_first = 0x0
tx_data_mode = 0x0
rx_data_mode = 0x0
daudio_master = 0x04
audio_format = 0x01
signal_inversion = 0x01
Язык кода:javascript
копировать
frametype = 0x0
tdm_config = 0x01
clk_active = 0x0

конфигурация sndaudio0, то есть соответствующая конфигурация драйвера машины daudio0

конфигурация sndaudio

конфигурация sndaudioиллюстрировать

snddaudio0_used

Использовать ли драйвер sndaudio. 0: Не используется 1: Используется;

конфигурация daudio0, то есть соответствующая конфигурация драйвера платформы daudio0

конфигурация даудио

конфигурация даудиоиллюстрировать

daudio0_used

Использовать ли аудиодрайвер. 0: Не используется 1: Используется;

daudio_master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRMmaster), то есть интерфейс daudio выполняет функцию подчиненного, кодек как master2: SND_SOC_DAIFMT_CBS_CFM(codec clk slave &FRM мастер), обычно не используйте 3: SND_SOC_DAIFMT_CBM_CFS(codec clk master &frame подчиненный), обычно не используется 4: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRMведомый), то есть даудиоинтерфейс выступает в роли ведущего, кодек как подчиненный

audio_format

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is availableon 2nd BCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is availableon 1nd BCLK rising edge after LRC rising edge)

signal_inversion

1: SND_SOC_DAIFMT_NB_NF(normal bit clock +frame)2: SND_SOC_DAIFMT_NB_IF(normal BCLK + invFRM)3: SND_SOC_DAIFMT_IB_NF(invert BCLK + nor FRM)4: SND_SOC_DAIFMT_IB_IF(invert BCLK + FRM)

slot_width_select

Поддержка ширины 8 бит, 16 бит, 32 бита

pcm_lrck_period

в целом Настраиваемый 16/32/64/128/256 bclk

msb_lsb_first

0: msb first; 1: lsb first

frametype

0: short frame = 1 clock width; 1: long frame = 2 clock width

tdm_config

0: pcm mode; 1: i2s mode

tx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bita-law

конфигурация даудио

конфигурация даудиоиллюстрировать

rx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bit a-law

Подробную информацию о конфигурации внешнего кодека Daudio и цифрового усилителя мощности см. в разделах «Внешний кодек R18: ac108» и «Внешний цифровой усилитель мощности R18 TAS5731».

2.7.6 SPDIF

Аппаратные особенности

• Поддержка S/PDIF_OUT

  • поддерживатьmonoиstereoмодель
  • выходподдерживать22.05kHz, 24kHz, 32kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHzЧастота выборки
  • поддержка16 бит, точность дискретизации 24 бита
2.7.6.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner SPDIF Support
2.7.6.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[spdif]
spdif_used = 0
[sndspdif]
sndspdif_used = 0

конфигурация spdif,Прямо сейчас Связанные конфигурации драйвера платформы

конфигурация spdif

конфигурация spdifиллюстрировать

spdif_used

Использовать ли драйвер spdif. 0: Не используется 1: Используется;

sndконфигурация spdif,Прямо сейчас Сопутствующие конфигурации драйвера машины

sndконфигурация spdif

sndконфигурация spdifиллюстрировать

sndspdif_used

Использовать ли драйвер sndspdif. 0: Не используется 1: Используется;

  • Нет необходимости настраивать информацию, связанную с драйвером кодека, в sys_config.

Поскольку «spdif-utils» по умолчанию настроен в качестве драйвера кодека в коде драйвера машины, путь к коду следующий:

Язык кода:javascript
копировать
linux-4.4/sound/soc/sunxi/spdif-utils.c

2.7.7 Кодек плагина: AC108

Стандартный тюльпан-нома R18 оснащен дочерней платой микрофона, содержащей два AC108, каждый из которых может записывать до 4 каналов.

Ниже приводится краткое введение в настройку R18 для использования AC108.

2.7.7.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
CODEC drivers --->
<*> Sunxi AC108 Codec
2.7.7.2 sys_config&конфигурация дтс.

R18 управляет AC108 через twi1, а i2s0 используется для передачи аудиоданных.

Некоторые конфигурации twi можно настроить через dts:

Язык кода:javascript
копировать
twi1: twi@0x01c2b000 {
status = "okay";
ac108@35{
compatible = "Allwinnertech,MicArray_1";
debug_mode = <0>;
pga_gain = <0x32>;
ref_pga_gain = <0x08>;
ref_chip_addr = <0x3b>;
ref_channel_num = <0x2>;
pa_double_used = <0x1>;
Язык кода:javascript
копировать
codec_mic_used = <0x0>;
gpio-power = <&r_pio PL 12 1 1 1 1>;
twi_bus = <1>;
voltage_enable = "nocare";
power_vol = <0x0>;
slot_width = <0x18>;
reg = <0x35>;
};
ac108@3b{
compatible = "Allwinnertech,MicArray_0";
reg = <0x3b>;
debug_mode = <0>;
pga_gain = <0x32>;
ref_pga_gain = <0x08>;
ref_chip_addr = <0x3b>;
ref_channel_num = <0x2>;
pa_double_used = <0x1>;
codec_mic_used = <0x0>;
twi_bus = <1>;
voltage_enable = "nocare";
gpio-power = <&r_pio PL 12 1 1 1 1>;
power_vol = <0x0>;
slot_width = <0x18>;
};
};

Часть I2S должна настроить sys_config и dts.

  • Часть sys_config в основном включает форматы, связанные с i2s, и ее необходимо настроить в соответствии со спецификацией AC108. По умолчанию в SDK используется daudio0. Конфигурация может нормально работать с AC108.
  • В части dts в основном необходимо указать имя кодека ASOC и драйвера codec-dai, например:
Язык кода:javascript
копировать
snddaudio0:sound@1 {
sunxi,snddaudio-codec = "ac108.1-0035";
sunxi,snddaudio-codec-dai = "ac108-pcm1";
};
2.7.7.3 Использование

После входа в систему используйте команду cat /proc/asound/cards, чтобы просмотреть текущую информацию о звуковой карте. Если найден звук, связанный с ac108, карту, что указывает на то, что драйвер загружен нормально.

Никаких дополнительных настроек звука не требуется, вы можете напрямую использовать следующие настройки звука:

Язык кода:javascript
копировать
arecord -Dhw:sndac10810035 -f S16_LE -r 16000 -c 8 /tmp/test.wav

2.7.8 Внешний цифровой усилитель TAS5731.

Стандартный тюльпан-нома R18 оснащен цифровым усилителем TAS5731.

Ниже приводится краткое введение в настройку и использование tas5731 в R18.

2.7.8.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
CODEC drivers --->
<*> TAS5731 PA
2.7.8.2 sys_config&конфигурация дтс.

R18 управляет цифровым усилителем мощности через TWI0, а I2S1 используется для передачи аудиоданных.

Некоторые конфигурации twi можно настроить через dts:

Язык кода:javascript
копировать
twi0: twi@0x01c2ac00 {
status = "okay";
tas5731-codec@1b{
compatible = "Allwinnertech,tas5731_PA";
tas5731_power = <&pio PH 8 1 1 1 1>;
tas5731_reset = <&pio PB 2 1 1 1 1>;
amp_poweren = <&r_pio PL 7 1 1 1 1>;
regulator_name = "vcc-amp";
reg = <0x1b>;
};
};

Часть I2S должна настроить sys_config и dts.

  • Часть sys_config в основном включает в себя форматы, связанные с i2s, и ее необходимо настроить в соответствии с конкретным цифровым усилителем. По умолчанию в SDK используется daudio1. Конфигурация может нормально работать с ta5731.
  • В части dts в основном необходимо указать имя кодека ASOC и драйвера codec-dai, например:
Язык кода:javascript
копировать
snddaudio1:sound@2 {
sunxi,snddaudio-codec = "tas5731-codec.0-001b";
sunxi,snddaudio-codec-dai = "tas5731_audio";
};
2.7.8.3 Использование

После входа в систему используйте команду cat /proc/asound/cards, чтобы просмотреть текущую информацию о звуковой карте. Если вы обнаружите звуковую карту, связанную с tas5731, карту, что указывает на то, что драйвер загружен нормально.

Никаких дополнительных настроек звука не требуется.,Вы можете напрямую использовать следующий заказ для выполнения Воспроизведения. песен:

Язык кода:javascript
копировать
aplay -Dhw:sndtas5731codec /mnt/UDISK/16000-stere-10s.wav

2.7.9 Аудиоинтерфейс HDMI

R18 использует I2S2 для передачи аудиоданных на модуль HDMI, а I2S2 можно использовать только для HDMI.

2.7.9.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner HDMI Audio Support
<*> Allwinner Digital Audio Support
2.7.9.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[daudio2]
daudio2_used = 1
[sndhdmi]
sndhdmi_used = 1

конфигурация daudio2, то есть daudio2 Связанные конфигурации драйвера платформы

конфигурация даудио2

конфигурация даудио2иллюстрировать

daudio2_used

Использовать ли драйвер daudio2. 0: Не используется 1: Используется;

конфигурация sndhdmi, то есть sndhdmi Сопутствующие конфигурации драйвера машины

конфигурация sndhdmi

конфигурация sndhdmiиллюстрировать

sndhdmi_used

Использовать ли драйвер sndhdmi. 0: Не используется 1: Используется;

2.7.10 Метод аудиотестирования ставок.

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.7.10.1Играть
Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='AIF1IN0L Mux' 'AIF1_DA0L'
amixer -Dhw:audiocodec cset name='AIF1IN0R Mux' 'AIF1_DA0R'
amixer -Dhw:audiocodec cset name='DACL Mixer AIF1DA0L Switch' 1
amixer -Dhw:audiocodec cset name='DACR Mixer AIF1DA0R Switch' 1
amixer -Dhw:audiocodec cset name='HP_R Mux' 'DACR HPR Switch'
amixer -Dhw:audiocodec cset name='HP_L Mux' 'DACL HPL Switch'
amixer -Dhw:audiocodec cset name='Headphone Switch' 1
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav

Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:

Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='headphone volume' 60
2.7.10.2 Запись
Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='LADC input Mixer MIC1 boost Switch' 1
amixer -Dhw:audiocodec cset name='RADC input Mixer MIC2 boost Switch' 1
amixer -Dhw:audiocodec cset name='AIF1 AD0L Mixer ADCL Switch' 1
amixer -Dhw:audiocodec cset name='AIF1 AD0R Mixer ADCR Switch' 1
amixer -Dhw:audiocodec cset name='AIF1OUT0L Mux' 'AIF1_AD0L'
amixer -Dhw:audiocodec cset name='AIF1OUT0R Mux' 'AIF1_AD0R'
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 /tmp/test.wav

Аудиоинтерфейс 2.8 R30

2.8.1 Аппаратные ресурсы

R30 содержит 5 аудиомодулей, а именно встроенный AudioCodec, Daudio0, Daudio1, Daudio2 и Dmic.

2.8.2 Источник синхронизации

В R30 источники синхронизации пяти аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая серии 48k и 44,1k соответственно. Воспроизведите запись.

2.8.3 Структура кода

Язык кода:javascript
копировать
linux-4.9/sound/soc/sunxi/
├── sun50iw3-codec.c // codecводить машину
├── sun50iw3-codec.h
├── sun50iw3-sndcodec.c // codec machineводить машину
├── sunxi-inter-i2s.c // codec platformводить машину
Язык кода:javascript
копировать
├── sunxi-inter-i2s.h
├── sunxi-daudio.c // daudio platformводить машину
├── sunxi-daudio.h
├── sunxi-dmic.c // dmic platformводить машину
├── sunxi-dmic.h
├── sunxi-pcm.c //общий файл,Обеспечить регистрациюplatformводить машинуизинтерфейси Связанные буквычислонабор
├── sunxi-pcm.h
├── sunxi_rw_func.c //Общий файл, интерфейс для чтения и записи аналоговых/цифровых регистров
├── sunxi_rw_func.h
├── sunxi-snddaudio.c // daudio machineводить машину
├── sunxi-snddaudio.h
├── sunxi-snddmic.c // dmic machineводить машину
└── sunxi-snddmic.h
linux-4.9/sound/soc/codecs/dmic.c // dmic codecводить машину
linux-4.9/sound/soc/soc-utils.c // daudio codecводить машину

2.8.4 AudioCodec

Аппаратные особенности

• Два ЦАП

  • поддержка16 бит, точность дискретизации 24 бита
  • поддерживать8KHz~192KHzЧастота выборки
  • Двусторонний АЦП
  • поддержка16 бит, точность дискретизации 24 бита
  • поддерживать8KHz~48KHzЧастота выборки
  • Четыре аналоговых выхода:
  • Один стереовыход для наушников (EAROUTP, EAROUTN)
  • Один стереофонический выход (PHONEOUTP, PHONEOUTN)
  • Один выход для стереонаушников (HPOUTL, HPOUTR)
  • Один линейный стереовыход (LINEOUTL, LINEOUTR)
  • Четыре аналоговых входа: MIC1, MIC2, линейный вход, телефонный вход.
  • поддерживатьheadphoneводить машину
  • поддерживатьearpieceводить машину
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддержкаDRCФункция для DAC
  • утверждениеAGC для ADC,DRCФункция
2.8.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun50iw3 Codec Support
2.8.4.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[sndcodec]
sndcodec_used = 0x1
aif2fmt = 0x3
aif3fmt = 0x3
aif2master = 0x1
hp_detect_case = 0x0
;------------------------------------------------------------------------------
[i2s]
i2s_used = 0x1
;-------------------------------------------------------------------------------
[codec]
codec_used = 0x1
headphonevol = 0x3b
spkervol = 0x1b
maingain = 0x4
headsetmicgain = 0x4
adcagc_cfg = 0x0
adcdrc_cfg = 0x0
adchpf_cfg = 0x0
dacdrc_cfg = 0x0
dachpf_cfg = 0x0
aif2config = 0x0
aif3config = 0x0
gpio-spk = port:PB3<1><default><default><0>

конфигурация sndcodec,Прямо сейчас Сопутствующие конфигурации драйвера машины

конфигурация sndcodec

конфигурация sndcodecиллюстрировать

sndcodec_used

Использовать ли драйвер sndcodec. 0: Не используется 1: Используется;

aif2fmt

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is available on 2ndBCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is available on 1ndBCLK rising edge after LRC rising edge)

aif3fmt

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is available on 2ndBCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is available on 1ndBCLK rising edge after LRC rising edge)

aif2master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRM master), то есть интерфейс aif выбирает мастер-режим 2: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRM ведомый), то есть интерфейс aif выбирает ведомый режим

hp_detect_case

jack irq level, 0:low; 1:high

Конфигурация I2S, т.е. аудиокодек Связанные конфигурации драйвера платформы,I2S используется для внутреннего интерфейса AIF (с I2S0,Интерфейс I2S1 тут ни при чем)

конфигурация i2s

конфигурация i2sиллюстрировать

i2s_used

Использовать ли драйвер i2s. 0: Не используется 1: Используется;

конфигурация кодека,Прямо сейчасвстроенныйaudiocodecводить машинуиз Связанный Конфигурация

конфигурация кодека

конфигурация кодекаиллюстрировать

codec_used

Использовать ли драйвер кодека. 0: Не используется 1: Используется;

headphonevol

Инициализируйте громкость наушников, устанавливаемый диапазон: 00x3f, что означает 0–62 д Б, -1 д Б/шаг.

spkervol

Инициализировать динамик громкость, настраиваемый диапазон 0~0x1f, 0 или 1 означает немой,231 означает -43,5д Б0д Б, 1.5dB/step

headsetmicgain

Относится к виду MIC2, настраиваемый диапазон 0~0x7, 0:0dB, 17:1533 д Б, 3 д Б/шаг, обычно устанавливается на 0x4, что составляет 24 д Б.

adcinputgain

коэффициент усиления adc, устанавливаемый диапазон — 00x7, что означает -4,56 д Б, 1,5 д Б/шаг. Общая настройка — 0x3, что соответствует 0 д Б.

adcagc_cfg

Использовать ли adcagc. 0: Не используется; 1 :использовать

adcdrc_cfg

Использовать ли adcdrc. 0: Не используется; 1 :использовать

adchpf_cfg

Использовать ли adchpf. 0: Не используется; 1 :использовать

dacdrc_cfg

Использовать ли dacdrc. 0: Не используется; 1 :использовать

aif2config

Использовать ли aif2. 0: Не используется; 1 :использовать

aif3config

Использовать ли aif3. 0: Не используется; 1 :использовать

gpio-spk

PIN-код включения PA

2.8.4.3 путь данных кодека
Язык кода:javascript
копировать
проходитьSPKL/RВоспроизведение песен
AIF1DACL --> AIF1IN0L Mux --> DACL Mixer --> Left Output Mixer --> SPK_L Mux --> SPKL
AIF1DACR --> AIF1IN0R Mux --> DACR Mixer --> Right Output Mixer --> SPK_R Mux --> SPKR
Воспроизведение песен через LINEOUTL/R
AIF1DACL --> AIF1IN0L Mux --> DACL Mixer --> Left Output Mixer --> LINEOUTL Mux -->
LINEOUTL
AIF1DACR --> AIF1IN0R Mux --> DACR Mixer --> Right Output Mixer --> LINEOUTR Mux -->
LINEOUTR
Воспроизведение песен через HPOUTL/R
AIF1DACL --> AIF1IN0L Mux --> DACL Mixer --> HP_L Mux --> HPOUTL
AIF1DACR --> AIF1IN0R Mux --> DACR Mixer --> HP_R Mux --> HPOUTR
От MIC1,2запись
AIF1ADCL <-- AIF1OUT0L Mux <-- AIF1 AD0L Mixer <-- LADC input Mixer <-- MIC1 PGA <-- MIC1P/
N
AIF1ADCR <-- AIF1OUT0R Mux <-- AIF1 AD0R Mixer <-- RADC input Mixer <-- MIC2 PGA <-- MIC2P/
N
От LINEINL/Rзапись
AIF1ADCL <-- AIF1OUT0L Mux <-- AIF1 AD0L Mixer <-- LADC input Mixer <-- LINEINN
AIF1ADCR <-- AIF1OUT0R Mux <-- AIF1 AD0R Mixer <-- RADC input Mixer <-- LINEINP

Средства контроля, связанные с R30, следующие:

Имя элемента управления

Функция

числовое значение

Headphone Switch

Включить ряд наушников

0: выключено; 1: включено

Lineout Switch

Включить линейный выход

0: выключено; 1: включено

ADC input gaincontrol

усиление АЦП

0–7, означает -4,5–6 д Б.

ADC volume

Настройка громкости ADCL/ADCR

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 AD0L MixerADCL Switch

AIF1 AD0L Настройка микшера, включение ADCLряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF1 DA0L Switch

AIF1 AD0L Настройка микшера, включение AIF1 DA0Lряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF2 DACL Switch

AIF1 AD0L Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD0L MixerAIF2 DACR Switch

AIF1 AD0L Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 AD0R MixerADCR Switch

AIF1 AD0R Настройка микшера, включение ADCRряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF1 DA0R Switch

AIF1 AD0R Настройка микшера, включение AIF1 DA0Rряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF2 DACL Switch

AIF1 AD0R Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD0R MixerAIF2 DACR Switch

AIF1 AD0R Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 AD1L MixerADCL Switch

AIF1 AD1L Настройка микшера, включение ADCLряд

0: выключено; 1: включено

AIF1 AD1L MixerAIF2 DACL Switch

AIF1 AD1L Настройка микшера, включение AIF2 DACLряд

0: выключено; 1: включено

AIF1 AD1R MixerADCR Switch

AIF1 AD1R Настройка микшера,ENABLEADCRряд

0: выключено; 1: включено

AIF1 AD1R MixerAIF2 DACR Switch

AIF1 AD1R Настройка микшера, включение AIF2 DACRряд

0: выключено; 1: включено

AIF1 ADC timeslot0 mixer gain

AIF1 ADC0L/ADC0RМикшер, цифровое усиление

0:0dB; 1:-6dB;

Для микшера ADC0L бит0:AIF2 DACR;бит1:ADCL;бит2:AIF2 DACL;бит3:AIF2 DA0L; Для микшера ADC0R бит0:AIF2 DACL;бит1:ADCR;бит2:AIF2 DACR;бит3:AIF2 DA0R;

AIF1 ADC timeslot0 volume

Настройка громкости AIF1 ADC0L/ADC0R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 ADC timeslot1 mixer gain

AIF1 ADC1L/ADC1RМикшер, цифровое усиление

0:0dB; 1:-6dB;

Для микшера ADC1L бит0: ADCL; бит1: AIF2 DACL; для микшера ADC1R бит0: ADCR;

AIF1 ADC timeslot1 volume

Настройка громкости AIF1 ADC1L/ADC1R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 DAC timeslot0 volume

Настройка громкости AIF1 DAC0L/DAC0R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1 DAC timeslot1 volume

Настройка громкости AIF1 DAC1L/DAC1R

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

AIF1IN0L Mux

AIF1IN0L Настройки мультиплексора

0:AIF1_DA0L; 1:AIF1_DA0R;2:SUM_AIF1DA0L_AIF1DA0R;3:AVE_AIF1DA0L_AIF1DA0R

AIF1IN0R Mux

AIF1IN0R Настройки мультиплексора

0:AIF1_DA0R; 1:AIF1_DA0L;2:SUM_AIF1DA0L_AIF1DA0R;3:AVE_AIF1DA0L_AIF1DA0R

AIF1IN1L Mux

AIF1IN1L Настройки мультиплексора

0:AIF1_DA1L; 1:AIF1_DA1R;2:SUM_AIF1DA1L_AIF1DA1R;3:AVE_AIF1DA1L_AIF1DA1R

AIF1IN1R Mux

AIF1IN1R Настройки мультиплексора

0:AIF1_DA1R; 1:AIF1_DA1L;2:SUM_AIF1DA1L_AIF1DA1R;3:AVE_AIF1DA1L_AIF1DA1R

AIF1OUT0L Mux

AIF1OUT0L Настройки мультиплексора

0:AIF1_AD0L; 1:AIF1_AD0R;2:SUM_AIF1AD0L_AIF1AD0R;3:AVE_AIF1AD0L_AIF1AD0R

AIF1OUT0R Mux

AIF1OUT0R Настройки мультиплексора

0:AIF1_AD0R; 1:AIF1_AD0L;2:SUM_AIF1AD0L_AIF1AD0R;3:AVE_AIF1AD0L_AIF1AD0R

AIF1OUT1L Mux

AIF1OUT1L Настройки мультиплексора

0:AIF1_AD1L; 1:AIF1_AD1R;2:SUM_AIF1AD1L_AIF1AD1R;3:AVE_AIF1AD1L_AIF1AD1R

AIF1OUT1R Mux

AIF1OUT1R Настройки мультиплексора

0:AIF1_AD1R; 1:AIF1_AD1L;2:SUM_AIF1AD1L_AIF1AD1R;3:AVE_AIF1AD1L_AIF1AD1R

DAC mixer gain

Усиление микшера ЦАП

0:0dB; 1:-6dB;

Для микшера DACL: бит 1: AIF2 DACL; бит 3: AIF1 DAC0L; для микшера DACR бит 0: ADCR; бит 2: AIF1 DAC1R;

DAC volume

Настройка громкости DACL/DACR

0–0xff, 0 означает отключение звука, 0x10xffповерхность<br/>Показывать-119.25dB71.25dB,0.75dB/step,Например, 0xA0 означает 0 д Б.

DACL Mixer ADCLSwitch

DACL Настройка микшера, включение ADCLряд

0: выключено; 1: включено

DACL MixerAIF1DA0L Switch

DACL Настройка микшера, включение AIF1DA0Lряд

0: выключено; 1: включено

DACL MixerAIF1DA1L Switch

DACL Настройка микшера, включение AIF1DA1Lряд

0: выключено; 1: включено

DACL MixerAIF2DACL Switch

DACL Настройка микшера, включение AIF2DACLряд

0: выключено; 1: включено

DACR Mixer ADCRSwitch

DACR Настройка микшера,ENABLEADCRряд

0: выключено; 1: включено

DACR MixerAIF1DA0R Switch

DACR Настройка микшера, включение AIF1DA0Rряд

0: выключено; 1: включено

DACR MixerAIF1DA1R Switch

DACR Настройка микшера, включение AIF1DA1Rряд

0: выключено; 1: включено

DACR MixerAIF2DACR Switch

DACR Настройка микшера, включение AIF2DACRряд

0: выключено; 1: включено

External SpeakerSwitch

Включить наушники и PA

0: выключено; 1: включено

HP_L Mux

HP_L Настройки мультиплексора

0:DACL ; 1:Left Output Mixer

HP_R Mux

HP_R Настройки мультиплексора

0:DACR ; 1:Right Output Mixer

LADC input MixerLINEINL

LADC вход Микшернастройка, включение LINEINLряд

0: выключено; 1: включено

LADC input MixerMIC1 boost Switch

Настройки микшера входа LADC, включение канала MIC1

0: выключено; 1: включено

LADC input MixerMIC2 boost Switch

Настройки микшера входа LADC, включение канала MIC2

0: выключено; 1: включено

LADC input Mixerl_output mixerSwitch

Настройка входного микшера LADC, включение l_outputmixerряд

0: выключено; 1: включено

LADC input Mixerr_output mixerSwitch

Настройка входного микшера LADC, включение r_outputmixerряд

0: выключено; 1: включено

LINEINL/R to L_Routput mixer gain

LINEINL/R на L или усиление выходного микшера

0–7, означает -4,5–6 д Б.

LINEOUTL Mux

LINEOUTL Настройки мультиплексора

0:left output mixer; 1:left+rightoutput mixer

LINEOUTR Mux

LINEOUTR Настройки мультиплексора

0:right output mixer; 1:left+rightoutput mixer

Left Output MixerDACL Switch

Левые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Left Output MixerDACR Switch

Левые настройки выходного микшера, включите путь DACR

0: выключено; 1: включено

Left Output MixerLINEINL Switch

Left Output Настройка микшера,ENABLE LINEINLряд

0: выключено; 1: включено

Left Output MixerMIC1BooststageSwitch

Настройки левого выходного микшера, включение канала MIC1

0: выключено; 1: включено

Left Output MixerMIC2BooststageSwitch

Настройки левого выходного микшера, включение канала MIC2

0: выключено; 1: включено

MIC1 boost AMPgain control

усиление MIC1

0–7, 0:0dB, 1~7:24–42dB,3dB/step

MIC1_G booststage output mixercontrol

Выход от MIC1 до L или R. Усиление микшера.

0–7, означает -4,5–6 д Б.

MIC2 BST stage toL_R outp mixergain

Выход MIC2 на левый или правый уровень усиления микшера

0–7, означает -4,5–6 д Б.

MIC2 SRC

Настройки SRC MIC2

0:MIC3; 1:MIC2

MIC2 boost AMPgain control

усиление MIC2

0–7, 0:0dB, 1~7:24–42dB,3dB/step

RADC input MixerLINEINR Switch

Настройка микшера входа RADC, включение LINEINRряд

0: выключено; 1: включено

RADC input MixerMIC1 boost Switch

Настройки микшера входа RADC, включение канала MIC1

0: выключено; 1: включено

RADC input MixerMIC2 boost Switch

Настройки микшера входа RADC, включение канала MIC2

0: выключено; 1: включено

RADC input Mixerl_output mixerSwitch

RADC input Настройка микшера, включение l_outputmixerряд

0: выключено; 1: включено

RADC input Mixerl_output Switch

RADC input Настройка микшера, включение l_outputmixerряд

0: выключено; 1: включено

Right Output MixerDACL Switch

Правые настройки выходного микшера, включите путь DACL

0: выключено; 1: включено

Right Output MixerDACR Switch

Настройки правого выходного микшера, включите путь DACR

0: выключено; 1: включено

Right Output MixerLINEINR Switch

Right Output Настройка микшера,ENABLE LINEINRряд

0: выключено; 1: включено

Right Output MixerMIC1BooststageSwitch

Right Output Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

Right Output MixerMIC2BooststageSwitch

Настройки правого выходного микшера, включение канала MIC2

0: выключено; 1: включено

SPK_L Mux

SPK_L Настройки мультиплексора

0:MIXEL Switch; 1:MIXL MIXRSwitch

SPK_R Mux

SPK_R Настройки мультиплексора

0:MIXER Switch; 1:MIXR MIXLSwitch

digital volume

Цифровые настройки громкости

0–63, означает -73,08–0 д Б.

headphone volume

громкость наушниковнастраивать

0–63, 0 означает отключение звука, 1–63 означает -62–0 д Б;

lineout volume

настройка громкости линейки

0–31, означает -43,5–0 д Б.

speaker volume

настройка громкости динамика (линейного выхода)

0–31, означает -43,5–0 д Б.

2.8.5 Daudio.

Аппаратные особенности

• Трехсторонний I2S/PCM;

• Поддержка режима «главный-подчиненный»

  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
2.8.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
2.8.5.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[snddaudio0]
snddaudio0_used = 1
[daudio0]
pcm_lrck_period = 0x80
slot_width_select = 0x20
pcm_lsb_first = 0x0
tx_data_mode = 0x0
rx_data_mode = 0x0
Язык кода:javascript
копировать
daudio_master = 0x04
audio_format = 0x01
signal_inversion = 0x01
frametype = 0x0
tdm_config = 0x01
mclk_div = 0x1
daudio0_used = 1

конфигурация sndaudio0, то есть соответствующая конфигурация драйвера машины daudio0

конфигурация sndaudio

конфигурация sndaudioиллюстрировать

snddaudio0_used

Использовать ли драйвер sndaudio. 0: Не используется 1: Используется;

конфигурация daudio0, то есть соответствующая конфигурация драйвера платформы daudio0

конфигурация даудио

конфигурация даудиоиллюстрировать

daudio0_used

Использовать ли аудиодрайвер. 0: Не используется 1: Используется;

daudio_master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRMmaster), то есть интерфейс daudio выполняет функцию подчиненного, кодек как master2: SND_SOC_DAIFMT_CBS_CFM(codec clk slave &FRM мастер), обычно не используйте 3: SND_SOC_DAIFMT_CBM_CFS(codec clk master &frame подчиненный), обычно не используется 4: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRMведомый), то есть даудиоинтерфейс выступает в роли ведущего, кодек как подчиненный

audio_format

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is availableon 2nd BCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is availableon 1nd BCLK rising edge after LRC rising edge)

signal_inversion

1: SND_SOC_DAIFMT_NB_NF(normal bit clock +frame)2: SND_SOC_DAIFMT_NB_IF(normal BCLK + invFRM)3: SND_SOC_DAIFMT_IB_NF(invert BCLK + nor FRM)4: SND_SOC_DAIFMT_IB_IF(invert BCLK + FRM)

slot_width_select

Поддержка ширины 8 бит, 16 бит, 32 бита

pcm_lrck_period

в целом Настраиваемый 16/32/64/128/256 bclk

msb_lsb_first

0: msb first; 1: lsb first

frametype

0: short frame = 1 clock width; 1: long frame = 2clock width

tdm_config

0: pcm mode; 1: i2s mode

конфигурация даудио

конфигурация даудиоиллюстрировать

tx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bita-law

rx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bita-law

2.8.6 DMIC

Аппаратные особенности

• Поддерживает 8 входов

  • поддерживать8~48KHzЧастота выборки
  • поддерживать16/Точность выборки 24 бита
2.8.6.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner DMIC Support
2.8.6.2 Конфигурация sys_config.
Язык кода:javascript
копировать
[dmic]
dmic_used = 0
[snddmic]
snddmic_used = 0

конфигурация dmic,Прямо сейчас Связанные конфигурации драйвера платформы

конфигурация dmic

конфигурация dmicиллюстрировать

dmic_used

Использовать ли драйвер dmic. 0: Не используется 1: Используется;

sndконфигурация dmic,Прямо сейчас Сопутствующие конфигурации драйвера машины

sndконфигурация dmic

sndконфигурация dmicиллюстрировать

snddmic_used

Использовать ли драйвер snddmic. 0: Не используется 1: Используется;

2.8.7 Метод аудиотестирования ставок

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.8.7.1 Играть
Язык кода:javascript
копировать
проходитьSPKL/RВоспроизведение песен,Например спикер Воспроизведение песен
amixer -Dhw:audiocodec cset name='AIF1IN0L Mux' 'AIF1_DA0L'
amixer -Dhw:audiocodec cset name='AIF1IN0R Mux' 'AIF1_DA0R'
amixer -Dhw:audiocodec cset name='DACL Mixer AIF1DA0L Switch' 1
amixer -Dhw:audiocodec cset name='DACR Mixer AIF1DA0R Switch' 1
amixer -Dhw:audiocodec cset name='Left Output Mixer DACL Switch' 1
amixer -Dhw:audiocodec cset name='Right Output Mixer DACR Switch' 1
amixer -Dhw:audiocodec cset name='SPK_R Mux' 'MIXER_Switch'
amixer -Dhw:audiocodec cset name='SPK_L Mux' 'MIXEL_Switch'
amixer -Dhw:audiocodec cset name='External Speaker Switch' 1
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='speaker volume' 28
Язык кода:javascript
копировать
Воспроизведение песен через LINEOUTL/R
amixer -Dhw:audiocodec cset name='AIF1IN0L Mux' 'AIF1_DA0L'
amixer -Dhw:audiocodec cset name='AIF1IN0R Mux' 'AIF1_DA0R'
amixer -Dhw:audiocodec cset name='DACL Mixer AIF1DA0L Switch' 1
amixer -Dhw:audiocodec cset name='DACR Mixer AIF1DA0R Switch' 1
amixer -Dhw:audiocodec cset name='Left Output Mixer DACL Switch' 1
amixer -Dhw:audiocodec cset name='Right Output Mixer DACR Switch' 1
amixer -Dhw:audiocodec cset name='LINEOUTL Mux' 'LOMIX'
amixer -Dhw:audiocodec cset name='LINEOUTR Mux' 'ROMIX'
amixer -Dhw:audiocodec cset name='Lineout Switch' 1
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='lineout volume' 28
Язык кода:javascript
копировать
Воспроизведение песен через HPOUTL/R,Например, наушники
amixer -Dhw:audiocodec cset name='AIF1IN0L Mux' 'AIF1_DA0L'
amixer -Dhw:audiocodec cset name='AIF1IN0R Mux' 'AIF1_DA0R'
amixer -Dhw:audiocodec cset name='DACL Mixer AIF1DA0L Switch' 1
amixer -Dhw:audiocodec cset name='DACR Mixer AIF1DA0R Switch' 1
amixer -Dhw:audiocodec cset name='HP_R Mux' 'DACR HPR Switch'
amixer -Dhw:audiocodec cset name='HP_L Mux' 'DACL HPL Switch'
amixer -Dhw:audiocodec cset name='Переключатель наушников' 1
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
Язык кода:javascript
копировать
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='headphone volume' 60
2.8.7.2 Запись
Язык кода:javascript
копировать
через MIC1,MIC2запись
amixer -Dhw:audiocodec cset name='LADC input Mixer MIC1 boost Switch' 1
amixer -Dhw:audiocodec cset name='RADC input Mixer MIC2 boost Switch' 1
amixer -Dhw:audiocodec cset name='AIF1 AD0L Mixer ADCL Switch' 1
amixer -Dhw:audiocodec cset name='AIF1 AD0R Mixer ADCR Switch' 1
amixer -Dhw:audiocodec cset name='AIF1OUT0L Mux' 'AIF1_AD0L'
amixer -Dhw:audiocodec cset name='AIF1OUT0R Mux' 'AIF1_AD0R'
amixer -Dhw:audiocodec cset name='MIC1 boost AMP gain control' 4
amixer -Dhw:audiocodec cset name='MIC2 boost AMP gain control' 4
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 /tmp/test.wav

Аудиоинтерфейс 2.9 R328.

2.9.1 Аппаратные ресурсы

R328 имеет богатые аудиоинтерфейсы, в том числе 6 аудиомодулей, а именно встроенный AudioCodec, Daudio0, Daudio1, Daudio2, Дмик, Спдиф.

Кроме того, MAD также поддерживается для обнаружения голосового пробуждения (подробности см. в главе R328 MAD).

2.9.2 Источник синхронизации.

В R328 источники синхронизации шести аудиомодулей поступают из pll_audio.

pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая серии 48k и 44,1k соответственно. Воспроизведите запись.

2.9.3 Структура кода

Язык кода:javascript
копировать
linux-4.9/sound/soc/sunxi/
├── spdif-utils.c // spdif codecводить машину
├── sun8iw18-codec.c // codecводить машину
├── sun8iw18-codec.h
├── sun8iw18-sndcodec.c // codec machineводить машину
├── sunxi-cpudai.c // codec platformводить машину
├── sunxi-daudio.c // daudio platformводить машину
├── sunxi-daudio.h
├── sunxi-dmic.c // dmic platformводить машину
├── sunxi-dmic.h
├── sunxi-mad.c //Предоставляем интерфейс функции, связанной с MAD
├── sunxi-mad.h
├── sunxi-pcm.c //общий файл,Обеспечить регистрациюplatformводить машинуизинтерфейси Связанные буквычислонабор
├── sunxi-pcm.h
├── sunxi_rw_func.c //Общий файл, интерфейс для чтения и записи аналоговых/цифровых регистров
├── sunxi_rw_func.h
├── sunxi-snddaudio.c // daudio machineводить машину
├── sunxi-snddaudio.h
├── sunxi-snddmic.c // dmic machineводить машину
├── sunxi-snddmic.h
├── sunxi-sndspdif.c // spdif machineводить машину
├── sunxi-spdif.c // spdif platformводить машину
└── sunxi-spdif.h
linux-4.9/sound/soc/codecs/dmic.c // dmic codecводить машину
linux-4.9/sound/soc/soc-utils.c // daudio codecводить машину

2.9.4 AudioCodec

Аппаратные особенности

• Один ЦАП

  • поддержка16 бит, точность дискретизации 24 бита
  • поддерживать8KHz~192KHzЧастота выборки
  • Трехходовой АЦП
  • поддержка16 бит, точность дискретизации 24 бита
  • поддерживать8KHz~48KHzЧастота выборки
  • Один аналоговый выход:Один дифференциальный выходlineoutP/N,поддерживатьодностороннийlineoutвыход
  • Три аналоговых входа: MIC1, MIC2, MIC3.
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • DACиADCвсеподдерживать 5 СегментDRC
  • DAC FIFOдлина12824 бита, длина FIFO АЦП 12824bits
2.9.4.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun8iw18 Codec Support
2.9.4.2 Конфигурация sys_config
Язык кода:javascript
копировать
[sndcodec]
sndcodec_used = 0x1
;------------------------------------------------------------------------------
[cpudai]
cpudai_used = 0x1
;-------------------------------------------------------------------------------
[codec]
codec_used = 0x1
digital_vol = 0x0
lineout_vol =0x1a
mic1gain = 0x4
mic2gain = 0x4
mic3gain = 0x0
adcgain = 0x3
adcagc_cfg = 0x0
adcdrc_cfg = 0x0
adchpf_cfg = 0x0
Язык кода:javascript
копировать
dacdrc_cfg = 0x0
dachpf_cfg = 0x0
pa_ctl_level = 0x1
pa_msleep_time = 160
gpio-spk = port:PH9<1><1><1><1>

конфигурация sndcodec,Прямо сейчас Сопутствующие конфигурации драйвера машины

конфигурация sndcodec

конфигурация sndcodecиллюстрировать

sndcodec_used

Использовать ли драйвер sndcodec. 0: Не используется 1: Используется;

конфигурация процессора,Прямо сейчас Связанные конфигурации драйвера платформы

конфигурация процессора

конфигурация процессораиллюстрировать

cpudai_used

Использовать ли драйвер cpudai. 0: Не используется 1: Используется;

конфигурация кодека,Прямо сейчасвстроенныйaudiocodecводить машинуиз Связанный Конфигурация

конфигурация кодека

конфигурация кодекаиллюстрировать

codec_used

Использовать ли драйвер кодека. 0: Не используется 1: Используется;

digital_vol

Инициализируйте цифровую громкость, настраиваемый диапазон: 00x3f, что означает 0–73,08 д Б, -1,16 д Б/шаг.

lineout_vol

громкость линейного выхода, настраиваемый диапазон: 00x1f, что означает -43,5 д Б0 д Б, 1,5 д Б/шаг.

mic1gain

Усиление микрофона 1, настраиваемый диапазон 0–0x7, 0:0 д Б, 17:1533 д Б, 3 д Б/шаг, обычно устанавливается на 0x4, что составляет 24 д Б.

mic2gain

Усиление микрофона 2, настраиваемый диапазон 0–0x7, 0:0 д Б, 17:1533 д Б, 3 д Б/шаг, обычно устанавливается на 0x4, что составляет 24 д Б.

mic3gain

Усиление микрофона 3, настраиваемый диапазон 0–0x7, 0:0 д Б, 17:1533 д Б, 3 д Б/шаг, обычно устанавливается на 0x4, что составляет 24 д Б. Если он используется в качестве петли AEC, его необходимо установить на 0 д Б.

adcgain

коэффициент усиления adc, устанавливаемый диапазон — 00x7, что означает -4,56 д Б, 1,5 д Б/шаг. Общая настройка — 0x3, что соответствует 0 д Б.

adcdrc_cfg

Использовать ли adcdrc. 0: Не применимо; 1 :использовать

adchpf_cfg

Использовать ли adchpf. 0: Не применимо; 1 :использовать

dacdrc_cfg

Использовать ли dacdrc. 0: Не применимо; 1 :использовать

dachpf_cfg

Использовать ли dachpf. 0: Не применимо; 1 :использовать

pa_ctl_level

Режим включения контакта PA. 0: действительно на низком уровне 1: действительно на высоком уровне;

pa_msleep_time

Время задержки после включения PA (используется во избежание поп-звука)

gpio-spk

PIN-код включения PA

иллюстрировать

  • Если вы хотите загрузить нормально audiocodec Звуковая карта, нужна codec,platform,machine Все драйвера выбраны, т.е. codec_used,cpudai_used,sndcodec_used настроены на 1
  • digital_vol,lineout_vol Эквивалентное значение будет в приводе машинуинициализацияизкогданастраивать,После входа в систему вы также можете пройти amixer Соответствующий инструменту элемент управления снова модифицируется;
  • Уведомление gpio-spk Правильно ли он настроен? Используется ли он другими модулями? gpio;
  • Уведомление pa_ctl_level , фактический усилитель мощности PA На контакте активен высокий или низкий уровень?
2.9.4.3 путь данных кодека
Язык кода:javascript
копировать
Воспроизведение песен
Playback --> DACL --> Left LINEOUT Mux --> LINEOUTL --> External Speaker
Playback --> DACR --> Right LINEOUT Mux --> LINEOUTR --> External Speaker
запись
MIC1 --> MIC1 PGA ---> Left Input Mixer --> ADCL --> Capture
MIC2 --> MIC2 PGA ---> Right Input Mixer --> ADCL --> Capture
MIC3 --> MIC3 PGA ---> Xadc Input Mixer --> ADCL --> Capture

Все элементы управления R328 следующие:

Имя элемента управления

Функция

числовое значение

Lineout Switch

включить коридор

0: выключено; 1: включено

ADC gain volume

усиление АЦП

0–7, означает -4,5–6 д Б., конкретные расчеты см. в Комментарии. 1

External Speaker Switch

включить коридоркиPA

0: выключено; 1: включено

LINEOUT volume

настройка громкости линейки

0–31, означает -43,5–0 д Б., конкретные расчеты см. в Комментарии. 2

Left Input Mixer DACLSwitch

Левый входной микшер — настройка, включение DACLряд

0: выключено; 1: включено

Left Input Mixer MIC1Boost Switch

Left Input Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

Left Input Mixer MIC2Boost Switch

Left Input Mixerнастраивать,Включить MIC2ряд

0: выключено; 1: включено

Left Input Mixer MIC3Boost Switch

Левый входной микшер — настройка, включение MIC3ряд

0: выключено; 1: включено

Left LINEOUT Mux

Left Lineout Настройки мультиплексора

0: DACL; 1: НОЛЬ (нулевой)

Right LINEOUT Mux

Right Lineout Настройки мультиплексора

0: НУЛЬ (нулевой); 1: ДАКЛ

MIC1 gain volume

MIC1 Boost AMP gain

0–7, 0:0 д Б, 1–7:15–33 д Б, конкретные расчеты см. в примечании 3.

MIC2 gain volume

MIC2 Boost AMP gain

То же, что и настройка громкости усиления MIC1.

MIC3 gain volume

MIC3 Boost AMP gain

То же, что и настройка громкости усиления MIC1.

Right Input Mixer DACLSwitch

Right Input Настройка микшера,ENABLE DACLряд

0: выключено; 1: включено

Right Input Mixer MIC1Boost Switch

Right Input Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

Right Input Mixer MIC2Boost Switch

Right Input Mixerнастраивать,Включить MIC2ряд

0: выключено; 1: включено

Right Input Mixer MIC3Boost Switch

Right Input Настройка микшера, включение MIC3ряд

0: выключено; 1: включено

Xadc Input Mixer DACLSwitch

Xadc Input Настройка микшера,ENABLE DACLряд

0: выключено; 1: включено

Xadc Input Mixer MIC1Boost Switch

Xadc Input Mixerнастраивать,Включить микрофон 1ряд

0: выключено; 1: включено

Xadc Input Mixer MIC2Boost Switch

Xadc Input Mixerнастраивать,Включить MIC2ряд

0: выключено; 1: включено

Xadc Input Mixer MIC3Boost Switch

Xadc Input Настройка микшера, включение MIC3ряд

0: выключено; 1: включено

codec hub mode

включить аудиокодек hubФункция

0: выключено; 1: включено

digital volume

Цифровая настройка громкости

0–63, означает -73,08–0 д Б., конкретные расчеты см. в Комментарии. 4

• Примечание 1

Язык кода:javascript
копировать
ADC gain Метод расчета объема:
Диапазон настроек прикладного уровня: 0 ~ 7
Диапазон, соответствующий фактическим настройкам оборудования: -4,5–6 д Б, step: 1.5dB
Метод преобразования:-4,5+(n\*1,5)
Например, установите 0 д Б:
-4.5+(n\*1.5) = 0
n = 3
Таким образом, для входа ниже на уровне приложения установлено значение 0 д Б:
amixer -D hw:audiocodec cset name='ADC gain volume' 3

• Примечание 2

Язык кода:javascript
копировать
LINEOUT Метод расчета объема:
Прикладной уровень может установить следующий диапазон: 0 ~31 (установлено на 0 или ВОЗ 1 когда он немой)
Диапазон, соответствующий фактическим настройкам оборудования: -43,5~0 д Б, step:1.5dB
Метод преобразования:-43,5+((n-2)\*1,5)
Пример 1 , установлено на 0 д Б:
-43.5+((n-2)\*1.5) = 0
n = 31
Таким образом, для входа ниже на уровне приложения установлено значение 0 д Б:
amixer -D hw:audiocodec cset name='LINEOUT volume' 31
Пример 2 , установите -6д Б:
-43.5+((n-2)\*1.5) = -6
n = 27
Таким образом, вход ниже на уровне приложения установлен на -6 д Б:
amixer -D hw:audiocodec cset name='LINEOUT volume' 27

• Примечание 3

Язык кода:javascript
копировать
MIC1 gain Метод расчета объема:
Прикладной уровень может установить следующий диапазон: 0 ~7 (установлено на 0 когда это 0 д Б)
Диапазон, соответствующий фактическим настройкам оборудования: 0 д Б или 15–33 д Б. step:3dB
Метод преобразования: 15+((n-1)*3)
Пример,настраивать24dB:
15+((n-1)*3) = 24
n = 4
Таким образом, вход ниже на уровне приложения установлен на 24 д Б:
amixer -D hw:audiocodec cset name='MIC1 gain volume' 4

• Примечание 4

Язык кода:javascript
копировать
digital Метод расчета объема:
Прикладной уровень может установить следующий диапазон: 0 ~ 63
Диапазон, соответствующий фактическим настройкам оборудования: -73,08~0 д Б, step:1.16dB
Метод преобразования:-73,08+(n*1,16)
Пример 1 , установлено на 0 д Б:
-73.08+(n*1.16) = 0
n = 63
Таким образом, для входа ниже на уровне приложения установлено значение 0 д Б:
amixer -D hw:audiocodec cset name='digital volume' 63
Пример 2 , настройка -5,8 д Б:
-73.08+(n*1.16) = -5.8
Язык кода:javascript
копировать
n = 58
Таким образом, вход ниже на уровне приложения установлен на -5,8 д Б:
amixer -D hw:audiocodec cset name='digital volume' 58

Пример настройки пути:

  1. игратьряд
Язык кода:javascript
копировать
Автор: Спикериграть,разницавыход:
amixer -D hw:audiocodec cset name='Переключатель внешнего динамика' 1
amixer -D hw:audiocodec cset name='цифровая громкость' 63
amixer -D hw:audiocodec cset name='LINEOUT Volume' 25
amixer -D hw:audiocodec cset name='Right LINEOUT Mux' 1
  1. записьряд
Язык кода:javascript
копировать
Моделируя MIC1, MIC2запись:
amixer -D hw:audiocodec cset name='Левый входной микшер MIC1 Boost Switch' 1
amixer -D hw:audiocodec cset name='Правый входной микшер MIC2 Boost Switch' 1
amixer -D hw:audiocodec cset name = 'Громкость усиления MIC1' 4
amixer -D hw:audiocodec cset name='MIC2 усиление громкости' 4
  1. Часто используемый AECряд
Язык кода:javascript
копировать
Существует два метода петли AEC, в зависимости от конструкции оборудования.
1)Внешний АЭК
MIC1, MIC2запись служит в качестве AEC, к MIC3 подключается внешний SPKP/N;
amixer -D hw:audiocodec cset name='Left Input Mixer MIC1 Boost Switch' 1
amixer -D hw:audiocodec cset name='Right Input Mixer MIC2 Boost Switch' 1
amixer -D hw:audiocodec cset name='Xadc Input Mixer MIC3 Boost Switch' 1
amixer -D hw:audiocodec cset name='MIC1 gain volume' 4
amixer -D hw:audiocodec cset name='MIC2 gain volume' 4
amixer -D hw:audiocodec cset name='MIC3 gain volume' 0
2)Внутренняя AEC (внешняя схема AEC может быть опущена)
MIC1, MIC2запись служит в качестве AEC, обеспечивая внутренний DACL для ряда MIC3.
amixer -D hw:audiocodec cset name='Left Input Mixer MIC1 Boost Switch' 1
amixer -D hw:audiocodec cset name='Right Input Mixer MIC2 Boost Switch' 1
amixer -D hw:audiocodec cset name='Xadc Input Mixer DACL Switch' 1
amixer -D hw:audiocodec cset name='MIC1 gain volume' 4
amixer -D hw:audiocodec cset name='MIC2 gain volume' 4

2.14.5 Daudio

Аппаратные особенности

• Трехсторонний I2S/PCM, может использоваться для вызовов Bluetooth, сбора голоса и цифрового усилителя мощности;

• Поддержка режима «главный-подчиненный»

  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживатьmonoиstereoмодель,Самый высокийподдерживать 8 ряд
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
  • поддерживать 3 Выход MCLK
2.14.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
2.14.5.2 Конфигурация sys_config
Язык кода:javascript
копировать
[snddaudio0]
snddaudio0_used = 0
daudio_master = 4
audio_format = 1
signal_inversion = 1
[daudio0]
daudio0_used = 0
slot_width_select = 32
pcm_lrck_period = 128
msb_lsb_first = 0
sign_extend = 0
frametype = 0
mclk_div = 1
tdm_config = 1
tx_data_mode = 0
rx_data_mode = 0

конфигурация sndaudio0, то есть соответствующая конфигурация драйвера машины daudio0

конфигурация sndaudio

конфигурация sndaudioиллюстрировать

snddaudio0_used

Использовать ли драйвер sndaudio. 0: Не используется 1: Используется;

daudio_master

1: SND_SOC_DAIFMT_CBM_CFM(codec clk & FRMmaster), то есть интерфейс daudio выполняет функцию подчиненного, кодек как master2: SND_SOC_DAIFMT_CBS_CFM(codec clk slave &FRM мастер), обычно не используйте 3: SND_SOC_DAIFMT_CBM_CFS(codec clk master &frame подчиненный), обычно не используется 4: SND_SOC_DAIFMT_CBS_CFS(codec clk & FRMведомый), то есть даудиоинтерфейс выступает в роли ведущего, кодек как подчиненный

audio_format

1: SND_SOC_DAIFMT_I2S(standard i2s format)2: SND_SOC_DAIFMT_RIGHT_J(right justfied format)3: SND_SOC_DAIFMT_LEFT_J(left justfied format)4: SND_SOC_DAIFMT_DSP_A(pcm. MSB is availableon 2nd BCLK rising edge after LRC rising edge)5: SND_SOC_DAIFMT_DSP_B(pcm. MSB is availableon 1nd BCLK rising edge after LRC rising edge)

signal_inversion

1: SND_SOC_DAIFMT_NB_NF(normal bit clock +frame)2: SND_SOC_DAIFMT_NB_IF(normal BCLK + invFRM)3: SND_SOC_DAIFMT_IB_NF(invert BCLK + nor FRM)4: SND_SOC_DAIFMT_IB_IF(invert BCLK + FRM)

конфигурация daudio0, то есть соответствующая конфигурация драйвера платформы daudio0

конфигурация даудио

конфигурация даудиоиллюстрировать

daudio0_used

Использовать ли аудиодрайвер. 0: Не используется 1: Используется;

slot_width_select

Поддержка ширины 8 бит, 16 бит, 32 бита

pcm_lrck_period

в целом Настраиваемый 16/32/64/128/256 bclk

msb_lsb_first

0: msb first; 1: lsb first

sign_extend

0: zero pending; 1: sign extend

frametype

0: short frame = 1 clock width; 1: long frame = 2clock width

mclk_div

0: не выводится (обычная настройка); 1/2/4/6/8/12/16/24/32/48/64/96/128/176/192: обеспечивает тактовую частоту для внешнего кодека, частота равна pll_audio /mclk_div

tdm_config

0: pcm mode; 1: i2s mode

tx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bita-law

rx_data_mode

0: 16bit linear PCM;1: reserved;2: 8bit u-law;3: 8bita-law

На что следует обратить внимание:

  • Конфигурация драйвера устройства Daudio (snddaudio), обычно вам также необходимо настроить имя кодека и кодек. имя дай

Например, daudio0 использует AC108 в качестве подключаемого кодека:

Язык кода:javascript
копировать
[snddaudio0]
snddaudio0_used = 1
sunxi,snddaudio-codec = "ac108.1-003b";
sunxi,snddaudio-codec-dai = "ac108-pcm0";
daudio_master = 4
audio_format = 1
signal_inversion = 2
[daudio0]
daudio0_used = 1
slot_width_select = 32
pcm_lrck_period = 128
msb_lsb_first = 0
sign_extend = 0
frametype = 0
mclk_div = 1
tdm_config = 1
tx_data_mode = 0
rx_data_mode = 0
Имя уведомления должно быть с кодеком машинусередина Конфигурацияиз Совпадение имени,Такие как ac108привод машину,путь:

Linux-4.9/звук/soc/codecs/ac108.c В коде snd_soc_register_codec регистрирует драйвер кодека, где имя устройства кодека — ac108.1-003b, имя кодека dai: ac108-pcm0 ```

  1. Например, даудио2 подключен к модулю блютуз (собственно драйвера кодека нет), то в это время кодек
Язык кода:javascript
копировать
name, codec dai имя должно быть настроено как фиктивное кодек, можно настроить следующим образом:
   [snddaudio2]
   snddaudio2_used = 1
   sunxi,snddaudio-codec = "snd-soc-dummy"
   sunxi,snddaudio-codec-dai = "snd-soc-dummy-dai"
   daudio_master = 1
   audio_format = 5
   signal_inversion = 2
потому чтоводить машину Средний парсингsnddaudio-codecВ ожидании полей,Ошибка в решенииизкогданоиспользоватьпо умолчаниюcodec"snd-soc-dummy",
Поэтому, если sunxi,snddaudio-codec и sunxi,snddaudio-codec-dai не настроены или конфигурация пуста,
нопо умолчаниюиспользоватьdummy codec:
[snddaudio2]
snddaudio2_used = 1
daudio_master = 1
audio_format = 5
signal_inversion = 2
или ВОЗ
[sndaudio2]
sndaudio2_used = 1
sunxi,snddaudio-codec =
sunxi,snddaudio-codec-dai =
daudio_master = 1
audio_format = 5
signal_inversion = 2

2.14.6 Dmic

Аппаратные особенности

• Поддерживает 8 входов

  • поддерживать8~48KHzЧастота выборки
  • поддерживать16/Точность выборки 24 бита
2.14.6.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner DMIC Support
2.14.6.2 Конфигурация sys_config

Конфигурация следующая:

Язык кода:javascript
копировать
[dmic]
dmic_used = 0
[snddmic]
snddmic_used = 0

конфигурация dmic,Прямо сейчас Связанные конфигурации драйвера платформы

Язык кода:javascript
копировать
конфигурация dmic конфигурация dmicиллюстрировать
dmic_used Использовать ли драйвер dmic. 0: Не используется 1: Используется;

sndконфигурация dmic,Прямо сейчас Сопутствующие конфигурации драйвера машины

Язык кода:javascript
копировать
sndконфигурация dmic sndконфигурация dmicиллюстрировать
snddmic_used Использовать ли драйвер snddmic. 0: Не используется 1: Используется;
  • Нет необходимости настраивать информацию, связанную с драйвером кодека, в sys_config.

Поскольку «dmic-codec» по умолчанию настроен в качестве драйвера кодека в коде драйвера машины, путь к коду следующий:

Язык кода:javascript
копировать
linux-4.9/sound/soc/codecs/dmic.c

2.14.7 SPDIF

Аппаратные особенности

• Поддержка S/PDIF_OUTиS/PDIF_IN

  • поддержка режимов моно и стерео (в моно режиме аппаратное обеспечение автоматически расширяется до стерео)
  • выходподдерживать22.05kHz, 24kHz, 32kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHzЧастота выборки
  • входитьподдерживать44.1KHz,48KHzЧастота выборки
  • выходивходитьподдержка16 бит, точность дискретизации 24 бита
2.14.7.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner SPDIF Support
2.14.7.2 Конфигурация sys_config
Язык кода:javascript
копировать
[sndspdif]
sndspdif_used = 0
[spdif]
spdif_used = 0

конфигурация spdif,Прямо сейчас Связанные конфигурации драйвера платформы

Язык кода:javascript
копировать
конфигурация spdif конфигурация spdifиллюстрировать|
spdif_used Использовать ли драйвер spdif. 0: Не используется 1: Используется;|

sndконфигурация spdif,Прямо сейчас Сопутствующие конфигурации драйвера машины

Язык кода:javascript
копировать
sndконфигурация spdifsndконфигурация spdifиллюстрировать

sndspdif_usedИспользовать ли драйвер sndspdif. 0: Не используется 1: Используется;

  • Нет необходимости настраивать информацию, связанную с драйвером кодека, в sys_config.

Поскольку «spdif-utils» по умолчанию настроен в качестве драйвера кодека в коде драйвера машины, путь к коду следующий:

Язык кода:javascript
копировать
linux-4.9/sound/soc/sunxi/spdif-utils.c

2.14.8 MAD

Аппаратные особенности

  • поддерживаются три канала I2S, один канал DMIC Интерфейс передачи звука PCM, мультиплексирование с временным разделением, фиксированный 16 бит
  • поддерживать16KHz,48KHzЧастота выборки
  • Поддержка Модуль обнаружения речи LPSD на основе распознавания энергии
  • поддерживать SRAM объемом 128 КБ,Может использоваться для сохранения аудиоданных
2.14.8.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Mad Support
2.14.8.2 Конфигурация sys_config
Язык кода:javascript
копировать
[mad]
mad_used = 1
lpsd_clk_src_cfg = 0
standby_sram_io_type = 1

безумная конфигурация

безумная конфигурацияиллюстрировать

mad_used

Использовать ли безумный драйвер. 0: Не используется 1: Используется;

2.14.8.3 Описание управления смесителем
  1. безумие привязывается к I2S

Имя элемента управления

Функция

числовое значение

daudio bind mad Function

Привязывать ли MADФункция

0: не привязан; 1: привязан;

lpsd channel sel Function

Выберите в качестве канала для пробуждения энергии

0: Канал 0 1: Канал 1;

По аналогии можно указать до 7 канала

mad_standby channel selFunction

Установите количество безумных каналов записи во время сна

0: указывает количество фактически используемых каналов записи;

  1. безумие привязывается к dmic

Имя элемента управления

Функция

числовое значение

dmic bind mad Function

Привязывать ли MADФункция

0: не привязан; 1: привязан;

lpsd channel sel Function

Выберите в качестве канала для пробуждения энергии

0: Канал 0 1: Канал 1;

И так далее, до 7 канала можно указать

mad_standby channel selFunction

Установите количество безумных каналов записи во время сна

0: указывает количество фактически используемых каналов записи; 1: означает, что записано только два канала. 2: означает, что записано только четыре канала.

2.14.8.4 Инструкция по применению

Для настройки прошивки просто измените sys_config и конфигурацию ядра.

Приложению необходимо включить управление микшером, связанное с MAD.

Пример настройки I2S, например, используется AC108:

Язык кода:javascript
копировать
Включить mad и привязать mad к daudio
amixer -Dhw:sndac1081003b cset name='daudio bind mad Function' 1
Настройки 0 как возбуждениеряд
amixer -Dhw:sndac1081003b cset name='lpsd channel sel Function' 0
Разозлиться В режиме ожидания запишите строку
amixer -Dhw:sndac1081003b cset name='mad_standby channel sel Function' 2

Пример настройки DMIC:

Язык кода:javascript
копировать
amixer -Dhw:snddmic cset name='dmic bind mad Function' 1
amixer -Dhw:snddmic cset name='lpsd channel sel Function' 0
amixer -Dhw:snddmic cset name='mad_standby channel sel Function' 0

Тогда приложение сможет нормально записывать. Если вам нужно войти в спящий режим, необходимо выполнить следующие пункты:

  1. Условно названная запись, играй. snd_pcm_pause приостанавливает воспроизведение и захват;
  2. Установите пробуждение_count. Обновить текущее количество пробуждений;
  3. Идти спать. Просто напишите мне в /sys/power/state;

Для справки в Tina SDK есть демо-версия пробуждения энергии.

make menuconfig выбирает пакет программного обеспечения mad-demo

Язык кода:javascript
копировать
Allwinner --->
	<*> mad-demo

Выполните mad-ac108-demo, конфигурация по умолчанию (конфигурация по умолчанию задается в скрипте /usr/bin/mad-ac108-demo):

• Используйте канал 0 в качестве канала пробуждения;

  • Записывать 4 ряд,16bit, 16K;
  • Каждый раз запись переходит в режим сна через 5 секунд,Можно разбудить энергией голоса;

Выполните mad-dmic-demo, конфигурация по умолчанию (конфигурация по умолчанию задается в скрипте /usr/bin/mad-dmic-demo):

• Используйте канал 0 в качестве канала пробуждения;

  • Записывать 4 ряд,16bit, 16K;
  • Каждый раз запись переходит в режим сна через 5 секунд,Можно разбудить энергией голоса;

Если вы хотите просмотреть данные записи, вы можете добавить параметр дампа, например, mad-dmic-demo dump, и сохранить файл записи. В каталоге /mnt/UDISK/.

2.14.8.5 Параметры порога энергетического пробуждения

Модуль энергетического пробуждения lpsd в основном определяет два направления энергии: мгновенную энергию и накопленную энергию (первое похоже на звук закрывающейся двери, а второе Например, если вы постоянно разговариваете), все конфигурации параметров обнаружения энергии находятся в каталоге /sys/module/sunxi_mad/parameters/.

Рекомендуемые значения для lpsd_rrun и lpsd_rstop:

lpsd_rrun

lpsd_rstop

77

88

77

108

77

128

77

148

  1. Параметры мгновенного определения энергии, в основном lpsd_rrun и lpsd_rstop.
  • Обычно мы изменяем только значение стопа;
  • Если в записываемых данных часто отсутствует первое слово слова пробуждения,Вы можете попробовать снизить значение стопа,Может эффективно улучшить данные слова пробуждения целостности. Но в то же время это увеличит частоту ложных пробуждений, а шум окружающей среды может легко вызвать обнаружение энергии и разбудить систему;
  • Если вы хотите снизить частоту ложных пробуждений (пробуждений, вызванных шумом окружающей среды), вы можете попытаться увеличить значение остановки. Опять же, это приводит к некоторому Данные записи слова пробуждения неполны,Например, меньшая громкость,низкочастотные высказывания;
  • Уровень распознавания слов пробуждения и уровень ложного пробуждения не могут быть достигнуты одновременно. Клиентам необходимо взвешивать параметры конфигурации на основе фактических потребностей и сценариев;
  1. Параметры обнаружения накопленной энергии, в основном lpsd_th.

• Мы рекомендуем использовать значение по умолчанию — 1200. Рекомендуется изменить диапазон 50~1200;

2.14.8.6На что следует обратить внимание
  1. Действие привязки MAD необходимо установить до того, как приложение откроет звуковую карту;
  2. Некоторые требования к работе приложения подробно описаны в разделе «МАДиспользоватьиллюстрировать»;
  3. Если он был заблокирован во время чтения Wakeup_count, иллюстрировать в настоящее время все еще активен Wake_lock, например USB USB-кабель подключен к ПК, и драйвер USB будет поддерживать функцию Wake_lock, чтобы предотвратить переход системы в спящий режим, поэтому вам необходимо отключить USB или ВОЗподключиться кusbна адаптере,или Измените код,удалятьusbводить машинусерединаwake_lockизиспользовать;

2.14.9 VAD.

VAD реализован на базе MAD, который может собирать аудиоданные через АЦП внутреннего аудиокодека и выполнять энергетическое пробуждение. Поскольку MAD аппаратно может использоваться только для I2Sили или DMIC, внутренний кодек не может быть напрямую связан с MAD, поэтому через Через I2S в качестве моста для аудиоданных реализуется функция VAD, так что аналоговые микрофоны также могут использовать MADФункция для пробуждения энергии. Бодрствующий.

Полный набор данных VAD:

Язык кода:javascript
копировать
ADC RxFiFo ---> I2S TxFiFo ---> I2S RxFiFo ---> MAD SRAM ---> MEM
2.14.9.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
[*] Allwinner I2S PCM DMA MAP Support
<*> Allwinner Mad Support
<*> Allwinner Sun8iw18 Codec Support
<*> Allwinner Digital Audio Support
2.14.9.2 Конфигурация sys_config

Конфигурация MAD должна быть включена:

Язык кода:javascript
копировать
[mad]
mad_used = 1
lpsd_clk_src_cfg = 0
standby_sram_io_type = 1

безумная конфигурация

безумная конфигурацияиллюстрировать

mad_used

Использовать ли безумный драйвер. 0: Не используется 1: Используется;

2.14.9.3 Описание управления смесителем

Имя элемента управления

Функция

числовое значение

codec I2S Port

Укажите I2S, используемый VAD

0: Неприменимо 1: Использовать I2S0 2: Использовать I2S1 3: Использовать I2S2;

sndcodec bind mad Function

Привязывать ли MADФункция

0: не привязан; 1: привязан;

lpsd channel sel Function

Выберите в качестве канала для пробуждения энергии

0: Канал 0 1: Канал 1;

И так далее, до 7 канала можно указать

mad_standby channel selFunction

Установите количество безумных каналов записи во время сна

0: указывает количество фактически используемых каналов записи; 1: означает, что записано только два канала. 2: означает, что записано только четыре канала.

Уведомление:

Для элемента управления «Порт кодека I2S» необходимо указать канал I2S, который фактически не используется (sys_config не включен). Пример настройки:

  • На самом деле нет использованияI2S0 (snddaudio0 в sys_config,audio0 не настроен),Тогда это можно установить на 1,showVAD использует I2S0;
  • На самом деле нет использованияI2S1 (snddaudio1 в sys_config,audio1 не настроен),Тогда здесь можно установить значение 2.,displayVADispose I2S1;

Пример настройки:

Язык кода:javascript
копировать
amixer -Dhw:audiocodec cset name='codec I2S Port' 2
amixer -Dhw:audiocodec cset name='sndcodec bind mad Function' 1
amixer -Dhw:audiocodec cset name='lpsd channel sel Function' 0
amixer -Dhw:audiocodec cset name='mad_standby channel sel Function' 0
2.14.9.4 Инструкция по применению

Использование VAD аналогично MAD.

Для настройки прошивки просто измените sys_config и конфигурацию ядра.

Помимо включения ряда записи внутреннего аудиокодека, приложению также требуются следующие настройки:

Язык кода:javascript
копировать
vadнуждатьсяиспользоватьполностьюi2s,Укажите здесьиспользоватьi2s1
amixer -Dhw:audiocodec cset name='codec I2S Port' 2
Включить mad и привязать mad к аудиокодеку
amixer -Dhw:audiocodec cset name='sndcodec bind mad Function' 1
Настройки 0 как возбуждениеряд
amixer -Dhw:audiocodec cset name='lpsd channel sel Function' 0

Тогда приложение сможет нормально записывать. Если вам нужно войти в спящий режим, необходимо выполнить следующие пункты:

  1. Условно названная запись, играй. snd_pcm_pause будет воспроизводиться,захват приостановлен
  2. Установите пробуждение_count. Обновить текущее количество пробуждений
  3. Идти спать. Просто напишите мне в /sys/power/state

Tina В SDK есть демонстрация пробуждения энергии. menuconfig выбирает пакет программного обеспечения mad-demo

Язык кода:javascript
копировать
Allwinner --->
	<*> mad-demo

Выполнить vad-demo, конфигурация по умолчанию (конфигурация по умолчанию задается в скрипте /usr/bin/vad-demo):

• Используйте I2S1

  • Записывать 2 ряд,16bit, 16K
  • Каждый раз запись переходит в режим сна через 5 секунд,Можно разбудить энергией голоса

Если вы хотите просмотреть данные записи, вы можете выполнить дамп vad-demo. Файл записи сохраняется в /mnt/UDISK/vad-test.wav. Чтобы настроить порог энергетического пробуждения, обратитесь к разделу «Energy Wake». вверх по пороговым параметрам"

2.14.9.5На что следует обратить внимание

VAD также требует выполнения пунктов, упомянутых в главе «УведомлениеMAD». На что следует обратить внимание.

Кроме того, следует отметить, что VAD неявно использует один I2S, поэтому один I2S необходимо зарезервировать на оборудовании, а конфигурацию I2S нельзя включить в sys_config.

2.14.10 Метод аудиотестирования ставок.

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.14.10.1Играть
Язык кода:javascript
копировать
Автор: Спикериграть
amixer -D hw:audiocodec cset name='External Speaker Switch' 1
amixer -D hw:audiocodec cset name='Right LINEOUT Mux' 1
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
2.14.10.2 Запись
Язык кода:javascript
копировать
через MIC1,MIC2Записать ряд
amixer -D hw:audiocodec cset name='Левый входной микшер MIC1 Boost Switch' 1
amixer -D hw:audiocodec cset name='Правый входной микшер MIC2 Boost Switch' 1
amixer -D hw:audiocodec cset name='Увеличенная громкость MIC1' 4
amixer -D hw:audiocodec cset name='Увеличение громкости MIC2' 4
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 /tmp/test.wav

2.20 Аудиоинтерфейс V853

V853 содержит несколько аудиомодулей, включая встроенный аудиокодек, I2S0, I2S1 и DMIC.

2.20.1 Источник синхронизации.

В V853 источником синхронизации аудиомодуля является pll_audio0.

pll_audio0 может выводить тактовые сигналы с частотами 22,5792M и 24,576M.,Соответственно поддерживают 44.1к серий, 48к серий игразапись,Но его нельзя вывести одновременно.

2.20.2 Структура кода

Язык кода:javascript
копировать
linux-4.9/sound/soc/sunxi_v2/
├── snd_sun8iw21_codec.c // codecводить машину
├── snd_sun8iw21_codec.h
├── snd_sunxi_aaudio.c
├── snd_sunxi_common.c
├── snd_sunxi_common.h
├── snd_sunxi_daudio.c //daudio platformводить машину
├── snd_sunxi_daudio.h
├── snd_sunxi_dmic.c // dmic platformводить машину
├── snd_sunxi_dmic.h
├── snd_sunxi_log.h
├── snd_sunxi_mach.c
├── snd_sunxi_mach.h
├── snd_sunxi_mach_utils.c
├── snd_sunxi_mach_utils.h
├── snd_sunxi_pcm.c
├── snd_sunxi_pcm.h
├── snd_sunxi_rxsync.c
├── snd_sunxi_rxsync.h
├── snd_sunxi_txhub.c
└── snd_sunxi_txhub.h

2.20.3 AudioCodec

2.20.3.1 Аппаратные особенности

• Один ЦАП

  • поддержка16 бит, эффективная точность выборки 20 бит
  • поддерживать8KHz~192KHzЧастота выборки
  • Двусторонний АЦП
  • поддержка16 бит, эффективная точность выборки 20 бит
  • поддерживать8KHz~48KHzЧастота выборки
  • Один аналоговый выход:
  • Один стереовыход LINE OUT, поддерживает одинарный/разностный режимы.
  • Два аналоговых входа: MIC1, MIC2
  • MICподдерживатьsingle/differ,
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • DACиADCвсеподдерживатьDRC
  • поддерживатьmonoмодель,Самый высокийподдерживать 2 ряд
2.20.3.2 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support V2 --->
<*> Allwinner AAUDIO support
<*> Allwinner DAUDIO Support
<*> Allwinner Function Components
<*> Components Rx Sync
2.20.3.3 Конфигурация DTS.

2.20.3.3.1 DeviceTree Конфигурацияиллюстрировать Дерево устройств — это конфигурация модулей платформы чипа, которая настраивает характеристики чипа. конфигурации, путь к файлу дерева устройств: lichee/linux-4.9/arch/arm/boot/dts/sun8iw21p1.dtsi

Язык кода:javascript
копировать
codec:codec@0x02030000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-codec";
reg = <0x0 0x02030000 0x0 0x34C>;
clocks = <&clk_pll_audio>,
Язык кода:javascript
копировать
<&clk_codec_dac>,
<&clk_codec_adc>;
status = "disabled";
};
codec_plat:codec_plat {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-aaudio";
playback_cma = <128>;
capture_cma = <128>;
tx_fifo_size = <128>;
rx_fifo_size = <128>;
dac_txdata = <0x02030020>;
adc_txdata = <0x02030040>;
status = "disabled";
};
codec_mach:codec_mach {
compatible = "allwinner,sunxi-snd-mach";
soundcard-mach,name = "audiocodec";
soundcard-mach,pin-switches = "MIC1", "MIC2", "LINEIN",
"LINEOUT", "SPK";
soundcard-mach,routing = "MIC1_PIN", "MIC1",
"MIC2_PIN", "MIC2",
"LINEINL_PIN", "LINEIN",
"LINEINR_PIN", "LINEIN",
"LINEOUT", "LINEOUTL_PIN",
"SPK", "LINEOUTL_PIN";
status = "disabled";
soundcard-mach,cpu {
/* pll freq = 24.576M or 22.5792M * pll-fs */
soundcard-mach,pll-fs = <1>;
sound-dai = <&codec_plat>;
};
soundcard-mach,codec {
sound-dai = <&codec>;
};
};

Иллюстрировать элементы конфигурации (развернуты только общие элементы):

Модуль AudioCodec построен из 3 узлов дерева устройств.

  1. Код слоя ASoC: кодекс

Таблица 2-128: Элементы конфигурации узла кодека AudioCodec (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

#sound-dai-cells

Машинный уровень обнаруживает флаги узлов кодека и платформы.

reg

Установите начальный адрес регистра аудиокодека и длину адреса.

clocks

Установите источник синхронизации и тактовую частоту модуля, необходимую для аудиокодека.

  1. Платформа уровня ASoC: codec_plat

Таблица 2-129: Элементы конфигурации узла AudioCodec codec_plat (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

#sound-dai-cells

Машинный уровень обнаруживает флаги узлов кодека и платформы.

playback_cma

Установите размер потока воспроизведения приложения DMA, который должен составлять (2n)Кбайт, значение по умолчанию — 128.

capture_cma

Установите размер потока записи приложения DMA, который должен составлять (2n)Кбайт, значение по умолчанию — 128.

tx_fifo_size

Установите размер fifo_size потока воспроизведения snd_pcm_runtime, который используется для ограничения аппаратных параметров звуковой карты. Значение по умолчанию — 128.

rx_fifo_size

Установите размер fifo_size потока записи snd_pcm_runtime, который используется для ограничения аппаратных параметров звуковой карты. Значение по умолчанию — 128.

dac_txdata

Установите адрес передачи DMA потока воспроизведения (адрес регистра tx_fifo модуля аудиокодека)

adc_txdata

Установите адрес передачи DMA потока записи (адрес регистра rx_fifo модуля аудиокодека)

  1. Машина слоя ASoC: codec_mach

Таблица 2-130: Элементы конфигурации узла AudioCodec codec_mach (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

soundcard-mach

префикс конфигурации машинного уровня

name

Название звуковой карты

pin-switches

Используется для определения переключателя интерфейса модуля (настройку см. в коде драйвера dapm).

routing

используется для定义модульинтерфейс开关所链接изdapmряд(Нужна ссылкаводить машинукодdapmруководитьнастраивать)

cpu

Узел процессора, привязанный к машинному уровню (то есть уровню платформы), указывается с помощью атрибута sound-dai.

codec

Узел кодека, привязанный к машинному уровню (т. е. уровню кодека), указывается с помощью атрибута sound-dai.

pll-fs

Укажите частоту источника тактовой частоты модуля (24,576M или 22,5792M * pll-fs)

2.20.3.3.2 board.dts конфигурация уровня платыиллюстрировать

board.dts используется для сохранения дополнительной информации о дифференциации устройств платформы на уровне платы, Характеристики формы Настроить, информация о конфигурации перезапишет устройство. информация о конфигурации дерева по умолчанию, путь к файлу board.dts: /device/config/chips/v853/configs/{BOARD}/board.dts

Язык кода:javascript
копировать
&codec {
/* external-avcc; */
/* avcc-supply = <&reg_aldo1>; */
avcc-vol = <1800000>; /* uv */
lineout_vol = <31>;
mic1gain = <31>;
mic2gain = <31>;
Язык кода:javascript
копировать
adcdelaytime = <0>;
/* lineout-single; */
/* mic1-single; */
/* mic2-single; */
pa_pin_max = <1>; /* set pa */
pa_pin_0 = <&pio PH 4 1 1 1 1>;
pa_pin_level_0 = <1>;
pa_pin_msleep_0 = <0>;
tx_hub_en;
rx_sync_en;
status = "okay";
};
&codec_plat {
status = "okay";
};
&codec_mach {
status = "okay";
soundcard-mach,cpu {
sound-dai = <&codec_plat>;
};
soundcard-mach,codec {
sound-dai = <&codec>;
};
};

Введение в элемент конфигурации:

Таблица 2-131: Элементы конфигурации на уровне платы модуля AudioCodec

Имя элемента конфигурации

Диапазон значений конфигурации

Конфигурацияэлементиллюстрировать

status

“okay”, “disabled”

Включить или отключить драйвер узла

avcc-external

Аннотация ложна, в противном случае она верна

Предусмотрен ли источник питания avcc для периферийных цепей

avcc-supply

Комментарий, обратитесь к узлу питания, предоставленному pmu.

Если avcc подает питание на внешний PMU, вы можете выбрать эту опцию, чтобы указать соответствующий источник питания PMU.

avcc-vol u32

(Значение по умолчанию: 1800000)

Настройка значения напряжения avcc, единица измерения мк В, должна соответствовать фактическим требованиям к аппаратному обеспечению.

dvcc-external

Аннотация ложна, в противном случае она верна

Предусмотрен ли источник питания dvcc для периферийных цепей?

dvcc-supply

Комментарий, обратитесь к узлу питания, предоставленному pmu.

Если dvcc подает питание на внешний PMU, вы можете выбрать этот элемент, чтобы указать соответствующий источник питания PMU.

dvcc-vol

u32(Значение по умолчанию: 1800000)

Настройка значения напряжения dvcc, единица измерения мк В, должна соответствовать фактическим требованиям к аппаратному обеспечению.

adc-dig-vol-(n)

0~255

adc(n) цифровой объем, (n) представляет серийный номер adc, увеличивающийся с 1

mic(n)_vol

0~31

mic(n) входная громкость (усиление) по умолчанию, (n) представляет серийный номер микрофона, увеличивающийся с 1

dac-dig-vol

0~63 dac

цифровой мастер-громкость

dac-dig-vol-(n)

0~255

dac(n) цифровой объем, (n) представляет серийный номер ЦАП, увеличивающийся с 1

lineout-vol

0~31

громкость вывода по умолчанию (усиление) lineout

hp-vol

0~7

Выходная громкость наушников по умолчанию (усиление)

pa-pin-max

u32 (обычно 1 или 2)

Откалибровать количество контактов включения микросхемы внешнего усилителя мощности.

pa-pin-(n)

Контактный узел предоставлен pio

Укажите (n)-й вывод включения усилителя мощности.

pa-pin-level-(n)

0~1

Укажите уровень включения микросхемы усилителя мощности

pa-pin-msleep-(n)

u32 (обычно меньше 200)

Установите продолжительность сна, необходимую для включения микросхемы усилителя мощности, используемой для предотвращения поп-звука, единица мс.

adcdelaytime

u32 (необходимо соответствовать спецификациям IC)

Установите время задержки записи по АЦП, единица мс.

tx-hub-en

Аннотация ложна, в противном случае она верна

Выберите, регистрировать ли элемент управления txhub

rx-sync-en

Аннотация ложна, в противном случае она верна

Выберите, регистрировать ли элемент управления rxsync.

2.20.3.4 путь данных кодека
Язык кода:javascript
копировать
проходитьLineoutВоспроизведение песен
Playback --> DACL --> LINEOUTL Output Select --> LINEOUTL --> LINEOUT
Playback --> DACR --> LINEOUTR Output Select --> LINEOUTR --> LINEOUT
запись
MIC1 --> MIC1 Input Select --> ADC1 Input --> ADC1 --> Capture
MIC2 --> MIC2 Input Select --> ADC2 Input --> ADC2 --> Capture
LINE-inзапись
LINEINL --> ADC1 Input --> ADC1 --> Capture
LINEINR --> ADC2 Input --> ADC2 --> Capture

Все органы управления V853 следующие:

Таблица 2-132: Таблица управления смесителем

Имя элемента управления

Функция

числовое значение

ADC1 ADC2 swap

Каналы обмена между adc1 и adc2

ADC1 volume

ADC1Цифровые настройки громкости

0~0xFF, 0: отключение звука; 10xFF: -119,25 д Б 71,24 д Б, 0,75 д Б/шаг, по умолчанию 0xA0=0 д Б

ADC2 volume

ADC2Цифровые настройки громкости

0~0xFF, 0: отключение звука; 10xFF: -119,25 д Б 71,24 д Б, 0,75 д Б/шаг, по умолчанию 0xA0=0 д Б

ADCDRC

включатьADC DRCФункция

ADCHPF

включатьadc hpfФункция

DAC volume

Настройки громкости DACL, DACR

0~0xFF, 0: отключение звука; 10xFF: -119,25 д Б 71,24 д Б, 0,75 д Б/шаг, по умолчанию 0xA0=0 д Б

DACDRC

включатьdac drcФункция

DACHPF

включатьdac hpfФункция

LINEIN Switch

Включить лиADC->LINEINизряд

0: Закрыть; 1: включить

LINEINL gainvolume

ЛИНИНЛ усиление

0:0dB; 1:6dB

LINEINR gainvolume

LINEINRусиление

0:0dB; 1:6dB

LINEOUT OutputSelect

Выбор линейного выхода

0: несимметричный 1: дифференциальный;

LINEOUT Switch

Включить ли Lineoutряд

0: Закрыть; 1: включить

LINEOUT volume

Настройка громкости линейного выхода

031, означает -43,50 д Б

MIC1 Input Select

Режим входа MIC1

0: Дифференциальный вход 1: Несимметричный вход;

MIC1 Switch

Включить лиADC1->MIC1изряд

0: Закрыть; 1: включить

MIC1 gain volume

усиление MIC1

031 означает 036 д Б, 0:0dB,13:6dB,<br/>431:9~36dB, 1dB/step

MIC2 Input Select

Режим входа MIC2

0: Дифференциальный вход 1: Несимметричный вход;

MIC2 Switch

Включить лиADC2->MIC2изряд

0: Закрыть; 1: включить

MIC2 gain volume

усиление MIC2

031 означает 036 д Б, 0:0dB,13:6dB,<br/>431:9~36dB, 1dB/step

SPK Switch

Включить ли Спикерряд(использовать усилитель мощности)

0: Закрыть; 1: включить

digital volume

Цифровая настройка громкости

063, означает -73,080 д Б

rx sync mode

Включить синхронную запись

tx hub mode

включить тот же источникиграть(идругойвключатьtx hub режим звуковой карты)

2.20.4 Daudio

2.20.4.1 Аппаратные функции

• Двусторонний I2S/PCM, может использоваться для вызовов Bluetooth, сбора голоса и цифрового усилителя мощности;

• Поддержка режима «главный-подчиненный»

  • поддерживатьLeft-justified,Right-justified,Standar mode I2S,PCM mode
  • управлениеi2s, конфигурация формата протокола PCM
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • поддерживать8~192KHzЧастота выборки
  • поддерживает точность выборки 16,24,32 бита
  • поддерживать 2 Выход MCLK
2.20.4.2 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
    <*> Sound card support --->
        <*> Advanced Linux Sound Architecture --->
            <*> ALSA for SoC audio support --->
                Allwinner SoC Audio support V2 --->
                <*> Allwinner AAUDIO support
                <*> Allwinner DAUDIO Support
                <*> Allwinner Function Components
                <*> Components Rx Sync
2.20.4.3 Конфигурация DTS.

2.20.4.3.1 DeviceTree Конфигурацияиллюстрировать Дерево устройств — это конфигурация модулей платформы чипа, которая настраивает характеристики чипа.конфигурации, путь к файлу дерева устройств: lichee/linux-4.9/arch/arm/boot/dts/sun8iw21p1.dtsi

Язык кода:javascript
копировать
daudio0_plat:daudio0_plat@0x02032000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-plat-daudio";
reg = <0x0 0x02032000 0x0 0x7c>;
clocks = <&clk_pll_audio>, <&clk_i2s0>;
playback_cma = <128>;
capture_cma = <128>;
tx_fifo_size = <128>;
rx_fifo_size = <128>;
status = "disabled";
};
daudio0_mach:daudio0_mach{
compatible = "allwinner,sunxi-snd-mach";
soundcard-mach,format = "i2s";
soundcard-mach,name = "snddaudio0";
Язык кода:javascript
копировать
status = "disabled";
soundcard-mach,cpu {
sound-dai = <&daudio0_plat>;
};
soundcard-mach,codec {
};
};
daudio1_plat:daudio1_plat@0x02033000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-plat-daudio";
reg = <0x0 0x02033000 0x0 0x7c>;
clocks = <&clk_pll_audio>, <&clk_i2s1>;
playback_cma = <128>;
capture_cma = <128>;
tx_fifo_size = <128>;
rx_fifo_size = <128>;
status = "disabled";
};
daudio1_mach:daudio1_mach{
compatible = "allwinner,sunxi-snd-mach";
soundcard-mach,format = "i2s";
soundcard-mach,name = "snddaudio1";
status = "disabled";
soundcard-mach,cpu {
sound-dai = <&daudio1_plat>;
};
soundcard-mach,codec {
};
};

Иллюстрировать элементы конфигурации (развернуты только общие элементы):

Модуль I2S/PCM состоит из 2 или 3 узлов дерева устройств.

  1. Кодек уровня ASoC: необязательный узел, если нет, привяжите узел виртуального кодека.
  2. Платформа уровня ASoC: daudio(n)_plat

Таблица 2-133: Элементы конфигурации узла I2S/PCM daudio(n)_plat (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

#sound-dai-cells

Машинный уровень обнаруживает флаги узлов кодека и платформы.

reg

Установите начальный адрес регистра I2S/PCM и длину адреса.

clocks

Установите источник синхронизации и тактовую частоту модуля, необходимую для I2S/PCM.

playback_cma

Установите размер потока воспроизведения приложения DMA, который должен составлять (2n)Кбайт, значение по умолчанию — 128.

capture_cma

Установите размер потока записи приложения DMA, который должен составлять (2n)Кбайт, значение по умолчанию — 128.

tx_fifo_size

Установите размер fifo_size потока воспроизведения snd_pcm_runtime, который используется для ограничения аппаратных параметров звуковой карты. Значение по умолчанию — 128.

rx_fifo_size

Установите размер fifo_size потока записи snd_pcm_runtime, который используется для ограничения аппаратных параметров звуковой карты. Значение по умолчанию — 128.

  1. Машина слоя ASoC: daudio(n)_mach

Таблица 2-134: Элементы конфигурации узла I2S/PCM daudio(n)_mach (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

soundcard-mach

префикс конфигурации машинного уровня

name

Название звуковой карты

cpu

Узел процессора, привязанный к машинному уровню (то есть уровню платформы), указывается с помощью атрибута sound-dai.

codec

Узел кодека, привязанный к машинному уровню (т. е. уровню кодека), указывается с помощью атрибута звук-дай. Если в этом подузле нет атрибута sound-dai, то есть, достоинствоиспользовать виртуальный кодек, который используется для помощи в создании звуковых карт.

pll-fs

Укажите частоту источника тактовой частоты модуля (24,576M или 22,5792M * pll-fs)

иллюстрировать

  • _daudio(n)plat представлять daudio0_plat, daudio1_plat, ···(в зависимости от характеристик чипа);
  • _daudio(n)mach представлять daudio0_mach, daudio1_mach, ···(в зависимости от характеристик чипа);

2.20.4.3.2 board.dts конфигурация уровня платыиллюстрировать board.dts — это дополнение, используемое для сохранения дифференцированной информации об устройствах платформы уровня платы. заряд, лицо Характеристики формы Настроить, информация о конфигурации перезапишет устройство. информация о конфигурации дерева по умолчанию, файл board.dts Путь:/device/config/chips/v853/configs/{BOARD}/board.dts.

Язык кода:javascript
копировать
&daudio0_plat {
tdm_num = <0>;
tx_pin = <0>;
rx_pin = <0>;
/* pinctrl_used; */
/* pinctrl-names= "default","sleep"; */
/* pinctrl-0 = <&daudio0_pins_a>; */
/* pinctrl-1 = <&daudio0_pins_b>; */
tx_hub_en;
rx_sync_en;
status = "okay";
};
&daudio0_mach {
soundcard-mach,format = "i2s";
soundcard-mach,frame-master = <&daudio0_cpu>;
soundcard-mach,bitclock-master = <&daudio0_cpu>;
/* soundcard-mach,frame-inversion; */
/* soundcard-mach,bitclock-inversion; */
soundcard-mach,slot-num = <2>;
soundcard-mach,slot-width = <32>;
status = "okay";
daudio0_cpu: soundcard-mach,cpu {
sound-dai = <&daudio0_plat>;
soundcard-mach,pll-fs = <1>; /* pll freq = 24.576M or 22.5792M * pll-fs */
soundcard-mach,mclk-fs = <0>; /* mclk freq = pcm rate * mclk-fs */
};
daudio0_codec: soundcard-mach,codec {
Язык кода:javascript
копировать
};
};
&daudio1_plat {
tdm_num = <1>;
tx_pin = <0>;
rx_pin = <0>;
/* pinctrl_used; */
/* pinctrl-names= "default","sleep"; */
/* pinctrl-0 = <&daudio1_pins_a>; */
/* pinctrl-1 = <&daudio1_pins_b>; */
tx_hub_en;
rx_sync_en;
status = "disabled";
};
&daudio1_mach {
soundcard-mach,format = "i2s";
soundcard-mach,frame-master = <&daudio1_cpu>;
soundcard-mach,bitclock-master = <&daudio1_cpu>;
/* soundcard-mach,frame-inversion; */
/* soundcard-mach,bitclock-inversion; */
soundcard-mach,slot-num = <2>;
soundcard-mach,slot-width = <32>;
status = "disabled";
daudio1_cpu: soundcard-mach,cpu {
sound-dai = <&daudio1_plat>;
soundcard-mach,pll-fs = <1>; /* pll freq = 24.576M or 22.5792M * pll-fs */
soundcard-mach,mclk-fs = <0>; /* mclk freq = pcm rate * mclk-fs */
};
daudio1_codec: soundcard-mach,codec {
};
};

Введение в элемент конфигурации:

Таблица 2-135: Элементы конфигурации на уровне платы модуля I2S/PCM

Имя элемента конфигурации

Диапазон значений конфигурации

Конфигурацияэлементиллюстрировать

status

“okay”, “disabled”

Включить или отключить драйвер узла

tdm-num

0~3

Укажите серийный номер I2S, который должен соответствовать (n) daudio(n)_plat.

tx-pin

0~3

Укажите номер контакта DOUT, используемый I2S.

rx-pin

0~3

Укажите номер контакта DIN, используемый I2S.

tx-hub-en

Аннотация ложна, в противном случае она верна

Выберите, регистрировать ли элемент управления txhub

rx-sync-en

Аннотация ложна, в противном случае она верна

Выберите, регистрировать ли элемент управления rxsync.

format

“i2s”,“right_j”,“left_j”,“dsp_a”,“dsp_b”

Выберите формат протокола tdm

frame-master

подузел процессора, подузел кодека

Выбор основного режима сигнала LRCK

bitclock-master

подузел процессора, подузел кодека

Выбор режима ведущего сигнала BCLK

frame-inversion

Аннотация ложна, в противном случае она верна

Перевернут ли сигнал LRCK

bitclock-inversion

Аннотация ложна, в противном случае она верна

Переворачивается ли сигнал BCLK

slot-num

1~16

Количество слотов (просто можно понимать как максимальное количество рядов в поддержке)

slot-width

8, 16, 24, 32

Ширина одного слота (можно просто понимать как обеспечение максимальной точности данных)

mclk-fp

Аннотация ложна, в противном случае она верна

true: mclk выводит в фиксированном диапазоне частот. false: mclk выводит с частотой, кратной частоте дискретизации;

mclk-fs

u32

Фиксированный диапазон частот: mclk = mclk-fs * 12,288M или 11,2896M, кратный частоте дискретизации: mclk = mclk-fs * частота PCM

2.20.5 DMIC.

Аппаратные особенности

• поддерживать 4 вход

  • поддерживать8~48KHzЧастота выборки
  • поддерживать16/Точность выборки 24 бита
2.20.5.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support V2 --->
<*> Allwinner DMIC support
2.20.5.2 Конфигурация DTS.

2.20.5.2.1 DeviceTree Конфигурацияиллюстрировать Дерево устройств — это конфигурация модулей платформы чипа, которая настраивает характеристики чипа. конфигурации, путь к файлу дерева устройств: lichee/linux-4.9/arch/arm/boot/dts/sun8iw21p1.dtsi

Язык кода:javascript
копировать
dmic_plat:dmic_plat@0x02031000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-plat-dmic";
Язык кода:javascript
копировать
reg = <0x0 0x02031000 0x0 0x50>;
clocks = <&clk_pll_audio>, <&clk_dmic>;
capture_cma = <128>;
rx_fifo_size = <128>;
status = "disabled";
};
dmic_mach:dmic_mach{
compatible = "allwinner,sunxi-snd-mach";
soundcard-mach,name = "snddmic";
soundcard-mach,capture_only;
status = "disabled";
soundcard-mach,cpu {
sound-dai = <&dmic_plat>;
};
soundcard-mach,codec {
};
};

Иллюстрировать элементы конфигурации (развернуты только общие элементы):

Модуль DMIC состоит из двух узлов дерева устройств.

  1. Кодек уровня ASoC: нет, привяжите узел виртуального кодека.
  2. Платформа уровня ASoC: dmic_plat

Таблица 2-136: Элементы конфигурации узла DMIC dmic_plat (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

#sound-dai-cells

Машинный уровень обнаруживает флаги узлов кодека и платформы.

reg

Установите начальный адрес регистра DMIC и длину адреса.

clocks

Установите источник синхронизации и тактовую частоту модуля, необходимую для DMIC.

capture_cma

Установите размер потока записи приложения DMA, который должен составлять (2n)Кбайт, значение по умолчанию — 128.

rx_fifo_size

Установите размер fifo_size потока записи snd_pcm_runtime, который используется для ограничения аппаратных параметров звуковой карты. Значение по умолчанию — 128.

  1. Машина слоя ASoC: dmic_mach

Таблица 2-137: Элементы конфигурации узла DMIC dmic_mach (linux4.9)

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

soundcard-mach

префикс конфигурации машинного уровня

name

Название звуковой карты

cpu

Узел процессора, привязанный к машинному уровню (то есть уровню платформы), указывается с помощью атрибута sound-dai.

codec

Узел кодека, привязанный к машинному уровню (т. е. уровню кодека),указывается с помощью атрибута sound-dai.(использоватьвиртуальныйcodec)

capture_only

Настройте только запись, а не устройство потокового воспроизведения для создания pll-fs Укажите частоту источника тактовой частоты модуля (24,576M или 22,5792M * pll-fs)

2.20.5.2.2 board.dts конфигурация уровня платыиллюстрировать board.dts — это дополнение, используемое для сохранения дифференцированной информации об устройствах платформы уровня платы. заряд, лицо Характеристики формы Настроить, информация о конфигурации перезапишет устройство. информация о конфигурации дерева по умолчанию, файл board.dts Путь:/device/config/chips/v853/configs/{BOARD}/board.dts.

Язык кода:javascript
копировать
&dmic_plat {
    rx_chmap = <0x76543210>;
    data_vol = <0xB0>;
    rxdelaytime = <0>;
    pinctrl_used;
    pinctrl-names = "default","sleep";
    pinctrl-0 = <&dmic_pins_a>;
    pinctrl-1 = <&dmic_pins_b>;
    rx_sync_en;
    status = "disabled";
};
&dmic_mach {
    status = "disabled";
    soundcard-mach,cpu {
        sound-dai = <&dmic_plat>;
        soundcard-mach,pll-fs = <1>; /* pll freq = 24.576M or 22.5792M * pll-fs */
    };
    soundcard-mach,codec {
    };
};

Введение в элемент конфигурации:

Таблица 2-138: Элементы конфигурации на уровне платы модуля DMIC

Имя элемента конфигурации

Диапазон значений конфигурации

Конфигурацияэлементиллюстрировать

status

“okay”, “disabled”

Включить или отключить драйвер узла

rx-sync-en

Аннотация ложна, в противном случае она верна

Выберите, регистрировать ли элемент управления rxsync.

avcc-supply

Комментарий, обратитесь к узлу питания, предоставленному pmu.

Если avcc подает питание на внешний PMU, вы можете выбрать эту опцию, чтобы указать соответствующий источник питания PMU.

2.20.6 Функция синхронизации нескольких звуковых карт RX_SYNC

RX_SYNCФункция используется для одновременного подключения к двум звуковым картам записи (разные аппаратные аудиоинтерфейсы).,Это может гарантировать, что обе звуковые карты начнут запись одновременно.,Убедитесь, что задержка стабильна и неизменна.

Например, голосовое решение внутреннего АЦП + внешнего АЦП (с использованием I2S) может обеспечить синхронизацию внутреннего АЦП и I2S RX.

AudioCodec, I2S, DMICвсе可киспользоватьRX_SYNCФункция,за исключением того, что они соответствуютизводить машину Конфигурацияснаружи,возвращатьсянуждаться额снаружи Конфигурация Ядро,дц и другие места.

2.20.6.1 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support V2 --->
<*> Allwinner AAUDIO support
<*> Allwinner DAUDIO Support
<*> Allwinner Function Components
<*> Components Rx Sync
2.20.6.2 Конфигурация dts.

Добавьте rx_sync_en в аудиомодули, которые хотят использовать rx_syncFunction. = <1>Поле:

Язык кода:javascript
копировать
codec:codec@2030000 {
	rx_sync_en = <0x01>;
};
dmic:dmic@2031000 {
	rx_sync_en = <0x01>;
};
daudio0:daudio@2032000 {
	rx_sync_en = <0x01>;
};

Уведомление,Модули, настроенные с помощью поля rx_sync_en,Нужно все включитьзапись после,Только тогда действительно начнется запись.

Обычно мы будем использовать плагин multi для объединения данных двух звуковых карт (CaptureMulti1 добавляется в файл asound.conf по умолчанию для справки), arecord -DCaptureMulti1 -f S16_LE -r 16000 -c 7 /tmp/test.wav &。

2.20.7. Метод аудиотестирования ставок.

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.20.7.1Играть
Язык кода:javascript
копировать
проходитьLINEOUT->Speakerиграть
amixer -Dhw:audiocodec cset name='LINEOUTL Output Select' 1
amixer -Dhw:audiocodec cset name='LINEOUTR Output Select' 1
amixer -Dhw:audiocodec cset name='LINEOUT Switch' 1
amixer -D hw:audiocodec cset name='LINEOUT volume' 15
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
Или Пользователь использует устройство PCM, настроенное в файле /etc/asound.conf по умолчанию, для выполнения игры:
aplay -Ddefault /mnt/UDISK/1KHz_0dB_16000.wav
От наушниковиграть
amixer -D hw:audiocodec cset name='Headphone Switch' 1
amixer -D hw:audiocodec cset name='Headphone volume' 3
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
2.20.7.2 Запись
Язык кода:javascript
копировать
через внутренний микрофон 1,MIC2Записатьпараряд
amixer -D hw:audiocodec cset name='Выбор входа MIC1' 0
amixer -D hw:audiocodec cset name='Выбор входа MIC2' 0
amixer -D hw:audiocodec cset name='MIC1 Switch' 1
amixer -D hw:audiocodec cset name='MIC2 Switch' 1
amixer -D hw:audiocodec cset name='MIC1 усиление громкости' 19
amixer -D hw:audiocodec cset name = 'Громкость усиления MIC2' 19
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 /tmp/test.wav

2.21 Аудиоинтерфейс F133

F133 содержит несколько аудиомодулей, включая встроенный аудиокодек, I2S1, I2S2, DMIC и SPDIF.

2.21.1 Источник синхронизации.

В F133 источником синхронизации аудиомодуля являются pll_audio0 и pll_audio1_div5.

pll_audio0 может выводить тактовую частоту 22,5792M, а pll_audio1_div5 может выводить тактовую частоту 24,576M соответственно. Поддержка серии 44.1k, серии 48k вещателей запись.

2.21.2 AudioCodec

2.21.2.1 Аппаратные особенности

• Два ЦАП

  • поддержка16 бит, эффективная точность выборки 20 бит
  • поддерживать8KHz~192KHzЧастота выборки
  • Трехходовой АЦП
  • поддержка16 бит, эффективная точность выборки 20 бит
  • поддерживать8KHz~48KHzЧастота выборки
  • Аналоговый выход:
  • Один стереовыход HPOUTL, HPOUTR
  • Аналоговый дифференциальный вход:
  • Один дифференциальный микрофонный вход MIC3P/N
  • Один линейный стереовход LINEINL, LINEINR
  • Один стерео FM-вход FMINL, FMINR
  • поддерживать воспроизведение и запись одновременно (полнодуплексный режим)
  • DACиADCвсеподдерживатьDRC
2.21.2.2 Конфигурация ядра

конфигурация kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun20iw1 Codec Support
<*> Allwinner Audio Simple Card
[ ] Allwinner RX SYNC Support

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

Allwinner Sun20iw1 Codec Support

audiocodec

Allwinner Audio Simple Card

Привязать звуковую карту

Allwinner RX SYNC Support

Синхронизация функциональных компонентов

2.21.2.3 Конфигурация DTS.

board.dts конфигурация уровня платы

Язык кода:javascript
копировать
&codec {
/* MIC and headphone gain setting */
mic1gain = <0x1F>;
mic2gain = <0x1F>;
mic3gain = <0x1F>;
/* ADC/DAC DRC/HPF func enabled */
¦ /* 0x1:DAP_HP_EN; 0x2:DAP_SPK_EN; 0x3:DAP_HPSPK_EN */
adcdrc_cfg = <0x0>;
adchpf_cfg = <0x1>;
dacdrc_cfg = <0x0>;
dachpf_cfg = <0x0>;
/* Volume about */
digital_vol = <0x00>;
lineout_vol = <0x1a>;
headphonegain = <0x03>;
/* Pa enabled about */
pa_level = <0x01>;
pa_pwr_level = <0x01>;
pa_msleep_time = <0x78>;
/* gpio-spk = <&pio PF 2 GPIO_ACTIVE_HIGH>;*/
/* gpio-spk-pwr = <&pio PF 4 GPIO_ACTIVE_HIGH>; */
/* CMA config about */
playback_cma = <128>;
capture_cma = <256>;
/* regulator about */
/* avcc-supply = <&reg_aldo1>; */
/* hpvcc-supply = <&reg_eldo1>; */
status = "okay";
};

часть Имя элемента конфигурации

Значение конфигурации

Конфигурацияэлементиллюстрировать

mic3gain

0-31

усиление микрофона3

digital_vol

0-63

Цифровая громкость ЦАП

headphonegain

0-7

Усиление воспроизведения через наушники

pa_level

0-1

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

pa_pwr_level

0-1

Уровень включения мощности усилителя мощности

pa_msleep_time

u32, вообще меньше 200 х

u32, обычно меньше 200, устанавливает время сна, необходимое для включения микросхемы усилителя мощности.

status

“okay”/“disable”

Включить или выключить этот узел

2.21.3 Daudio

2.21.3.1 Аппаратные особенности

• Двусторонний I2S/PCM I2S1 I2S2

  • поддерживать8-192kЧастота выборки
  • поддерживать16 24 32 точность выборки
  • поддерживать1-16многорядзаписьиграть
  • поддерживать 5 режим TDM
    • I2S standard mode
    • Left-justified mode
    • Right-justified mode
    • DSP-A mode(short frame PCM mode)
    • DSP-B mode(long frame PCM mode)
  • поддерживатьпетлевая проверкамодель
  • поддерживатьв то же времяplaybackиcapture
  • Поддержка нескольких звуковых карт синхронизированазапись
2.21.3.2 Конфигурация ядра

конфигурация kernel_menuconfig

Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Audio Simple Card
<*> Allwinner Digital Audio Support
[ ] Allwinner RX SYNC Support

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

Allwinner Sun20iw1 Codec Support

I2S/PCM

Allwinner Audio Simple Card

Привязать звуковую карту

Allwinner RX SYNC Support

Синхронизация функциональных компонентов

2.21.3.3 Конфигурация DTS.

board.dts конфигурация уровня платы

Язык кода:javascript
копировать
&daudio1 {
mclk_div = <0x01>;
frametype = <0x00>;
tdm_config = <0x01>;
sign_extend = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x80>;
slot_width_select = <0x20>;
pinctrl-names = "default", "sleep";
Язык кода:javascript
копировать
pinctrl-0 = <&daudio1_pins_a>;
pinctrl-1 = <&daudio1_pins_b>;
pinctrl_used = <0x0>;
status = "disabled";
};
&sounddaudio1 {
status = "disabled";
daudio1_master: simple-audio-card,codec {
/* sound-dai = <&ac108>; */
};
};

Конфигурация дерева устройств sun20iw1p1.dtsi

Язык кода:javascript
копировать
daudio1:daudio@2033000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-daudio";
reg = <0x0 0x02033000 0x0 0xa0>;
clocks = <&ccu CLK_PLL_AUDIO0>,
¦<&ccu CLK_I2S1>,
¦<&ccu CLK_BUS_I2S1>;
clock-names = "pll_audio", "i2s1", "i2s1_bus";
resets = <&ccu RST_BUS_I2S1>;
dmas = <&dma 4>, <&dma 4>;
dma-names = "tx", "rx";
interrupts-extended = <&plic0 43 IRQ_TYPE_LEVEL_HIGH>;
sign_extend = <0x00>;
tx_data_mode = <0x00>;
rx_data_mode = <0x00>;
msb_lsb_first = <0x00>;
pcm_lrck_period = <0x80>;
slot_width_select = <0x20>;
frametype = <0x00>;
tdm_config = <0x01>;
tdm_num = <0x01>;
mclk_div = <0x00>;
clk_parent = <0x01>;
capture_cma = <128>;
playback_cma = <128>;
tx_num = <4>;
tx_chmap1 = <0x76543210>;
tx_chmap0 = <0xFEDCBA98>;
rx_num = <4>;
rx_chmap3 = <0x03020100>;
rx_chmap2 = <0x07060504>;
rx_chmap1 = <0x0B0A0908>;
rx_chmap0 = <0x0F0E0D0C>;
asrc_function_en = <0x00>;
rx_sync_en = <0x00>;
device_type = "daudio1";
status = "disabled";
};
sounddaudio1: sounddaudio1@20330a0 {
reg = <0x0 0x020330a0 0x0 0x4>;
compatible = "sunxi,simple-audio-card";
simple-audio-card,name = "snddaudio1";
simple-audio-card,format = "i2s";
status = "disabled";
simple-audio-card,cpu {
sound-dai = <&daudio1>;
};
};

часть Имя элемента конфигурации

Значение конфигурации

Конфигурацияэлементиллюстрировать

status

“okay”“disable”

Включить или отключить драйвер sndaudio

mclk_div

0-192

mclk коэффициент деления частоты, значение 0/1/2/4/8/12/16/24/32/48/64/96/128/176/192

frametype

0-1

0:short frame(1 clock width) 1:longframe(2 clock width)

tdm_config

0-1

0:PCM mode 1:I2S mode

sign_extend

0-1

0:zero pending 1:sign extend

msb_lsb_first

0-1

0:msb first 1:lsb first

pcm_lrck_period

16/32/64/128/256

Обычно настраивается на 16/32/64/128/256 bclk.

slot_width_select

8/16/32

slotподдерживать8/16/32-битная ширина

tx_data_mode

0/1/2/3

0:16bit linear PCM 1:reserved2:8bit u-law 3:8bit a-law

rx_data_mode

0/1/2/3

0:16bit linear PCM 1:reserved2:8bit u-law 3:8bit a-law

simple-audio-card,name

string

Название звуковой карты

simple-audio-card,format

string

Режим I2S tdm, значение «i2s»/«right_j»/«left_j»/«dsp_a»/«dsp_b»

simple-audio-card,frame-master

Аннотация ложна, в противном случае она верна

Настройте отношение «ведущий-подчиненный» кадра clk. Если не настроено, сок будет ведущим, в противном случае сок будет подчиненным.

simple-audio-card,bitclock-master

Аннотация ложна, в противном случае она верна

Настройте отношение master-slave бита clk. Если оно не настроено, soc будет ведущим. В противном случае soc будет подчиненным.

simple-audio-card,frame-inversion

Аннотация ложна, в противном случае она верна

Настройте полярность clk кадра на инвертацию, если она не настроена, полярность нормальная;

simple-audio-card,bitclock-inversion

Аннотация ложна, в противном случае она верна

Настройте инверсию полярности бита clk; если она не настроена, это будет нормальная полярность.

simple-audio-card,capture_only

Аннотация ложна, в противном случае она верна

толькоподдерживатьзапись

simple-audio-card,playback_only

Аннотация ложна, в противном случае она верна

толькоподдерживатьиграть

2.21.4 DMIC.

2.21.4.1 Аппаратные особенности
  • поддерживать8-48kЧастота выборки
  • поддерживать16 24 точность выборки
  • поддерживать1-8многорядзаписьиграть
  • Поддержка нескольких звуковых карт синхронизированазапись
2.21.4.2 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Audio Simple Card
<*> Allwinner DMIC Support
[ ] Allwinner RX SYNC Support

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

Allwinner Sun20iw1 Codec Support

dmic

Allwinner Audio Simple Card

Привязать звуковую карту

Allwinner RX SYNC Support

Синхронизация функциональных компонентов

2.21.4.3 Конфигурация DTS.
Язык кода:javascript
копировать
&dmic {
pinctrl-names = "default","sleep";
pinctrl-0 = <&dmic_pins_a>;
pinctrl-1 = <&dmic_pins_b>;
rx_sync_en = <0x00>;
status = "okay";
};
&dmic_codec {
status = "okay";
};
&sounddmic {
status = "okay";
};

часть Имя элемента конфигурации

Значение конфигурации

Конфигурацияэлементиллюстрировать

status

“okay”/“disable”

Включить или выключить этот узел

rx_sync_en

Аннотация ложна, в противном случае она верна

Регистрировать ли компонент rx_sync

2.21.5 SPDIF

2.21.5.1 Аппаратные особенности
  • поддерживать22.05-192kЧастота выборки
  • поддерживать16 24 точность выборки
  • поддерживать1-2многорядзаписьиграть
  • Поддержка нескольких звуковых карт синхронизированазапись
  • поддерживатьпетлевая проверкамодель
  • поддерживатьIEC-60958протокол
  • поддерживатьIEC-61937протокол
2.21.5.2 Конфигурация ядра
Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Audio Simple Card
<*> Allwinner SPDIF Support
[ ] Allwinner RX SYNC Support

Имя элемента конфигурации

Конфигурацияэлементиллюстрировать

Allwinner Sun20iw1 Codec Support

spdif

Allwinner Audio Simple Card

Привязать звуковую карту

Allwinner RX SYNC Support

Синхронизация функциональных компонентов

2.21.5.3 Конфигурация DTS.
Язык кода:javascript
копировать
&spdif {
pinctrl-names = "default","sleep";
pinctrl-0 = <&spdif_pins_a>;
pinctrl-1 = <&spdif_pins_b>;
Язык кода:javascript
копировать
rx_sync_en = <0x00>;
status = "okay";
};
&soundspdif {
status = "okay";
};

часть Имя элемента конфигурации

Значение конфигурации

Конфигурацияэлементиллюстрировать

status

“okay” “disable”

Включить или выключить этот узел

rx_sync_en

Аннотация ложна, в противном случае она верна

Регистрировать ли компонент rx_sync

2.21.6 Метод аудиотестирования ставок.

В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.

2.21.6.1Играть
Язык кода:javascript
копировать
От наушниковиграть
1. После загрузки загрузите тестовый аудиофайл 48000.wav на маленький компьютер, ПКЗаказ: adb push 48000.wav /tmp/
2.играть этот аудиофайл, aplay /tmp/48000.wav
2.21.6.2 Запись
Язык кода:javascript
копировать
mic:
1. Включите mic3ряд:amixer set "ADC3 Input MIC3 Boost" on
2.настраиватьусиление микрофона3:amixer cset name="MIC3 gain volume" 31
3.запись5s:arecord -D hw:audiocodec -f S16_LE -r 44100 -c 1 /tmp/test.wav --period-size 1024
--buffer-size 4096 -d 5
linein:
1. Включить lineinряд: amixer set "ADC1 Input LINEINL" on;amixer set "ADC2 Input LINEINR" on
2. Установите линейное усиление: микшер. cset name="LINEINL gain volume" 1;amixer cset name="LINEINR gain
volume" 1
3.запись5s:arecord -D hw:audiocodec -f S16_LE -r 44100 -c 2 /tmp/test.wav --period-size 1024
--buffer-size 4096 -d 5
fmin:
1. Включить fminряд: amixer set "ADC1 Input FMINL" on;amixer set "ADC2 Input FMINR" on
2. Установите усиление fmin: смеситель. cset name="FMINL gain volume" 1;amixer cset name="FMINR gain volume" 1
3.запись5s:arecord -D hw:audiocodec -f S16_LE -r 44100 -c 2 /tmp/test.wav --period-size 1024
--buffer-size 4096 -d 5
I2S:
1. Загрузите аудиофайлы на маленький компьютер: adb push 16000.wav /tmp/16000.wav

2. Настройте I2S LoopbackФункция:amixer -D hw:snddaudio2 cset name=‘sunxi daudio loopback debug’ 1 3. Начать запись: запись. -D hw:snddaudio2 -f S16_LE -r 44100 -c 2 /tmp/test_su.wav --period-size 1024 --buffer-size 4096 & 4. Начните играть: aplay -D hw:snddaudio2 /tmp/16000.wav 5.После окончания игры убить всех arecord завершает задачу записи 6. С помощью команды adb вытащите test_su.wav и проверьте, соответствуют ли аудиоданные воспроизводимому контенту на ПК.

3 3Распространенные инструменты и методы отладки

3.1 3.1 alsa-utils

Стандартный инструмент ALSA, использующий стандартную библиотеку alsa-lib. Часто используемые из них включают amixer, aplay, arecord и т. д.

3.1.1 3.1.1 amixer

amixer — это инструмент регулятора драйвера звуковой карты ALSA из командной строки, используемый для настройки управления микшером.

Как использовать:

• Часто используемые опции

Параметры

Функция

-D,–device

Укажите устройство звуковой карты, по умолчанию используется значение default.

• Часто используемые команды

Заказ

Функция

controls

Список всех элементов управления для указанной звуковой карты

contents

Список всех элементов управления для указанной звуковой Подробная информация о карте

cget

Получить информацию об указанном элементе управления

cset

Установить значение указанного элемента управления

Пример:

Язык кода:javascript
копировать
Получить все управляющие имена звуковой карты аудиокодека.
amixer -Dhw:audiocodec controls
Получить текущий объем оборудования
amixer -Dhw:audiocodec cget name='LINEOUT volume'
Установить текущий аппаратный объем
amixer -Dhw:audiocodec cget name='LINEOUT volume' 25
3.1.2 3.1.2 aplay

aplayда Заказ ХОРОШОизALSAзвуковая картаводить машинуизигратьинструмент,используется дляиграть Функция。

Как использовать:

Параметры

Функция

-D,–device

Укажите устройство звуковой карты, по умолчанию используется значение default.t

-l,–list-devices

Список всех текущих звуковых карт

-t,–file-type

Укажите формат воспроизводимого файла, например voc, wav, raw. Если не указано, заголовок файла будет считан для идентификации.

-c,–channels

Укажите количество каналов

-f,–format

Укажите формат выборки

-r,–rate

Частота выборки

-d,–duration

Укажите время воспроизведения

–period-size

Укажите размер периода

–buffer-size

Указанный размер буфера

Если игра — это WAV-файл,Заголовки можно анализировать,Определите номер ряда,Частота выборкии другие параметры。

Пример:

Язык кода:javascript
копировать
aplay -Dhw:audiocodec /mnt/UDISK/test.wav
3.1.3 3.1.3 arecord.

arecordда Заказ ХОРОШОизALSAзвуковая картаводить машинуиззаписьинструмент,используется длязапись Функция。

Как использовать:

Параметры

Функция

-D,–device

Укажите устройство звуковой карты, по умолчанию используется значение default.t

-l,–list-devices

Список всех текущих звуковых карт

-t,–file-type

Укажите формат воспроизводимого файла, например voc, wav, raw. Если не указано, заголовок файла будет считан для идентификации.

-c,–channels

Укажите количество каналов

-f,–format

Укажите формат выборки

-r,–rate

Частота выборки

-d,–duration

Укажите время воспроизведения

–period-size

Укажите размер периода

–buffer-size

Указанный размер буфера

Пример:

Язык кода:javascript
копировать
Записывать5s,Количество рядов — 2.,Частота выборки — 16000, точность выборки — 16 бит, сохраняется в виде wav-файла.
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 -d 5 /mnt/UDISK/test.wav
3.1.4 3.1.4 alsaconf

alsaconf относится к файлу конфигурации ALSA. Используйте alsa-lib, чтобы открыть звуковую карту и управлять PCM и микшером. Загрузите файл конфигурации в соответствующее место, чтобы управлять работой оборудования PCM и микшера.

Сначала будет прочитан файл конфигурации /usr/share/alsa/alsa.conf, который содержит следующие перехватчики.

Язык кода:javascript
копировать
@hooks [
{
func load
files [
{
@func concat
strings [
{ @func datadir }
"/alsa.conf.d/"
]
}
"/etc/asound.conf"
"~/.asoundrc"
]
errors false
}
]

Здесь настроена ловушка для чтения соответствующих файлов конфигурации каталога:

Язык кода:javascript
копировать
/usr/share/alsa/alsa.conf.d/
/etc/asound.conf
~/.asoundrc

Эти файлы конфигурации можно установить по умолчанию. карта,Пользовательское устройство PCM,Плагин alsa и другие функции, см.:

https://www.alsa-project.org/alsa-doc/alsa-lib/conf.html

https://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html

В tina sdk есть соответствующие пакеты программного обеспечения, которые устанавливают файл /etc/asound.conf, который можно использовать в качестве ссылки.

Как использовать:

Выполните команду make menuconfig в корневом каталоге tina и выберите пакет программного обеспечения alsa-conf-aw.

Он создаст файл /etc/asound.conf, который кратко представлен ниже:

Язык кода:javascript
копировать
Установите звуковую карту по умолчанию для работы микшера (выполнение snd_hctl_open приведет к получению этой конфигурации)
ctl.!default {
type hw
card audiocodec
}
Установите звуковую карту по умолчанию (выполнение snd_pcm_open приведет к получению этой конфигурации)
pcm.!default {
type asym
playback.pcm "PlaybackDmix"
capture.pcm "CaptureDsnoop"
}

Используя плагин dmix, вы можете микшировать и воспроизводить песни, то есть открывать звуковую карту несколько раз для воспроизведения песен.
pcm.PlaybackDmix {
type plug
slave.pcm {
type dmix
ipc_key 1111
ipc_perm 0666
slave {
pcm "hw:audiocodec"
rate 48000
channels 2
}
}
}

используя плагин dsnoop, вы можете микшировать запись, то есть поддерживать открытие звуковой карты несколько раз для записи
pcm.CaptureDsnoop {
type plug
slave.pcm {
type dsnoop
ipc_key 1111
ipc_perm 0666
slave {
pcm "hw:audiocodec,0"
rate 48000
channels 2
}
}
}

используется плагин dmix и плагин softvol, плагин softvol может добавить элемент управления громкостью (настройка в программном обеспечении)
pcm.PlaybackDmix {
type plug
slave.pcm {
type softvol
slave.pcm {
type dmix
ipc_key 1111
ipc_perm 0666
slave {
pcm "hw:audiocodec,0"
rate 48000
channels 1
}
}
control {
name "Soft Volume Master"
card audiocodec
}
min_dB -51.0
max_dB 0.0
resolution 256
}
}

3.2 3.2 tinyalsa-utils.

tinyalsa — это упрощенная версия alsa-lib. Он предоставляет базовые интерфейсы для ПКМ и управления, ничего сложного; Действие, функция. Интерфейс доступен по запросу. tinyalsa-utils — это некоторые инструменты, основанные на tinyalsa. Вот некоторые из наиболее часто используемых: Представлены инструменты.

3.2.1 3.2.1 tinymix

Подобно смесителю, он используется для управления смесителем.

• Часто используемые опции

Параметры

Функция

-D,–card

Укажите устройство звуковой карты, по умолчанию используется card0

• Часто используемые команды

Заказ

Функция

controls

Список всех элементов управления для указанной звуковой карты

contents

Список всех элементов управления для указанной звуковой Подробная информация о карте

get

Получить информацию об указанном элементе управления

set

Установить значение указанного элемента управления

Пример:

Язык кода:javascript
копировать
Получить все управляющие имена card0
tinymix -D 0 controls
Получить текущий аппаратный объем карты 0
tinymix -D 0 get 'LINEOUT volume'
Установите текущий аппаратный том card0
tinymix -D 0 set 'LINEOUT volume' 25
3.2.2 3.2.2 tinyplay

Подобно aplay, он используется для управления звуковой картой при воспроизведении.

• Часто используемые опции

Параметры

Функция

-D,–card

Укажите устройство звуковой карты, по умолчанию используется card0

-p,–period-size

Указанный размер периода, одинарный Кусочек для рамки

-c,–channels

Укажите количество каналов

-r,–rate

обозначение Частота выборки

-b,–bits

Укажите точность выборки

Если игра — это WAV-файл,Заголовки можно анализировать,Определите номер ряда,Частота выборкии другие параметры

Пример:

Язык кода:javascript
копировать
tinyplay -D 0 /tmp/16000-stere-10s.wav
3.2.3 3.2.3 tinycap

Как и в случае с записью, он используется для управления звуковой картой при записи. Функция

• Часто используемые опции

Параметры

Функция

-D,–device

Укажите устройство звуковой карты, по умолчанию используется card0

-p,–period-size

Указанный размер периода, одинарный Кусочек для рамки

-c,–channels

Укажите количество каналов

-r,–rate

обозначение Частота выборки

-b,–bits

Укажите точность выборки

Пример:

Язык кода:javascript
копировать
Записывать Количество рядов — 2.,Частота выборки — 16000, точность выборки — 16 бит, сохраняется в виде wav-файла.
tinycap -D 0 -b 16 -r 16000 -c 2 /mnt/UDISK/test.wav

3.3 3.3 дамп регистра

Наша платформа sunxi предоставляет драйвер sunxi_dump для просмотра регистров чтения и записи.

Узел расположен в каталоге /sys/class/sunxi_dump.

Однако работа аналогового регистра аудиокодека несколько особенная. Обычно мы добавляем соответствующие разделы отладки в аудиодрайвер. Нажмите, чтобы управлять регистрами вашего модуля для отладки.

3.3.1 3.3.1 дамп регистра аудиокодека

Узел отладки регистров драйвера аудиокодека находится по адресу:

Язык кода:javascript
копировать
/sys/devices/platform/soc/codec/audio_reg_debug/audio_reg

Как использовать:

Запишите следующие параметры через echo

Параметр 1: 0-чтение; 1-запись;

Параметр 2: 1-цифровой регистр, 2-аналоговый регистр;

Параметр 3: рег. значение

Параметр 4: записать значение

Пример:

Посмотреть весь статус регистрации:

Язык кода:javascript
копировать
cat /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Выведите следующее (регистры с адресами выше 0x300 — аналоговые регистры, остальные — цифровые):
dump audio reg:
SUNXI_DAC_DPC [0x000]: 0x0 Save:0x0
SUNXI_DAC_FIFO_CTL [0x010]: 0x3004000 Save:0x0
SUNXI_DAC_FIFO_STA [0x014]: 0x80800c Save:0x0
SUNXI_DAC_CNT [0x024]: 0xb4014 Save:0x0
SUNXI_DAC_DG [0x028]: 0x0 Save:0x0
SUNXI_ADC_FIFO_CTL [0x030]: 0xe000400 Save:0x0
SUNXI_ADC_FIFO_STA [0x038]: 0x0 Save:0x0
SUNXI_ADC_CNT [0x044]: 0x0 Save:0x0
SUNXI_ADC_DG [0x04c]: 0x0 Save:0x0
SUNXI_DAC_DAP_CTL [0x0f0]: 0x0 Save:0x0
SUNXI_ADC_DAP_CTL [0x0f8]: 0x0 Save:0x0
SUNXI_HP_CTL [0x300]: 0x0 Save:0x0
SUNXI_MIX_DAC_CTL [0x303]: 0x0 Save:0x0
SUNXI_LINEOUT_CTL0 [0x305]: 0x10 Save:0x0
SUNXI_LINEOUT_CTL1 [0x306]: 0x19 Save:0x0
SUNXI_MIC1_CTL [0x307]: 0x34 Save:0x0
SUNXI_MIC2_MIC3_CTL [0x308]: 0x4 Save:0x0
SUNXI_LADCMIX_SRC [0x309]: 0x4 Save:0x0
SUNXI_RADCMIX_SRC [0x30a]: 0x8 Save:0x0
SUNXI_XADCMIX_SRC [0x30b]: 0x10 Save:0x0
Язык кода:javascript
копировать
SUNXI_ADC_CTL [0x30d]: 0x3 Save:0x0
SUNXI_MBIAS_CTL [0x30e]: 0x21 Save:0x0
SUNXI_APT_REG [0x30f]: 0xd6 Save:0x0
SUNXI_OP_BIAS_CTL0 [0x310]: 0x55 Save:0x0
SUNXI_OP_BIAS_CTL1 [0x311]: 0x55 Save:0x0
SUNXI_ZC_VOL_CTL [0x312]: 0x2 Save:0x0
SUNXI_BIAS_CAL_CTRL [0x315]: 0x0 Save:0x0

Проверьте состояние цифрового регистра:

Язык кода:javascript
копировать
echo 0,1,0x10 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Распечатайте следующим образом:
[ 127.036609] sunxi-internal-codec codec: ret:3, reg_group:1, reg_offset:16, reg_val:0x0
[ 127.045557] sunxi-internal-codec codec:
[ 127.045557]
[ 127.045557] Reg[0x10] : 0x03004000
[ 127.045557]
Указывает, что значение цифрового регистра 0x10 равно 0x03004000.

Проверьте состояние аналогового регистра:

Язык кода:javascript
копировать
echo 0,2,0x5 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Распечатайте следующим образом:
[ 306.126103] sunxi-internal-codec codec: ret:3, reg_group:2, reg_offset:5, reg_val:0x0
[ 306.134971] sunxi-internal-codec codec:
[ 306.134971]
[ 306.134971] Reg[0x05] : 0x10
[ 306.134971]
Указывает, что значение аналогового регистра 0x05 равно 0x10.

Перезаписать цифровой регистр:

Язык кода:javascript
копировать
echo 1,1,0x24,0 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Указывает на запись цифрового регистра 0x24 как 0x0.

Перезаписать аналоговый регистр:

Язык кода:javascript
копировать
echo 1,2,0x3,0x1 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Указывает на запись аналогового регистра 0x03 как 0x1.
3.3.2 3.3.2 дамп регистра аудио

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

Язык кода:javascript
копировать
i2s0: 0x05090000
i2s1: 0x05091000
i2s2: 0x05092000

Запросить состояние регистра можно через узел sunxi_dump, например, просмотреть регистр i2s0:

Язык кода:javascript
копировать
cd /sys/class/sunxi_dump
echo 0x05090000,0x050900a0 > dump
cat dump
3.3.3 3.3.3 дамп регистра dmic

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

Язык кода:javascript
копировать
dmic: 0x05095000

Вы можете запросить статус регистра через узел sunxi_dump:

Язык кода:javascript
копировать
cd /sys/class/sunxi_dump
echo 0x05095000,0x05095050 > dump
cat dump
3.3.4 3.3.4 дамп регистра spdif

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

Язык кода:javascript
копировать
spdif: 0x05093000

Вы можете запросить состояние регистра spdif через узел sunxi_dump:

Язык кода:javascript
копировать
cd /sys/class/sunxi_dump
echo 0x05093000,0x05093040 > dump
cat dump

3.4 3.4 sound procfs.

Через узлы, связанные со звуковой картой, в файловой системе procfs, вы можете получить статус каждого аудиопотока каждой звуковой карты. Фактическое совещание по отладке Очень полезно.

Ядру необходимо выбрать следующие параметры для создания соответствующего узла в procfs:

Язык кода:javascript
копировать
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
[*] Sound Proc FS Support
[*] Verbose procfs contents

Возьмите card0 в качестве примера, чтобы просмотреть предоставленную информацию об узле:

Язык кода:javascript
копировать
ddd
/proc/asound/card0/
├── id /*Название звуковой карты*/
├── pcm0c /* pcm0записьStream*/
│ ├── info /* информация о ПКМ*/
│ └── sub0
│ ├── hw_params /*Информация о параметрах оборудования*/
│ ├── info /* информация о ПКМ*/
│ ├── status /* Статус потока PCM*/
│ └── sw_params /*Информация о параметрах программного обеспечения*/
└── pcm0p /* pcm0игратьпоток*/
├── info
└── sub0

Среди них hw_params и status могут получить более полезную информацию:

Язык кода:javascript
копировать
cat /proc/asound/card0/pcm0c/sub0/hw_params
access: RW_INTERLEAVED /*Расположение узоров в шахматном порядке*/
format: S16_LE /*Точность выборки текущего аудиопотока*/
subformat: STD
channels: 2 /*рядчисло*/
rate: 16000 (16000/1) /*Частота выборки*/
period_size: 320 /*Период (определяет время прерывания dma, например здесь period_time=320/16000=20мс)
*/
buffer_size: 2560 /*Размер кольцевого буфера в структуре ядра ALSA определяет, сколько периодов можно кэшировать. */
cat /proc/asound/card0/pcm0c/sub0/status
state: RUNNING /*Состояние работы аудиопотока, РАБОТАЕТ, НАСТРОЙКА и прочий статус */
owner_pid : 22653
trigger_time: 81828.078175765
tstamp : 82373.796969347 /*Информация о временной метке после начала операции*/
delay : 256
avail : 256 /*Количество доступных на данный момент кадров аудиоданных*/
avail_max : 320
-----
hw_ptr : 8731456 /*Аппаратный логический указатель, одиночный Кусочек(кадр) */
appl_ptr : 8731200 /*Логический указатель приложения, одиночный Кусочек(кадр) */
  • Вы можете узнать текущую частоту прерываний dma из period_size. Если она слишком быстрая, это повлияет на скорость ответа системы. Если она слишком медленная, может возникнуть проблема. Фиксированная задержка.
  • buffer_size может знать размер буферной области. Если он слишком мал, может произойти xrun из-за несвоевременного планирования. Если он слишком велик, также будет определенная задержка.
  • из hw_ptr, appl_ptr может знать текущий номер кадра записи/трансляции, произошел ли xrun и т. д.

4 4 Общие описания интерфейсов

Здесь мы в основном представляем общие интерфейсы в alsa-lib.

4.1 4.1 интерфейс управления

Чтобы облегчить работу и доступ, соответствующие интерфейсы инкапсулированы в alsa-lib и могут быть получены через узел управления (/dev/snd/controlCX). Получение и установка элементов управления

В основном задействованы интерфейсы:

Язык кода:javascript
копировать
snd_ctl_open
snd_ctl_elem_info_get_id
snd_ctl_elem_info_set_id
snd_ctl_elem_info
snd_ctl_ascii_value_parse
snd_ctl_elem_read
snd_ctl_elem_write
snd_ctl_close

подробныйинтерфейс управленияиллюстрироватьпожалуйста, проверьте:

https://www.alsa-project.org/alsa-doc/alsa-lib/control.html

https://www.alsa-project.org/alsa-doc/alsa-lib/group___control.html

Ниже приведен пример настройки интерфейса громкости:

Язык кода:javascript
копировать
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
#include <alsa/asoundlib.h>
#define DEV_NAME "hw:audiocodec"
#define VOLUME_CONTROL "name='LINEOUT volume'"
/* Fuction to convert from percentage to volume. val = volume */
static int convert_volume(int percent, long min, long max)
{
long range = max - min;
Язык кода:javascript
копировать
if (range == 0)
return 0;
return (int)((range * percent / 100) + min);

}

bool controlVolume(int volume_percent) { int err = -1; snd_ctl_t *handle = NULL; char *card = DEV_NAME; char *volume_control = VOLUME_CONTROL; char volume_string[4]; long min, max, raw; snd_ctl_elem_info_t *info = NULL; snd_ctl_elem_id_t *id = NULL; snd_ctl_elem_value_t *control = NULL; if (volume_percent > 100 || volume_percent < 0) return false; snd_ctl_elem_info_alloca(&info); snd_ctl_elem_id_alloca(&id); snd_ctl_elem_value_alloca(&control); err = snd_ctl_ascii_elem_id_parse(id, volume_control); if (err < 0) { fprintf(stderr, “Wrong control identifier: %s\n”, volume_control); goto failed; } err = snd_ctl_open(&handle, card, 0); if (err < 0) { fprintf(stderr, “Control device %s open error:%s\n”, card, snd_strerror(err)); goto failed; } snd_ctl_elem_info_set_id(info, id); err = snd_ctl_elem_info(handle, info); if (err < 0) { fprintf(stderr, “Cannot find the given element from control %s\n”, card); goto failed; } snd_ctl_elem_info_get_id(info, id); snd_ctl_elem_value_set_id(control, id); err = snd_ctl_elem_read(handle, control); if (err < 0) { fprintf(stderr, “Cannot read the given element from control %s\n”, card); goto failed; } min = snd_ctl_elem_info_get_min(info); max = snd_ctl_elem_info_get_max(info); snprintf(volume_string, sizeof(volume_string), “%d”, convert_volume(volume_percent, min , max)); /printf(“set volume %s, [%u%%]\n”, volume_string, volume_percent);/ err = snd_ctl_ascii_value_parse(handle, control, info, volume_string); if (err < 0) { fprintf(stderr, “Control %s parse error: %s\n”, card, snd_strerror(err)); goto failed; } err = snd_ctl_elem_write(handle, control);

Язык кода:javascript
копировать
if (err < 0) {
fprintf(stderr, "Control %s write error: %s\n", card, snd_strerror(err));
goto failed;
}
failed:
if (info)
snd_ctl_elem_info_free(info);
if (id)
snd_ctl_elem_id_free(id);
if (control)
snd_ctl_elem_value_free(control);
if (handle)
snd_ctl_close(handle);
return ((err < 0)? false : true);
}

4.2 4.2 PCM-интерфейс.

Чтобы облегчить работу и доступ, alsa-lib инкапсулирует соответствующие интерфейсы через узел pcmCXDXp/pcmCXDXc (/dev/s- nd/pcmCXDXx) для достижения игры、запись Функция。

В основном задействованы интерфейсы:

Язык кода:javascript
копировать
snd_pcm_open
snd_pcm_info
snd_pcm_hw_params_any
snd_pcm_hw_params_set_access
snd_pcm_hw_params_set_format
snd_pcm_hw_params_set_channels
snd_pcm_hw_params_set_rate_near
snd_pcm_hw_params_set_buffer_size_near
snd_pcm_hw_params
snd_pcm_sw_params_current
snd_pcm_sw_params
snd_pcm_readi
snd_pcm_writei
snd_pcm_close

Для подробной иллюстрации интерфейса PCM проверьте:

https://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

https://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html

Примеры использования интерфейса см. в реализации aplay и arecord. Код можно найти в alsa-utils (dl/alsa-utils-). 1.1.0.tar.bz2)

5. Функция запуска музыки

Здесь функция загрузки музыка, относится к запуску dma на этапе uboot для передачи аудиоданных в AudioCodec. Песни воспроизводятся в FIFO, в то время как ЦП продолжает процесс загрузки и обращается к ядру. После входа в систему загрузите звук в соответствующий скрипт запуска. Модуль частотного драйвера (если он встроен, музыка останавливается раньше), поэтому загрузочная музыка может быть значительно расширена, что дает пользователю возможность быстро Иллюзия быстрой загрузки.

Текущие платформы поддержкиubootФункция загрузки музыки в коде SDK: R6, R7s, R11, R16, R328, R311, MR133.

Методы настройки использования относительно схожи. Ниже в качестве примера для выполнения использования используется R328.

5.1 Метод настройки

  1. Изменить файл конфигурации uboot
    • Конфигурацию по умолчанию configs/sun8iw18p1_defconfig можно изменить, добавив следующие элементы: CONFIG_SOUND_SUNXI_SOC_RWFUNC=y CONFIG_SOUND_SUNXI_SUN8IW18_CODEC=y CONFIG_SOUND_SUNXI_BOOT_TONE=y
    • Вы также можете настроить его через kconfig и выполнить makemenu- в каталоге lichee/brandy-2.0/u-boot-2018. config ARCH=arm,Выберите соответствующий Функцияэлемент:выбиратьсерединаsun8iw18изcodecводить машинуки Функция загрузки музыки
  1. Изменить файл sys_config
Язык кода:javascript
копировать
Настройте boottone_used на 1,поверхность Показыватьиспользовать Функция загрузки музыки
;----------------------------------------------------------------------------------
;boot tone configuration
;
;boottone_used ---boot tone enable
;len_limit ---set size in bytes, normally do not need to set it and driver will use
file size
;----------------------------------------------------------------------------------
[boottone]
boottone_used = 1
Язык кода:javascript
копировать
Кроме того, узел кодека также необходимо правильно настроить. Ниже приведены некоторые важные конфигурации.
[codec]
codec_used = 0x1
lineout_vol =0x1a
gpio-spk = port:PH9<1><1><1><1>
  1. Создать загрузочный раздел
Язык кода:javascript
копировать
Аудиофайлы загрузочной музыки нужно вынести в отдельный раздел,Например, загрузочный раздел,Изменить sys_partition.fex
документ:
[partition]
name = boottone
size = 2048
downloadfile = "boottone.fex"
user_type = 0x8000
Язык кода:javascript
копировать
выше 2048 Указывает место в 1 МБ. Уведомление укажите соответствующий размер в соответствии с фактическим размером аудиофайла.
Затем переименуйте аудиофайл в boottone.fex и поместите его в каталог конфигурации решения, используя решение Cowbell-perf1.
Например:
mv kaiji.wav target/allwinner/cowbell-perf1/configs/boottone.fex
  1. Изменить файл конфигурации env
Язык кода:javascript
копировать
В основном добавьте следующие строки:
uboot_tone_addr=0x4327ffd4
boottone_partition=загрузочный тон
load_boottone=sunxi_flash прочитать ${uboot_tone_addr} ${boottone_partition}
Язык кода:javascript
копировать
uboot_tone_addr используется для указания адреса, по которому аудиофайлы загружаются в драм.
bootone_partition используется для указания имени раздела, в котором находится аудиофайл.
load_boottone используется для загрузки аудиофайлов в драм Заказ
  1. Скомпилировать ядро ​​кодека Аудио Драйвер в модуль
Язык кода:javascript
копировать
make kernel_menuconfig удаляет следующие конфигурации:
@@ -702,14 +705,9 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
# CONFIG_SND_SOC_WM8960 is not set
# CONFIG_SND_SOC_WM8974 is not set
# CONFIG_SND_SOC_WM8985 is not set
Язык кода:javascript
копировать
-CONFIG_SND_SUN8IW18_CODEC=y
# CONFIG_SND_SUNXI_MAD is not set
-CONFIG_SND_SUNXI_SOC=y
-CONFIG_SND_SUNXI_SOC_CPUDAI=y
-CONFIG_SND_SUNXI_SOC_DAUDIO=y
-CONFIG_SND_SUNXI_SOC_RWFUNC=y
-CONFIG_SND_SUNXI_SOC_SUN8IW18_CODEC=y
-CONFIG_SND_SUNXI_SOC_SUNXI_DAUDIO=y
+# CONFIG_SND_SUNXI_SOC_SUN8IW18_CODEC is not set
+# CONFIG_SND_SUNXI_SOC_SUNXI_DAUDIO is not set
# CONFIG_SND_SUNXI_SOC_SUNXI_DMIC is not set
# CONFIG_SND_SUNXI_SOC_SUNXI_SPDIF is not set
CONFIG_SND_SUPPORT_OLD_API=y
Язык кода:javascript
копировать
make menuconfigУвеличиватьводить машинумодуль Конфигурация
@@ -2923,7 +2929,7 @@ CONFIG_PACKAGE_kmod-sound-core=y
# CONFIG_PACKAGE_kmod-sound-soc-ac97 is not set
# CONFIG_PACKAGE_kmod-sound-soc-core is not set
# CONFIG_PACKAGE_kmod-sound-via82xx is not set
-# CONFIG_PACKAGE_kmod-sunxi-sound is not set
+CONFIG_PACKAGE_kmod-sunxi-sound=y

5.2 Меры предосторожности

  1. Когда uboot завершает работу, dma невозможно отключить. Если звук меняется или исчезает при прыжке с питомника, пожалуйста, подтвердите переход на Вызывается ли sunxi_dma_exit() перед ядром;
  2. Ядро не знает, где uboot загружает звук в драм. Теоретически ядро ​​может находиться в процессе инициализации. Эта часть памяти используется, из-за чего музыка становится ненормальной.
    • может быть в дтс,Измените память этого куска на атрибут резерва.,Это может гарантировать, что ядро ​​не будет повреждено.
    • Выберите блоки памяти, которые не будут использоваться при инициализации ядра.
  3. Вы можете выполнить заказ загрузки под строкой заказа uboot для отладки.

6 Меры предосторожности для аудиомодулей на каждой платформе

6.1 R328.

  1. Только один ЦАП,Итак, когда мы играем в два ряда данных,Аппаратное обеспечение отбросит данные второго ряда. Если ты хочешь
Язык кода:javascript
копировать
Чтобы завершить оба ряда данных, играйте,Необходимо объединить два ряда в программном обеспечении.,ДоступныйalsaРеализация плагина,примернравиться Вниз
Конфигурация поверхности:
pcm.playback {
type plug
slave {
pcm "hw:audiocodec,0"
rate 48000
channels 1
}
}
Язык кода:javascript
копировать
Плагин alsa уменьшит амплитуду двух рядов данных до половины исходного значения (если добавлено напрямую).,Амплитуда в два раза больше исходной.,иметь
Может стать причиной коронации),Затем объедините их в один ряд и запишите в звуковую карту.
  1. использовать При моделировании микрофона для AEC микрофон необходимо Усиление установлено на 0 д Б. При наличии усиления в начале и конце записи будет воспроизводиться поп-звук (поп-звук, создаваемый переключением усилителя мощности, после устранения дифференциальным микрофоном все равно будет очень небольшой шум. Если он установлен). прошел через природу микрофона увеличится, станет явный попсовый звук) rintf(volume_string, sizeof(volume_string), “%d”, convert_volume(volume_percent, min , max)); /printf(“set volume %s, [%u%%]\n”, volume_string, volume_percent);/ err = snd_ctl_ascii_value_parse(handle, control, info, volume_string); if (err < 0) { fprintf(stderr, “Control %s parse error: %s\n”, card, snd_strerror(err)); goto failed; } err = snd_ctl_elem_write(handle, control);
Язык кода:javascript
копировать
if (err < 0) {
fprintf(stderr, "Control %s write error: %s\n", card, snd_strerror(err));
goto failed;
}
failed:
if (info)
snd_ctl_elem_info_free(info);
if (id)
snd_ctl_elem_id_free(id);
if (control)
snd_ctl_elem_value_free(control);
if (handle)
snd_ctl_close(handle);
return ((err < 0)? false : true);
}

4.2 4.2 PCM-интерфейс.

Чтобы облегчить работу и доступ, alsa-lib инкапсулирует соответствующие интерфейсы через узел pcmCXDXp/pcmCXDXc (/dev/s- nd/pcmCXDXx) для достижения игры、запись Функция。

В основном задействованы интерфейсы:

Язык кода:javascript
копировать
snd_pcm_open
snd_pcm_info
snd_pcm_hw_params_any
snd_pcm_hw_params_set_access
snd_pcm_hw_params_set_format
snd_pcm_hw_params_set_channels
snd_pcm_hw_params_set_rate_near
snd_pcm_hw_params_set_buffer_size_near
snd_pcm_hw_params
snd_pcm_sw_params_current
snd_pcm_sw_params
snd_pcm_readi
snd_pcm_writei
snd_pcm_close

Для подробной иллюстрации интерфейса PCM проверьте:

https://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

https://www.alsa-project.org/alsa-doc/alsa-lib/group___p_c_m.html

Примеры использования интерфейса см. в реализации aplay и arecord. Код можно найти в alsa-utils (dl/alsa-utils-). 1.1.0.tar.bz2)

5. Функция запуска музыки

Здесь функция загрузки музыка, относится к запуску dma на этапе uboot для передачи аудиоданных в AudioCodec. Песни воспроизводятся в FIFO, в то время как ЦП продолжает процесс загрузки и обращается к ядру. После входа в систему загрузите звук в соответствующий скрипт запуска. Модуль частотного драйвера (если он встроен, музыка останавливается раньше), поэтому загрузочная музыка может быть значительно расширена, что дает пользователю возможность быстро Иллюзия быстрой загрузки.

Текущие платформы поддержкиubootФункция загрузки музыки в коде SDK: R6, R7s, R11, R16, R328, R311, MR133.

Методы настройки использования относительно схожи. Ниже в качестве примера для выполнения использования используется R328.

5.1 Метод настройки

  1. Изменить файл конфигурации uboot
    • Конфигурацию по умолчанию configs/sun8iw18p1_defconfig можно изменить, добавив следующие элементы: CONFIG_SOUND_SUNXI_SOC_RWFUNC=y CONFIG_SOUND_SUNXI_SUN8IW18_CODEC=y CONFIG_SOUND_SUNXI_BOOT_TONE=y
    • Вы также можете настроить его через kconfig и выполнить makemenu- в каталоге lichee/brandy-2.0/u-boot-2018. config ARCH=arm,Выберите соответствующий Функцияэлемент:выбиратьсерединаsun8iw18изcodecводить машинуки Функция загрузки музыки

[Изображения по внешней ссылке передаются...(img-SbAophv6-1677205397769)]

  1. Изменить файл sys_config
Язык кода:javascript
копировать
Настройте boottone_used на 1,поверхность Показыватьиспользовать Функция загрузки музыки
;----------------------------------------------------------------------------------
;boot tone configuration
;
;boottone_used ---boot tone enable
;len_limit ---set size in bytes, normally do not need to set it and driver will use
file size
;----------------------------------------------------------------------------------
[boottone]
boottone_used = 1
Язык кода:javascript
копировать
Кроме того, узел кодека также необходимо правильно настроить. Ниже приведены некоторые важные конфигурации.
[codec]
codec_used = 0x1
lineout_vol =0x1a
gpio-spk = port:PH9<1><1><1><1>
  1. Создать загрузочный раздел
Язык кода:javascript
копировать
Аудиофайлы загрузочной музыки нужно вынести в отдельный раздел,Например, загрузочный раздел,Изменить sys_partition.fex
документ:
[partition]
name = boottone
size = 2048
downloadfile = "boottone.fex"
user_type = 0x8000
Язык кода:javascript
копировать
выше 2048 Указывает место в 1 МБ. Уведомление укажите соответствующий размер в соответствии с фактическим размером аудиофайла.
Затем переименуйте аудиофайл в boottone.fex и поместите его в каталог конфигурации решения, используя решение Cowbell-perf1.
Например:
mv kaiji.wav target/allwinner/cowbell-perf1/configs/boottone.fex
  1. Изменить файл конфигурации env
Язык кода:javascript
копировать
В основном добавьте следующие строки:
uboot_tone_addr=0x4327ffd4
boottone_partition=загрузочный тон
load_boottone=sunxi_flash прочитать ${uboot_tone_addr} ${boottone_partition}
Язык кода:javascript
копировать
uboot_tone_addr используется для указания адреса, по которому аудиофайлы загружаются в драм.
bootone_partition используется для указания имени раздела, в котором находится аудиофайл.
load_boottone используется для загрузки аудиофайлов в драм Заказ
  1. Скомпилировать ядро ​​кодека Аудио Драйвер в модуль
Язык кода:javascript
копировать
make kernel_menuconfig удаляет следующие конфигурации:
@@ -702,14 +705,9 @@ CONFIG_SND_SOC_I2C_AND_SPI=y
# CONFIG_SND_SOC_WM8960 is not set
# CONFIG_SND_SOC_WM8974 is not set
# CONFIG_SND_SOC_WM8985 is not set
Язык кода:javascript
копировать
-CONFIG_SND_SUN8IW18_CODEC=y
# CONFIG_SND_SUNXI_MAD is not set
-CONFIG_SND_SUNXI_SOC=y
-CONFIG_SND_SUNXI_SOC_CPUDAI=y
-CONFIG_SND_SUNXI_SOC_DAUDIO=y
-CONFIG_SND_SUNXI_SOC_RWFUNC=y
-CONFIG_SND_SUNXI_SOC_SUN8IW18_CODEC=y
-CONFIG_SND_SUNXI_SOC_SUNXI_DAUDIO=y
+# CONFIG_SND_SUNXI_SOC_SUN8IW18_CODEC is not set
+# CONFIG_SND_SUNXI_SOC_SUNXI_DAUDIO is not set
# CONFIG_SND_SUNXI_SOC_SUNXI_DMIC is not set
# CONFIG_SND_SUNXI_SOC_SUNXI_SPDIF is not set
CONFIG_SND_SUPPORT_OLD_API=y
Язык кода:javascript
копировать
make menuconfigУвеличиватьводить машинумодуль Конфигурация
@@ -2923,7 +2929,7 @@ CONFIG_PACKAGE_kmod-sound-core=y
# CONFIG_PACKAGE_kmod-sound-soc-ac97 is not set
# CONFIG_PACKAGE_kmod-sound-soc-core is not set
# CONFIG_PACKAGE_kmod-sound-via82xx is not set
-# CONFIG_PACKAGE_kmod-sunxi-sound is not set
+CONFIG_PACKAGE_kmod-sunxi-sound=y

5.2 Меры предосторожности

  1. Когда uboot завершает работу, dma невозможно отключить. Если звук меняется или исчезает при прыжке с питомника, пожалуйста, подтвердите переход на Вызывается ли sunxi_dma_exit() перед ядром;
  2. Ядро не знает, где uboot загружает звук в драм. Теоретически ядро ​​может находиться в процессе инициализации. Эта часть памяти используется, из-за чего музыка становится ненормальной.
    • может быть в дтс,Измените память этого куска на атрибут резерва.,Это может гарантировать, что ядро ​​не будет повреждено.
    • Выберите блоки памяти, которые не будут использоваться при инициализации ядра.
  3. Вы можете выполнить заказ загрузки под строкой заказа uboot для отладки.

6 Меры предосторожности для аудиомодулей на каждой платформе

6.1 R328.

  1. Только один ЦАП,Итак, когда мы играем в два ряда данных,Аппаратное обеспечение отбросит данные второго ряда. Если ты хочешь
Язык кода:javascript
копировать
Чтобы завершить оба ряда данных, играйте,Необходимо объединить два ряда в программном обеспечении.,ДоступныйalsaРеализация плагина,примернравиться Вниз
Конфигурация поверхности:
pcm.playback {
type plug
slave {
pcm "hw:audiocodec,0"
rate 48000
channels 1
}
}
Язык кода:javascript
копировать
Плагин alsa уменьшит амплитуду двух рядов данных до половины исходного значения (если добавлено напрямую).,Амплитуда в два раза больше исходной.,иметь
Может стать причиной коронации),Затем объедините их в один ряд и запишите в звуковую карту.
  1. использовать При моделировании микрофона для AEC микрофон необходимо Усиление установлено на 0 д Б. При наличии усиления в начале и конце записи будет воспроизводиться поп-звук (поп-звук, создаваемый переключением усилителя мощности, после устранения дифференциальным микрофоном все равно будет очень небольшой шум. Если он установлен). прошел через природу микрофона увеличится, станет явный попсовый звук)
boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.