rk3566 android11 configurer la carte son (es7202 ADC)

Plate-forme : rk3566 android11

noyau : 4.19.172

codec audio: es7202 ADC, cette puce est juste une puce d'encodage, sans fonction DAC, c'est-à-dire sans fonction de décodage, le signal audio ne peut pas être décodé et émis à partir de ce codec, de sorte que l'audio ne peut être décodé et émis qu'à partir du rk817 intégré , et le côté CPU de cette puce est utilisé Le protocole PDM, et le protocole i2s est généralement utilisé.Les protocoles couramment utilisés sont : i2c, PDM, PCM, TDM, etc.

Une brève description du protocole PDM :

Une méthode de modulation pour représenter des signaux analogiques par des signaux numériques

PCM utilise la méthode d'échantillonnage à intervalles égaux pour représenter l'amplitude de la composante analogique de chaque échantillonnage en tant que composante numérique de N bits (N = profondeur de quantification), de sorte que le résultat de chaque échantillonnage dans la méthode PCM est des données de longueur de mot de N bits.

PDM, seulement 2 fils, transmet de la musique, la méthode d'encodage est différente de I2S.

Onde sinusoïdale représentée par PDM

Les signaux audio au format PDM peuvent être acheminés à proximité de circuits à fortes interférences sonores tels que les écrans LCD.

L'architecture basée sur PDM est différente de I2S et TDM en ce que le filtre de décimation (Decimation Filter) n'est pas dans l'appareil émetteur, mais à l'intérieur de l'appareil récepteur. La sortie source est constituée des données originales modulées à taux d'échantillonnage élevé (suréchantillonnage), telles que la sortie du modulateur Sigma-Delta, plutôt que des données décimées comme dans I2S. L'application basée sur l'interface PDM réduit la complexité de l'appareil d'envoi, et parce que le CODEC en tant qu'appareil de réception intègre un filtre de décimation à l'intérieur, la complexité globale du système est considérablement réduite. Pour les microphones numériques, des filtres de décimation plus efficaces peuvent être obtenus en utilisant des procédés au silicium plus fins pour la fabrication de CODEC ou de processeurs que ceux utilisés pour les microphones traditionnels.

L'architecture audio se concentre sur l'alphabétisation :

Pilote matériel : pilote de périphérique matériel audio, composé de trois parties, à savoir Machine, Plate-forme et Codec.

Le pilote audio ASoC se compose de trois parties : plate-forme, codec, machine.

La machine est contrôlée par la connexion i2s entre la plateforme et le codec, plateforme (cpu_dai) <----->codec_dai

Plate-forme : les pilotes de plate-forme incluent les pilotes de moteur DMA audio, les pilotes d'interface audio numérique (DAI) (tels que I2S, AC97, PCM) et tous les pilotes DSP audio pour cette plate-forme.
cpu dai : Dans les systèmes embarqués, il fait généralement référence aux contrôleurs de bus I2S et PCM du CPU, qui sont responsables du transfert des données audio de la FIFO I2S tx vers le CODEC (dans le cas de la lecture, le sens d'enregistrement est opposé) . cpu_dai est enregistré via snd_soc_register_dai(). Remarque : DAI est l'abréviation de Digital Audio Interface, qui est divisée en cpu_dai et codec_dai, qui sont connectés via le bus I2S/PCM/pdm ; AIF est
l'abréviation d'Audio Interface, généralement divisée en interfaces I2S et PCM.
pcm dma : responsable du transfert des données audio du dmabuffer vers la FIFO I2S tx. La logique de cette partie est plus compliquée, et les articles suivants l'expliqueront en détail. Le pilote audio dma est enregistré via snd_soc_register_platform(). Il convient de noter que l'opération dma n'est pas nécessaire dans certains cas, comme la connexion directe entre le modem et le CODEC, car le modem lui-même a déjà envoyé les données à la FIFO PCM. démarrez le codec_dai pour recevoir les données ; dans ce cas, le pilote de machine dai_link doit spécifier .platform_name = "snd-soc-dummy", qui est un pilote de plate-forme virtuelle, voir sound/soc/soc-utils.c pour l'implémentation.

Codec : le pilote de codec est indépendant de la plate-forme et contient des commandes audio, des fonctions d'interface audio, des définitions de codec DAPM et des fonctions d'E/S de codec. Cette classe peut être étendue à BT, FM et MODEM IC si nécessaire. Les pilotes de classe de codec doivent être du code générique pouvant s'exécuter sur n'importe quelle architecture et machine.
Pour le Playback, les données PCM envoyées par l'espace utilisateur sont un signal numérique qui a été échantillonné et quantifié.Le codec est converti en signal analogique par le DAC et envoyé sur la sortie casque externe, afin que nous puissions entendre le son. Codec signifie littéralement codec, mais il existe de nombreux composants fonctionnels dans la puce, les plus courants sont AIF, DAC, ADC, Mixer, PGA, Line-in, Line-out, et certaines puces de codec haut de gamme ont également EQ, DSP, SRC , DRC, AGC, annuleur d'écho, suppression du bruit et autres composants.


Machine : le pilote Machine agit comme le ciment qui décrit et lie les autres pilotes de composants pour former un "périphérique de carte son" ALSA. Il gère toutes les commandes spécifiques à la machine et les événements audio au niveau de la machine (par exemple, allumer l'ampli lorsque la lecture commence).
Machine peut être comprise comme une abstraction de la carte de développement. La carte de développement peut inclure plusieurs cartes son et la partie Machine correspondante contient plusieurs liens.
Machine fait référence à une certaine machine, qui relie les interfaces audio de cpu_dai, codec_dai et modem_dai en définissant dai_link, puis enregistre snd_soc_card. Contrairement aux deux précédents, les pilotes Platform et CODEC sont généralement réutilisables, tandis que Machine a ses caractéristiques matérielles spécifiques et n'est presque pas réutilisable. Les soi-disant fonctionnalités matérielles font référence : au lien entre les DAI ; à l'ouverture de l'amplificateur via un certain GPIO ; à la détection de l'insertion et du retrait d'un casque via un certain GPIO ; à l'utilisation d'une certaine horloge telle que MCLK/External OSC comme source d'horloge de référence de Modules I2S et CODEC, etc.

Pilote de plate-forme : le pilote de plate-forme est le code de contrôle de la partie cpu, qui résume deux structures snd_soc_dai_driver et snd_soc_platform_driver ;

pilote de codec : le pilote de codec est le code de contrôle de la partie codec, qui résume deux structures, à savoir snd_soc_dai_driver et snd_soc_codec_driver ;

Pilote de la machine : le pilote de la machine contrôle et gère la correspondance de connexion entre la plate-forme et le codec, gère les contrôles, les widgets et les routes, et sa structure abstraite est snd_soc_card.
Les pilotes de plate-forme incluent les pilotes de moteur DMA audio (PCM DMA), les pilotes d'interface audio numérique (CPU DAI) (tels que I2S, AC97, PCM) et tous les pilotes DSP audio pour la plate-forme. Les pilotes couramment utilisés sont les pilotes CPU DAI et PCM DMA.

CPU DAI : Dans les systèmes embarqués, il fait généralement référence aux contrôleurs de bus I2S et PCM du CPU. Pour la lecture, il est responsable du déplacement des données audio de I2S TX FIFO vers CODEC (la capture est dans la direction opposée). cpu_dai est enregistré via snd_soc_register_dai().

PCM DMA : Pour la lecture, il est chargé de déplacer les données audio dans le tampon dma vers la FIFO I2S TX (la capture est dans le sens opposé). Le pilote audio dma est enregistré via snd_soc_register_platform().

Configuration:

&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>;
		};
	};

commande de débogage du codec audio :

Confirmez que l'enregistrement de la carte son est réussi via 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 temporisateur

/proc/asound # dispositifs de chat                                                                                                

  1 : : séquenceur
  2 : [ 0- 0] : lecture audio numérique
  3 : [ 0- 0] : capture audio numérique
  4 : [ 0] : contrôle
  5 : [ 1- 0] : capture audio numérique
  6 : [ 1] : commande
  33 : : minuterie

 Remarque : Il y a un problème avec le pilote es7202 du fabricant. Si votre ligne de données pdm est directement renvoyée au processeur, vous devez modifier le pilote. Je vais le télécharger dans la ressource. Veuillez le télécharger vous-même si nécessaire.

Joindre le diagramme schématique du matériel :

        

 

 

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_48709036/article/details/123730413
conseillé
Classement