Расскажите, как использовать аудиомодуль платформы Tina.
Программная платформа Allwinner Tina.
Аппаратная платформа Allwinner R6, R7s, R11, R16, R18, R30, R58, R328, R332, R333, R311, MR133, T7, R329, MR813, R818, R818B, R528, H133, V853, F133.
Инженер, разрабатывающий аудиомодули под платформу Tina.
термин | Объяснение |
---|---|
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 |
Аудиоподсистема в Linux реализована с использованием архитектуры ALSA. ALSA теперь стала основной аудиоархитектурой для Linux. На уровне драйвера устройства ядра ALSA предоставляет драйвер alsa. В то же время на уровне приложения ALSA предоставляет нам alsa-lib. Пока приложение вызывает API, предоставляемый alsa-lib, оно может выполнять управление. базового аудиооборудования.
Tina SDK реализует драйверы аудиоустройств для каждой платформы, используя архитектуру ASoC. ASoC — это программная система, построенная на стандартном уровне драйвера alsa. Чтобы лучше поддерживать аудиокодек во встроенных процессорах и мобильных устройствах, ASoC делит аудиосистему на 3 части: кодек, платформу и машину.
Драйвер кодека
Важным принципом проектирования в ASoC является требование Драйвер. Кодека не зависит от платформы и содержит некоторые элементы управления звуком. (элементы управления), аудиоинтерфейс, определение DAMP (динамическое управление питанием звука) и некоторые кодеки Функция ввода-вывода. чтобы гарантировать Независимо от оборудования, любой код, специфичный для платформы и машины, необходимо переместить в драйверы платформы и машины. Все Драйвер Кодека должна обеспечивать следующие возможности:
- Codec DAI (Digital Audio интерфейс) и информацию о конфигурации PCM;
- Метод управления вводом-выводом кодека (I2C, SPI и т. д.);
- Микшер и другие элементы управления звуком;
- Кодек и интерфейс управления звуком ALSA;
Драйвер платформы
Включает настройку и управление аудио DMA и аудиоинтерфейсом платформы SoC (I2S, PCM, AC97 и т. д.); Обычно не содержит кода, связанного с платой или кодеком.
Machineводить машина отдельная Платформа и Драйвер кодека не работает,это должно быть сделаноMachineводить машину Объединение их вместе может завершить обработку звука всего устройства.。
Аудиоинтерфейсы, которые мы предоставляем, включают в себя:
Ресурсы аудиоинтерфейса разных платформ чипов будут разными; разные версии ядра имеют разные соответствующие драйверы ALSA, которые будут подробно описаны ниже;
R6 содержит 2 аудиомодуля, а именно встроенный аудиокодек и daudio0.
В R6 источники синхронизации двух аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.
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
Аппаратные особенности
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
[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: действительно на высоком уровне; |
иллюстрировать
Драйвер аудиокодека платформы R6 автоматически устанавливает соответствующие каналы при воспроизведении песен. Карта звука по умолчанию:
Воспроизведение песен
DACL --> HP_L Mux --> HPOUTL
DACR --> HP_R Mux --> HPOUTR
Функция записи управляет соответствующим каналом разрешения пространства по мере необходимости:
Запись отдельных данных 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д Б/шаг. |
Пример настройки канала записи:
проходить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
amixer -D hw:audiocodec cset name='ADC mixer mute for left ouput' 1
Аппаратные особенности
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
[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 |
AC101, используемый в предложении R6, используется для двухканальной записи, а аудиокодек используется в качестве цикла записи для AEC. Вот как настроить и использовать R6. Краткое введение в использование AC101
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
R6 управляет AC101 через TWI1, а I2S0 используется для передачи аудиоданных.
Частичную конфигурацию TWI можно настроить через dts:
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.
[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.
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
Как упоминалось в главе «Путь к данным аудиокодека R6», путь воспроизведения фиксированно настроен в коде драйвера и может воспроизводиться непосредственно с помощью инструмента aplay после входа в систему, например:
aplay -Dhw:audiocodec /mnt/UDISK/1KHz_0dB_16000.wav
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='headphone volume' 50
Аудиоканал AC101 необходимо настроить перед использованием AC101 для двухканальной записи. SDK настроит его по умолчанию при запуске. Соответствующий сценарий настройки:
/etc/init.d/rc.final
Вы можете записывать напрямую с помощью команды arecord:
arecord -Dhw:sndac1011001a -f S16_LE -r 16000 -c 2 /tmp/test.wav
R7s содержит 2 аудиомодуля, а именно встроенный AudioCodec и Daudio0.
В R7s источники синхронизации двух аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.
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водить машину
Аппаратные особенности
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
<*> Audiocodec for the SUNXI chips
[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 |
Воспроизведение песен
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 д Б; |
Пример настройки пути:
Линейная схема:
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
Автор 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
Аппаратные особенности
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
<*> Allwinner Digital Audio Support
[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 контактный |
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
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
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='Lineout volume' 50
Используйте аудиокодек для записи MIC1 и MIC2.
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
R11 содержит 2 аудиомодуля, а именно встроенный AudioCodec и Daudio0.
В R11 источники синхронизации двух аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.
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водить машину
Аппаратные особенности
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
[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 |
Воспроизведение песен
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 д Б. |
Пример настройки пути:
По линейной игре:
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
От 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
Аппаратные особенности
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
[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 контактный |
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
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
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='Lineout volume' 50
Моно-запись с использованием AudioCodec
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
R16 содержит 3 аудиомодуля, а именно встроенный AudioCodec, I2S0 и I2S1.
В R16 источники синхронизации трех аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.
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водить машину
Аппаратные особенности
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
[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 |
Воспроизведение песен через 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 д Б; |
Аппаратные особенности
• Двусторонний I2S/PCM;
• Поддержка режима «главный-подчиненный»
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
Метод настройки I2S0 и I2S1 одинаковый. Ниже описан только I2S0.
[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 контактный |
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
проходитьспикериграть
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
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
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:sndcodec cset name='headphone volume' 58
Использование аудиокодека для монозаписи
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
R18 содержит 4 аудиомодуля, а именно встроенный AudioCodec и Daudio0, Daudio1 и Daudio2.
В R18 источники синхронизации четырех аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая воспроизведение и запись серий 48k и 44,1k соответственно.
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водить машину
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 машину
Аппаратные особенности
• Два ЦАП
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun50iw1 Codec Support
[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
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 |
Воспроизведение песен через 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 д Б. |
Аппаратные особенности
• Трехсторонний I2S/PCM;
• Поддержка режима «главный-подчиненный»
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
[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
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».
Аппаратные особенности
• Поддержка S/PDIF_OUT
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner SPDIF Support
[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: Используется; |
Поскольку «spdif-utils» по умолчанию настроен в качестве драйвера кодека в коде драйвера машины, путь к коду следующий:
linux-4.4/sound/soc/sunxi/spdif-utils.c
Стандартный тюльпан-нома R18 оснащен дочерней платой микрофона, содержащей два AC108, каждый из которых может записывать до 4 каналов.
Ниже приводится краткое введение в настройку R18 для использования AC108.
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
R18 управляет AC108 через twi1, а i2s0 используется для передачи аудиоданных.
Некоторые конфигурации twi можно настроить через dts:
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>;
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.
snddaudio0:sound@1 {
sunxi,snddaudio-codec = "ac108.1-0035";
sunxi,snddaudio-codec-dai = "ac108-pcm1";
};
После входа в систему используйте команду cat /proc/asound/cards, чтобы просмотреть текущую информацию о звуковой карте. Если найден звук, связанный с ac108, карту, что указывает на то, что драйвер загружен нормально.
Никаких дополнительных настроек звука не требуется, вы можете напрямую использовать следующие настройки звука:
arecord -Dhw:sndac10810035 -f S16_LE -r 16000 -c 8 /tmp/test.wav
Стандартный тюльпан-нома R18 оснащен цифровым усилителем TAS5731.
Ниже приводится краткое введение в настройку и использование tas5731 в R18.
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
R18 управляет цифровым усилителем мощности через TWI0, а I2S1 используется для передачи аудиоданных.
Некоторые конфигурации twi можно настроить через dts:
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.
snddaudio1:sound@2 {
sunxi,snddaudio-codec = "tas5731-codec.0-001b";
sunxi,snddaudio-codec-dai = "tas5731_audio";
};
После входа в систему используйте команду cat /proc/asound/cards, чтобы просмотреть текущую информацию о звуковой карте. Если вы обнаружите звуковую карту, связанную с tas5731, карту, что указывает на то, что драйвер загружен нормально.
Никаких дополнительных настроек звука не требуется.,Вы можете напрямую использовать следующий заказ для выполнения Воспроизведения. песен:
aplay -Dhw:sndtas5731codec /mnt/UDISK/16000-stere-10s.wav
R18 использует I2S2 для передачи аудиоданных на модуль HDMI, а I2S2 можно использовать только для HDMI.
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
[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: Используется; |
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
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
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='headphone volume' 60
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
R30 содержит 5 аудиомодулей, а именно встроенный AudioCodec, Daudio0, Daudio1, Daudio2 и Dmic.
В R30 источники синхронизации пяти аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая серии 48k и 44,1k соответственно. Воспроизведите запись.
linux-4.9/sound/soc/sunxi/
├── sun50iw3-codec.c // codecводить машину
├── sun50iw3-codec.h
├── sun50iw3-sndcodec.c // codec machineводить машину
├── sunxi-inter-i2s.c // codec platformводить машину
├── 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водить машину
Аппаратные особенности
• Два ЦАП
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun50iw3 Codec Support
[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 |
проходить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 д Б. |
Аппаратные особенности
• Трехсторонний I2S/PCM;
• Поддержка режима «главный-подчиненный»
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
[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
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 |
Аппаратные особенности
• Поддерживает 8 входов
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner DMIC Support
[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: Используется; |
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
проходить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
Воспроизведение песен через 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
Воспроизведение песен через 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
Аналоговую громкость на оборудовании можно отрегулировать с помощью следующей команды:
amixer -Dhw:audiocodec cset name='headphone volume' 60
через 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
R328 имеет богатые аудиоинтерфейсы, в том числе 6 аудиомодулей, а именно встроенный AudioCodec, Daudio0, Daudio1, Daudio2, Дмик, Спдиф.
Кроме того, MAD также поддерживается для обнаружения голосового пробуждения (подробности см. в главе R328 MAD).
В R328 источники синхронизации шести аудиомодулей поступают из pll_audio.
pll_audio может выводить тактовую частоту 24,576M или 22,5792M, поддерживая серии 48k и 44,1k соответственно. Воспроизведите запись.
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водить машину
Аппаратные особенности
• Один ЦАП
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Sun8iw18 Codec Support
[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
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 |
иллюстрировать
Воспроизведение песен
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
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
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
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
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
n = 58
Таким образом, вход ниже на уровне приложения установлен на -5,8 д Б:
amixer -D hw:audiocodec cset name='digital volume' 58
Пример настройки пути:
Автор: Спикериграть,разницавыход:
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
Моделируя 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
Существует два метода петли 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
Аппаратные особенности
• Трехсторонний I2S/PCM, может использоваться для вызовов Bluetooth, сбора голоса и цифрового усилителя мощности;
• Поддержка режима «главный-подчиненный»
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Digital Audio Support
[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 |
На что следует обратить внимание:
Например, daudio0 использует AC108 в качестве подключаемого кодека:
[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 ```
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
Аппаратные особенности
• Поддерживает 8 входов
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner DMIC Support
Конфигурация следующая:
[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: Используется;
Поскольку «dmic-codec» по умолчанию настроен в качестве драйвера кодека в коде драйвера машины, путь к коду следующий:
linux-4.9/sound/soc/codecs/dmic.c
Аппаратные особенности
• Поддержка S/PDIF_OUTиS/PDIF_IN
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner SPDIF Support
[sndspdif]
sndspdif_used = 0
[spdif]
spdif_used = 0
конфигурация spdif,Прямо сейчас Связанные конфигурации драйвера платформы
конфигурация spdif конфигурация spdifиллюстрировать|
spdif_used Использовать ли драйвер spdif. 0: Не используется 1: Используется;|
sndконфигурация spdif,Прямо сейчас Сопутствующие конфигурации драйвера машины
sndконфигурация spdifsndконфигурация spdifиллюстрировать
sndspdif_usedИспользовать ли драйвер sndspdif. 0: Не используется 1: Используется;
Поскольку «spdif-utils» по умолчанию настроен в качестве драйвера кодека в коде драйвера машины, путь к коду следующий:
linux-4.9/sound/soc/sunxi/spdif-utils.c
Аппаратные особенности
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
<*> ALSA for SoC audio support --->
Allwinner SoC Audio support --->
<*> Allwinner Mad Support
[mad]
mad_used = 1
lpsd_clk_src_cfg = 0
standby_sram_io_type = 1
безумная конфигурация | безумная конфигурацияиллюстрировать |
---|---|
mad_used | Использовать ли безумный драйвер. 0: Не используется 1: Используется; |
Имя элемента управления | Функция | числовое значение |
---|---|---|
daudio bind mad Function | Привязывать ли MADФункция | 0: не привязан; 1: привязан; |
lpsd channel sel Function | Выберите в качестве канала для пробуждения энергии | 0: Канал 0 1: Канал 1; |
По аналогии можно указать до 7 канала | ||
mad_standby channel selFunction | Установите количество безумных каналов записи во время сна | 0: указывает количество фактически используемых каналов записи; |
Имя элемента управления | Функция | числовое значение |
---|---|---|
dmic bind mad Function | Привязывать ли MADФункция | 0: не привязан; 1: привязан; |
lpsd channel sel Function | Выберите в качестве канала для пробуждения энергии | 0: Канал 0 1: Канал 1; |
И так далее, до 7 канала можно указать | ||
mad_standby channel selFunction | Установите количество безумных каналов записи во время сна | 0: указывает количество фактически используемых каналов записи; 1: означает, что записано только два канала. 2: означает, что записано только четыре канала. |
Для настройки прошивки просто измените sys_config и конфигурацию ядра.
Приложению необходимо включить управление микшером, связанное с MAD.
Пример настройки I2S, например, используется AC108:
Включить 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:
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
Тогда приложение сможет нормально записывать. Если вам нужно войти в спящий режим, необходимо выполнить следующие пункты:
Для справки в Tina SDK есть демо-версия пробуждения энергии.
make menuconfig выбирает пакет программного обеспечения mad-demo
Allwinner --->
<*> mad-demo
Выполните mad-ac108-demo, конфигурация по умолчанию (конфигурация по умолчанию задается в скрипте /usr/bin/mad-ac108-demo):
• Используйте канал 0 в качестве канала пробуждения;
Выполните mad-dmic-demo, конфигурация по умолчанию (конфигурация по умолчанию задается в скрипте /usr/bin/mad-dmic-demo):
• Используйте канал 0 в качестве канала пробуждения;
Если вы хотите просмотреть данные записи, вы можете добавить параметр дампа, например, mad-dmic-demo dump, и сохранить файл записи. В каталоге /mnt/UDISK/.
Модуль энергетического пробуждения lpsd в основном определяет два направления энергии: мгновенную энергию и накопленную энергию (первое похоже на звук закрывающейся двери, а второе Например, если вы постоянно разговариваете), все конфигурации параметров обнаружения энергии находятся в каталоге /sys/module/sunxi_mad/parameters/.
Рекомендуемые значения для lpsd_rrun и lpsd_rstop:
lpsd_rrun | lpsd_rstop |
---|---|
77 | 88 |
77 | 108 |
77 | 128 |
77 | 148 |
• Мы рекомендуем использовать значение по умолчанию — 1200. Рекомендуется изменить диапазон 50~1200;
VAD реализован на базе MAD, который может собирать аудиоданные через АЦП внутреннего аудиокодека и выполнять энергетическое пробуждение. Поскольку MAD аппаратно может использоваться только для I2Sили или DMIC, внутренний кодек не может быть напрямую связан с MAD, поэтому через Через I2S в качестве моста для аудиоданных реализуется функция VAD, так что аналоговые микрофоны также могут использовать MADФункция для пробуждения энергии. Бодрствующий.
Полный набор данных VAD:
ADC RxFiFo ---> I2S TxFiFo ---> I2S RxFiFo ---> MAD SRAM ---> MEM
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
Конфигурация MAD должна быть включена:
[mad]
mad_used = 1
lpsd_clk_src_cfg = 0
standby_sram_io_type = 1
безумная конфигурация | безумная конфигурацияиллюстрировать |
---|---|
mad_used | Использовать ли безумный драйвер. 0: Не используется 1: Используется; |
Имя элемента управления | Функция | числовое значение |
---|---|---|
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 не включен). Пример настройки:
Пример настройки:
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
Использование VAD аналогично MAD.
Для настройки прошивки просто измените sys_config и конфигурацию ядра.
Помимо включения ряда записи внутреннего аудиокодека, приложению также требуются следующие настройки:
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
Тогда приложение сможет нормально записывать. Если вам нужно войти в спящий режим, необходимо выполнить следующие пункты:
Tina В SDK есть демонстрация пробуждения энергии. menuconfig выбирает пакет программного обеспечения mad-demo
Allwinner --->
<*> mad-demo
Выполнить vad-demo, конфигурация по умолчанию (конфигурация по умолчанию задается в скрипте /usr/bin/vad-demo):
• Используйте I2S1
Если вы хотите просмотреть данные записи, вы можете выполнить дамп vad-demo. Файл записи сохраняется в /mnt/UDISK/vad-test.wav. Чтобы настроить порог энергетического пробуждения, обратитесь к разделу «Energy Wake». вверх по пороговым параметрам"
VAD также требует выполнения пунктов, упомянутых в главе «УведомлениеMAD». На что следует обратить внимание.
Кроме того, следует отметить, что VAD неявно использует один I2S, поэтому один I2S необходимо зарезервировать на оборудовании, а конфигурацию I2S нельзя включить в sys_config.
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
Автор: Спикериграть
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
через 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
V853 содержит несколько аудиомодулей, включая встроенный аудиокодек, I2S0, I2S1 и DMIC.
В V853 источником синхронизации аудиомодуля является pll_audio0.
pll_audio0 может выводить тактовые сигналы с частотами 22,5792M и 24,576M.,Соответственно поддерживают 44.1к серий, 48к серий игразапись,Но его нельзя вывести одновременно.
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
• Один ЦАП
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.1 DeviceTree Конфигурацияиллюстрировать Дерево устройств — это конфигурация модулей платформы чипа, которая настраивает характеристики чипа. конфигурации, путь к файлу дерева устройств: lichee/linux-4.9/arch/arm/boot/dts/sun8iw21p1.dtsi
codec:codec@0x02030000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-codec";
reg = <0x0 0x02030000 0x0 0x34C>;
clocks = <&clk_pll_audio>,
<&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 узлов дерева устройств.
Таблица 2-128: Элементы конфигурации узла кодека AudioCodec (linux4.9)
Имя элемента конфигурации | Конфигурацияэлементиллюстрировать |
---|---|
#sound-dai-cells | Машинный уровень обнаруживает флаги узлов кодека и платформы. |
reg | Установите начальный адрес регистра аудиокодека и длину адреса. |
clocks | Установите источник синхронизации и тактовую частоту модуля, необходимую для аудиокодека. |
Таблица 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 модуля аудиокодека) |
Таблица 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
&codec {
/* external-avcc; */
/* avcc-supply = <®_aldo1>; */
avcc-vol = <1800000>; /* uv */
lineout_vol = <31>;
mic1gain = <31>;
mic2gain = <31>;
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. |
проходить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 режим звуковой карты) |
• Двусторонний I2S/PCM, может использоваться для вызовов Bluetooth, сбора голоса и цифрового усилителя мощности;
• Поддержка режима «главный-подчиненный»
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.1 DeviceTree Конфигурацияиллюстрировать Дерево устройств — это конфигурация модулей платформы чипа, которая настраивает характеристики чипа.конфигурации, путь к файлу дерева устройств: lichee/linux-4.9/arch/arm/boot/dts/sun8iw21p1.dtsi
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";
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 узлов дерева устройств.
Таблица 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. |
Таблица 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) |
иллюстрировать
2.20.4.3.2 board.dts конфигурация уровня платыиллюстрировать board.dts — это дополнение, используемое для сохранения дифференцированной информации об устройствах платформы уровня платы. заряд, лицо Характеристики формы Настроить, информация о конфигурации перезапишет устройство. информация о конфигурации дерева по умолчанию, файл board.dts Путь:/device/config/chips/v853/configs/{BOARD}/board.dts.
&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 {
};
};
&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 |
Аппаратные особенности
• поддерживать 4 вход
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.1 DeviceTree Конфигурацияиллюстрировать Дерево устройств — это конфигурация модулей платформы чипа, которая настраивает характеристики чипа. конфигурации, путь к файлу дерева устройств: lichee/linux-4.9/arch/arm/boot/dts/sun8iw21p1.dtsi
dmic_plat:dmic_plat@0x02031000 {
#sound-dai-cells = <0>;
compatible = "allwinner,sunxi-snd-plat-dmic";
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 состоит из двух узлов дерева устройств.
Таблица 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. |
Таблица 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.
&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. |
RX_SYNCФункция используется для одновременного подключения к двум звуковым картам записи (разные аппаратные аудиоинтерфейсы).,Это может гарантировать, что обе звуковые карты начнут запись одновременно.,Убедитесь, что задержка стабильна и неизменна.
Например, голосовое решение внутреннего АЦП + внешнего АЦП (с использованием I2S) может обеспечить синхронизацию внутреннего АЦП и I2S RX.
AudioCodec, I2S, DMICвсе可киспользоватьRX_SYNCФункция,за исключением того, что они соответствуютизводить машину Конфигурацияснаружи,возвращатьсянуждаться额снаружи Конфигурация Ядро,дц и другие места.
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
Добавьте rx_sync_en в аудиомодули, которые хотят использовать rx_syncFunction. = <1>Поле:
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 &。
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
проходить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
через внутренний микрофон 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
F133 содержит несколько аудиомодулей, включая встроенный аудиокодек, I2S1, I2S2, DMIC и SPDIF.
В F133 источником синхронизации аудиомодуля являются pll_audio0 и pll_audio1_div5.
pll_audio0 может выводить тактовую частоту 22,5792M, а pll_audio1_div5 может выводить тактовую частоту 24,576M соответственно. Поддержка серии 44.1k, серии 48k вещателей запись.
• Два ЦАП
конфигурация kernel_menuconfig
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 | Синхронизация функциональных компонентов |
board.dts конфигурация уровня платы
&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 = <®_aldo1>; */
/* hpvcc-supply = <®_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” | Включить или выключить этот узел |
• Двусторонний I2S/PCM I2S1 I2S2
конфигурация kernel_menuconfig
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 | Синхронизация функциональных компонентов |
board.dts конфигурация уровня платы
&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";
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
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 | Аннотация ложна, в противном случае она верна | толькоподдерживатьиграть |
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 | Синхронизация функциональных компонентов |
&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 |
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 | Синхронизация функциональных компонентов |
&spdif {
pinctrl-names = "default","sleep";
pinctrl-0 = <&spdif_pins_a>;
pinctrl-1 = <&spdif_pins_b>;
rx_sync_en = <0x00>;
status = "okay";
};
&soundspdif {
status = "okay";
};
часть Имя элемента конфигурации | Значение конфигурации | Конфигурацияэлементиллюстрировать |
---|---|---|
status | “okay” “disable” | Включить или выключить этот узел |
rx_sync_en | Аннотация ложна, в противном случае она верна | Регистрировать ли компонент rx_sync |
В этой главе в основном представлены тестовые команды для воспроизведения песен и записи на ставке.
От наушниковиграть
1. После загрузки загрузите тестовый аудиофайл 48000.wav на маленький компьютер, ПКЗаказ: adb push 48000.wav /tmp/
2.играть этот аудиофайл, aplay /tmp/48000.wav
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 и проверьте, соответствуют ли аудиоданные воспроизводимому контенту на ПК.
Стандартный инструмент ALSA, использующий стандартную библиотеку alsa-lib. Часто используемые из них включают amixer, aplay, arecord и т. д.
amixer — это инструмент регулятора драйвера звуковой карты ALSA из командной строки, используемый для настройки управления микшером.
Как использовать:
• Часто используемые опции
Параметры | Функция |
---|---|
-D,–device | Укажите устройство звуковой карты, по умолчанию используется значение default. |
• Часто используемые команды
Заказ | Функция |
---|---|
controls | Список всех элементов управления для указанной звуковой карты |
contents | Список всех элементов управления для указанной звуковой Подробная информация о карте |
cget | Получить информацию об указанном элементе управления |
cset | Установить значение указанного элемента управления |
Пример:
Получить все управляющие имена звуковой карты аудиокодека.
amixer -Dhw:audiocodec controls
Получить текущий объем оборудования
amixer -Dhw:audiocodec cget name='LINEOUT volume'
Установить текущий аппаратный объем
amixer -Dhw:audiocodec cget name='LINEOUT volume' 25
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-файл,Заголовки можно анализировать,Определите номер ряда,Частота выборкии другие параметры。
Пример:
aplay -Dhw:audiocodec /mnt/UDISK/test.wav
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 | Указанный размер буфера |
Пример:
Записывать5s,Количество рядов — 2.,Частота выборки — 16000, точность выборки — 16 бит, сохраняется в виде wav-файла.
arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 -d 5 /mnt/UDISK/test.wav
alsaconf относится к файлу конфигурации ALSA. Используйте alsa-lib, чтобы открыть звуковую карту и управлять PCM и микшером. Загрузите файл конфигурации в соответствующее место, чтобы управлять работой оборудования PCM и микшера.
Сначала будет прочитан файл конфигурации /usr/share/alsa/alsa.conf, который содержит следующие перехватчики.
@hooks [
{
func load
files [
{
@func concat
strings [
{ @func datadir }
"/alsa.conf.d/"
]
}
"/etc/asound.conf"
"~/.asoundrc"
]
errors false
}
]
Здесь настроена ловушка для чтения соответствующих файлов конфигурации каталога:
/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, который кратко представлен ниже:
Установите звуковую карту по умолчанию для работы микшера (выполнение 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
}
}
tinyalsa — это упрощенная версия alsa-lib. Он предоставляет базовые интерфейсы для ПКМ и управления, ничего сложного; Действие, функция. Интерфейс доступен по запросу. tinyalsa-utils — это некоторые инструменты, основанные на tinyalsa. Вот некоторые из наиболее часто используемых: Представлены инструменты.
Подобно смесителю, он используется для управления смесителем.
• Часто используемые опции
Параметры | Функция |
---|---|
-D,–card | Укажите устройство звуковой карты, по умолчанию используется card0 |
• Часто используемые команды
Заказ | Функция |
---|---|
controls | Список всех элементов управления для указанной звуковой карты |
contents | Список всех элементов управления для указанной звуковой Подробная информация о карте |
get | Получить информацию об указанном элементе управления |
set | Установить значение указанного элемента управления |
Пример:
Получить все управляющие имена card0
tinymix -D 0 controls
Получить текущий аппаратный объем карты 0
tinymix -D 0 get 'LINEOUT volume'
Установите текущий аппаратный том card0
tinymix -D 0 set 'LINEOUT volume' 25
Подобно aplay, он используется для управления звуковой картой при воспроизведении.
• Часто используемые опции
Параметры | Функция |
---|---|
-D,–card | Укажите устройство звуковой карты, по умолчанию используется card0 |
-p,–period-size | Указанный размер периода, одинарный Кусочек для рамки |
-c,–channels | Укажите количество каналов |
-r,–rate | обозначение Частота выборки |
-b,–bits | Укажите точность выборки |
Если игра — это WAV-файл,Заголовки можно анализировать,Определите номер ряда,Частота выборкии другие параметры
Пример:
tinyplay -D 0 /tmp/16000-stere-10s.wav
Как и в случае с записью, он используется для управления звуковой картой при записи. Функция
• Часто используемые опции
Параметры | Функция |
---|---|
-D,–device | Укажите устройство звуковой карты, по умолчанию используется card0 |
-p,–period-size | Указанный размер периода, одинарный Кусочек для рамки |
-c,–channels | Укажите количество каналов |
-r,–rate | обозначение Частота выборки |
-b,–bits | Укажите точность выборки |
Пример:
Записывать Количество рядов — 2.,Частота выборки — 16000, точность выборки — 16 бит, сохраняется в виде wav-файла.
tinycap -D 0 -b 16 -r 16000 -c 2 /mnt/UDISK/test.wav
Наша платформа sunxi предоставляет драйвер sunxi_dump для просмотра регистров чтения и записи.
Узел расположен в каталоге /sys/class/sunxi_dump.
Однако работа аналогового регистра аудиокодека несколько особенная. Обычно мы добавляем соответствующие разделы отладки в аудиодрайвер. Нажмите, чтобы управлять регистрами вашего модуля для отладки.
Узел отладки регистров драйвера аудиокодека находится по адресу:
/sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Как использовать:
Запишите следующие параметры через echo
Параметр 1: 0-чтение; 1-запись;
Параметр 2: 1-цифровой регистр, 2-аналоговый регистр;
Параметр 3: рег. значение
Параметр 4: записать значение
Пример:
Посмотреть весь статус регистрации:
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
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
Проверьте состояние цифрового регистра:
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.
Проверьте состояние аналогового регистра:
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.
Перезаписать цифровой регистр:
echo 1,1,0x24,0 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Указывает на запись цифрового регистра 0x24 как 0x0.
Перезаписать аналоговый регистр:
echo 1,2,0x3,0x1 > /sys/devices/platform/soc/codec/audio_reg_debug/audio_reg
Указывает на запись аналогового регистра 0x03 как 0x1.
Проверьте спецификацию, чтобы узнать базовый адрес регистра модуля i2s.
i2s0: 0x05090000
i2s1: 0x05091000
i2s2: 0x05092000
Запросить состояние регистра можно через узел sunxi_dump, например, просмотреть регистр i2s0:
cd /sys/class/sunxi_dump
echo 0x05090000,0x050900a0 > dump
cat dump
Проверьте спецификацию, чтобы узнать базовый адрес регистра модуля dmic.
dmic: 0x05095000
Вы можете запросить статус регистра через узел sunxi_dump:
cd /sys/class/sunxi_dump
echo 0x05095000,0x05095050 > dump
cat dump
Проверьте спецификацию, чтобы узнать базовый адрес регистра модуля spdif.
spdif: 0x05093000
Вы можете запросить состояние регистра spdif через узел sunxi_dump:
cd /sys/class/sunxi_dump
echo 0x05093000,0x05093040 > dump
cat dump
Через узлы, связанные со звуковой картой, в файловой системе procfs, вы можете получить статус каждого аудиопотока каждой звуковой карты. Фактическое совещание по отладке Очень полезно.
Ядру необходимо выбрать следующие параметры для создания соответствующего узла в procfs:
Device Drivers --->
<*> Sound card support --->
<*> Advanced Linux Sound Architecture --->
[*] Sound Proc FS Support
[*] Verbose procfs contents
Возьмите card0 в качестве примера, чтобы просмотреть предоставленную информацию об узле:
ddd
/proc/asound/card0/
├── id /*Название звуковой карты*/
├── pcm0c /* pcm0записьStream*/
│ ├── info /* информация о ПКМ*/
│ └── sub0
│ ├── hw_params /*Информация о параметрах оборудования*/
│ ├── info /* информация о ПКМ*/
│ ├── status /* Статус потока PCM*/
│ └── sw_params /*Информация о параметрах программного обеспечения*/
└── pcm0p /* pcm0игратьпоток*/
├── info
└── sub0
Среди них hw_params и status могут получить более полезную информацию:
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 /*Логический указатель приложения, одиночный Кусочек(кадр) */
Здесь мы в основном представляем общие интерфейсы в alsa-lib.
Чтобы облегчить работу и доступ, соответствующие интерфейсы инкапсулированы в alsa-lib и могут быть получены через узел управления (/dev/snd/controlCX). Получение и установка элементов управления
В основном задействованы интерфейсы:
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
Ниже приведен пример настройки интерфейса громкости:
#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;
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);
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);
}
Чтобы облегчить работу и доступ, alsa-lib инкапсулирует соответствующие интерфейсы через узел pcmCXDXp/pcmCXDXc (/dev/s- nd/pcmCXDXx) для достижения игры、запись Функция。
В основном задействованы интерфейсы:
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)
Здесь функция загрузки музыка, относится к запуску dma на этапе uboot для передачи аудиоданных в AudioCodec. Песни воспроизводятся в FIFO, в то время как ЦП продолжает процесс загрузки и обращается к ядру. После входа в систему загрузите звук в соответствующий скрипт запуска. Модуль частотного драйвера (если он встроен, музыка останавливается раньше), поэтому загрузочная музыка может быть значительно расширена, что дает пользователю возможность быстро Иллюзия быстрой загрузки.
Текущие платформы поддержкиubootФункция загрузки музыки в коде SDK: R6, R7s, R11, R16, R328, R311, MR133.
Методы настройки использования относительно схожи. Ниже в качестве примера для выполнения использования используется R328.
Настройте 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
Кроме того, узел кодека также необходимо правильно настроить. Ниже приведены некоторые важные конфигурации.
[codec]
codec_used = 0x1
lineout_vol =0x1a
gpio-spk = port:PH9<1><1><1><1>
Аудиофайлы загрузочной музыки нужно вынести в отдельный раздел,Например, загрузочный раздел,Изменить sys_partition.fex
документ:
[partition]
name = boottone
size = 2048
downloadfile = "boottone.fex"
user_type = 0x8000
выше 2048 Указывает место в 1 МБ. Уведомление укажите соответствующий размер в соответствии с фактическим размером аудиофайла.
Затем переименуйте аудиофайл в boottone.fex и поместите его в каталог конфигурации решения, используя решение Cowbell-perf1.
Например:
mv kaiji.wav target/allwinner/cowbell-perf1/configs/boottone.fex
В основном добавьте следующие строки:
uboot_tone_addr=0x4327ffd4
boottone_partition=загрузочный тон
load_boottone=sunxi_flash прочитать ${uboot_tone_addr} ${boottone_partition}
uboot_tone_addr используется для указания адреса, по которому аудиофайлы загружаются в драм.
bootone_partition используется для указания имени раздела, в котором находится аудиофайл.
load_boottone используется для загрузки аудиофайлов в драм Заказ
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
-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
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
Чтобы завершить оба ряда данных, играйте,Необходимо объединить два ряда в программном обеспечении.,ДоступныйalsaРеализация плагина,примернравиться Вниз
Конфигурация поверхности:
pcm.playback {
type plug
slave {
pcm "hw:audiocodec,0"
rate 48000
channels 1
}
}
Плагин alsa уменьшит амплитуду двух рядов данных до половины исходного значения (если добавлено напрямую).,Амплитуда в два раза больше исходной.,иметь
Может стать причиной коронации),Затем объедините их в один ряд и запишите в звуковую карту.
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);
}
Чтобы облегчить работу и доступ, alsa-lib инкапсулирует соответствующие интерфейсы через узел pcmCXDXp/pcmCXDXc (/dev/s- nd/pcmCXDXx) для достижения игры、запись Функция。
В основном задействованы интерфейсы:
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)
Здесь функция загрузки музыка, относится к запуску dma на этапе uboot для передачи аудиоданных в AudioCodec. Песни воспроизводятся в FIFO, в то время как ЦП продолжает процесс загрузки и обращается к ядру. После входа в систему загрузите звук в соответствующий скрипт запуска. Модуль частотного драйвера (если он встроен, музыка останавливается раньше), поэтому загрузочная музыка может быть значительно расширена, что дает пользователю возможность быстро Иллюзия быстрой загрузки.
Текущие платформы поддержкиubootФункция загрузки музыки в коде SDK: R6, R7s, R11, R16, R328, R311, MR133.
Методы настройки использования относительно схожи. Ниже в качестве примера для выполнения использования используется R328.
[Изображения по внешней ссылке передаются...(img-SbAophv6-1677205397769)]
Настройте 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
Кроме того, узел кодека также необходимо правильно настроить. Ниже приведены некоторые важные конфигурации.
[codec]
codec_used = 0x1
lineout_vol =0x1a
gpio-spk = port:PH9<1><1><1><1>
Аудиофайлы загрузочной музыки нужно вынести в отдельный раздел,Например, загрузочный раздел,Изменить sys_partition.fex
документ:
[partition]
name = boottone
size = 2048
downloadfile = "boottone.fex"
user_type = 0x8000
выше 2048 Указывает место в 1 МБ. Уведомление укажите соответствующий размер в соответствии с фактическим размером аудиофайла.
Затем переименуйте аудиофайл в boottone.fex и поместите его в каталог конфигурации решения, используя решение Cowbell-perf1.
Например:
mv kaiji.wav target/allwinner/cowbell-perf1/configs/boottone.fex
В основном добавьте следующие строки:
uboot_tone_addr=0x4327ffd4
boottone_partition=загрузочный тон
load_boottone=sunxi_flash прочитать ${uboot_tone_addr} ${boottone_partition}
uboot_tone_addr используется для указания адреса, по которому аудиофайлы загружаются в драм.
bootone_partition используется для указания имени раздела, в котором находится аудиофайл.
load_boottone используется для загрузки аудиофайлов в драм Заказ
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
-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
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
Чтобы завершить оба ряда данных, играйте,Необходимо объединить два ряда в программном обеспечении.,ДоступныйalsaРеализация плагина,примернравиться Вниз
Конфигурация поверхности:
pcm.playback {
type plug
slave {
pcm "hw:audiocodec,0"
rate 48000
channels 1
}
}
Плагин alsa уменьшит амплитуду двух рядов данных до половины исходного значения (если добавлено напрямую).,Амплитуда в два раза больше исходной.,иметь
Может стать причиной коронации),Затем объедините их в один ряд и запишите в звуковую карту.