rk3566 android11 configurar tarjeta de sonido (es7202 ADC)

Plataforma: rk3566 android11

núcleo: 4.19.172

códec de audio: es7202 ADC, este chip es solo un chip de codificación, sin función DAC, es decir, sin función de decodificación, la señal de audio no se puede decodificar y emitir desde este códec, por lo que el audio solo se puede decodificar y emitir desde el rk817 integrado , y el lado de la CPU de este chip se usa El protocolo PDM, y el protocolo i2s se usa generalmente.Los protocolos comúnmente usados ​​son: i2c, PDM, PCM, TDM, etc.

Una breve descripción del protocolo PDM:

Un método de modulación para representar señales analógicas mediante señales digitales

PCM utiliza el método de muestreo de intervalos iguales para representar la amplitud del componente analógico de cada muestreo como un componente digital de N bits (N = profundidad de cuantificación), por lo que el resultado de cada muestreo en el método PCM son datos de longitud de palabra de N bits.

PDM, solo 2 cables, transmite música, el método de codificación es diferente de I2S.

Onda sinusoidal representada por PDM

Las señales de audio en formato PDM se pueden enrutar cerca de circuitos con fuerte interferencia de ruido, como pantallas LCD.

La arquitectura basada en PDM es diferente de I2S y TDM en que el filtro de diezmado (Filtro de diezmado) no está en el dispositivo emisor, sino dentro del dispositivo receptor. La salida de la fuente son los datos modulados originales de alta frecuencia de muestreo (sobremuestreo), como la salida del modulador Sigma-Delta, en lugar de los datos diezmados como en I2S. La aplicación basada en la interfaz PDM reduce la complejidad del dispositivo de envío, y debido a que el CODEC como dispositivo receptor integra un filtro de diezmado en su interior, la complejidad general del sistema se reduce considerablemente. Para los micrófonos digitales, se pueden lograr filtros de diezmado de mayor eficiencia mediante el uso de procesos de silicio más finos para la fabricación de CODEC o procesadores que los utilizados para los micrófonos tradicionales.

Audio Architecture se centra en la alfabetización:

Controlador de hardware: controlador de dispositivo de hardware de audio, que consta de tres partes, a saber, máquina, plataforma y códec.

El controlador de audio ASoC consta de tres partes: plataforma, códec, máquina.

La máquina está controlada por la conexión i2s entre la plataforma y el códec, plataforma (cpu_dai) <----->codec_dai

Plataforma: los controladores de plataforma incluyen controladores de motor DMA de audio, controladores de interfaz de audio digital (DAI) (como I2S, AC97, PCM) y cualquier controlador DSP de audio para esa plataforma.
cpu dai: En los sistemas embebidos, suele referirse a los controladores de bus I2S y PCM de la CPU, que se encargan de transferir los datos de audio desde el I2S tx FIFO al CODEC (en el caso de la reproducción, la dirección de grabación es la opuesta) . cpu_dai se registra a través de snd_soc_register_dai(). Nota: DAI es la abreviatura de Interfaz de audio digital, que se divide en cpu_dai y codec_dai, que se conectan a través del bus I2S/PCM/pdm; AIF es la
abreviatura de Interfaz de audio, generalmente dividida en interfaces I2S y PCM.
pcm dma: Responsable de transferir los datos de audio en el dmabuffer al I2S tx FIFO.La lógica de esta parte es más complicada, y los siguientes artículos la explicarán en detalle. El controlador de audio dma se registra a través de snd_soc_register_platform(). Cabe señalar que la operación de dma no se requiere en algunos casos, como la conexión directa entre el Módem y el CODEC, debido a que el propio Módem ya envió los datos al PCM FIFO, en este momento solo es necesario inicie codec_dai para recibir los datos, en este caso, el controlador de la máquina dai_link debe especificar .platform_name = “snd-soc-dummy”, que es un controlador de plataforma virtual, consulte sound/soc/soc-utils.c para la implementación.

Códec: el controlador de códec es independiente de la plataforma y contiene controles de audio, funciones de interfaz de audio, definiciones de DAPM de códec y funciones de E/S de códec. Esta clase se puede extender a BT, FM y MODEM IC si es necesario. Los controladores de clase de códec deben ser códigos genéricos que puedan ejecutarse en cualquier arquitectura y máquina.
Para la reproducción, los datos PCM enviados por el espacio de usuario son una señal digital que ha sido muestreada y cuantificada. El DAC convierte el códec en una señal analógica y la envía a la salida de auriculares externos, para que podamos escuchar el sonido. Códec significa literalmente códec, pero hay muchos componentes funcionales en el chip, los más comunes son AIF, DAC, ADC, Mixer, PGA, Line-in, Line-out, y algunos chips de códec de gama alta también tienen EQ, DSP, SRC , DRC, AGC, cancelador de eco, supresión de ruido y otros componentes.


Máquina: el controlador de la máquina actúa como el pegamento que describe y une otros controladores de componentes para formar un "dispositivo de tarjeta de sonido" ALSA. Maneja cualquier control específico de la máquina y eventos de audio a nivel de máquina (por ejemplo, encender el amplificador cuando comienza la reproducción).
La máquina puede entenderse como una abstracción de la placa de desarrollo. La placa de desarrollo puede incluir múltiples tarjetas de sonido, y la parte correspondiente de la Máquina contiene múltiples enlaces.
Máquina se refiere a una determinada máquina, que vincula las interfaces de audio de cpu_dai, codec_dai y modem_dai definiendo dai_link y luego registra snd_soc_card. A diferencia de los dos anteriores, los controladores Platform y CODEC generalmente son reutilizables, mientras que Machine tiene sus características de hardware específicas y casi no es reutilizable. Las denominadas características de hardware se refieren a: el enlace entre DAI; abrir el amplificador a través de un GPIO determinado; detectar la inserción y extracción de auriculares a través de un GPIO determinado; usar un reloj determinado como MCLK/OSC externo como fuente de reloj de referencia de Módulos I2S y CODEC, etc.

Controlador de plataforma: el controlador de plataforma es el código de control de la parte de la CPU, que abstrae dos estructuras snd_soc_dai_driver y snd_soc_platform_driver;

controlador de códec: el controlador de códec es el código de control de la parte del códec, que abstrae dos estructuras, a saber, snd_soc_dai_driver y snd_soc_codec_driver;

Controlador de la máquina: el controlador de la máquina controla y administra la coincidencia de conexión entre la plataforma y el códec, administra los controles, los widgets y las rutas, y su estructura abstracta es snd_soc_card.
Los controladores de plataforma incluyen controladores de motor DMA de audio (PCM DMA), controladores de interfaz de audio digital (CPU DAI) (como I2S, AC97, PCM) y cualquier controlador DSP de audio para la plataforma. Los más utilizados son los controladores CPU DAI y PCM DMA.

CPU DAI: en los sistemas integrados, generalmente se refiere a los controladores de bus I2S y PCM de la CPU. Para la reproducción, es responsable de mover los datos de audio de I2S TX FIFO a CODEC (la captura está en la dirección opuesta). cpu_dai se registra a través de snd_soc_register_dai().

PCM DMA: Para la reproducción, se encarga de mover los datos de audio en el búfer dma al FIFO I2S TX (la captura es en la dirección opuesta). El controlador de audio dma se registra a través de snd_soc_register_platform().

Configuración:

&i2c3 {
	status = "okay";
	clock-frequency = <400000>;
	es7202: es7202@37 {
		status = "okay";
		#sound-dai-cells = <0>;
		compatible = "ES7202_PDM_ADC_1";
		reg = <0x37>;
	};
	
};

&pdm {
    status = "okay";
    #sound-dai-cells = <0>;
    rockchip,path-map = <1 0 3 2>;//录音声道顺序
    clocks = <&cru MCLK_PDM>, <&cru HCLK_PDM>;
    clock-names = "pdm_clk", "pdm_hclk";
    pinctrl-names = "default";
    pinctrl-0 = <&pdmm0_clk1
                 &pdmm0_sdi1>;
};

	es7202-sound {
		status = "okay";
		compatible = "simple-audio-card";
		simple-audio-card,format = "pdm";
		simple-audio-card,name = "rockchip,es7202";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,cpu {
			sound-dai = <&pdm>;
		};
		simple-audio-card,codec {
			sound-dai = <&es7202>;
		};
	};

Comando de depuración de códec de audio:

Confirme que el registro de la tarjeta de sonido se realizó correctamente mediante proc fs
# cat /proc/asound/cards
0 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codec
rockchip,rk809-codec
7 [Loopback
]: Loopback - Loopback
Loopback 1
# ls / dev/snd/
by-path controlC7 pcmC0D0p pcmC7D0p pcmC7D1p
controlC0 pcmC0D0c pcmC7D0c pcmC7D1c temporizador

/proc/asound # dispositivos gato                                                                                                

  1: : secuenciador
  2: [ 0- 0]: reproducción de audio digital
  3: [ 0- 0]: captura de audio digital
  4: [ 0] : control
  5: [ 1- 0]: captura de audio digital
  6: [ 1] : control
  33: : temporizador

 Nota: hay un problema con el controlador es7202 del fabricante. Si su línea de datos pdm se devuelve directamente a la CPU, debe modificar el controlador. Lo subiré al recurso. Descárguelo usted mismo si es necesario.

Adjunte el diagrama esquemático del hardware:

        

 

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_48709036/article/details/123730413
Recomendado
Clasificación