Comment sélectionner et utiliser un codec audio et un microcontrôleur pour les fichiers de retour audio incorporés

Par Jacob Beningo

Avec la contribution de Rédacteurs nord-américains de DigiKey

Les systèmes embarqués doivent de plus en plus fournir un son haute-fidélité plutôt que des buzzers pour le retour utilisateur, y compris les alarmes et les alertes. Si les signaux sonores tels que les bips ont été efficaces dans le passé, les utilisateurs attendent désormais des sons plus sophistiqués qui ne peuvent être produits qu'en jouant des fichiers audio de formats tels que MP3. Le problème est que la lecture audio peut sembler intimidante et ajouter au coût et à la complexité d'un système. Le premier réflexe est de trouver un microcontrôleur capable de lire le format MP3, mais cela ajoute souvent un coût à la nomenclature et une complexité considérable au logiciel embarqué.

Une solution particulièrement efficace pour équilibrer le coût supplémentaire et la complexité du logiciel est l'utilisation d'un codec audio. Non seulement les codecs audio acceptent un flux de données audio provenant d'un microcontrôleur, mais ils sont également souvent dotés de multiples fonctions qui permettent au développeur de régler soigneusement le système de lecture audio pour améliorer la qualité du son joué par le système.

Cet article traite du rôle des codecs audio, des principales caractéristiques que les développeurs doivent prendre en compte lors d'une sélection, et de la manière de les appliquer efficacement. Des solutions d'AKM Semiconductor, de Texas Instruments et de Maxim Integrated sont présentées ici et utilisées comme exemples, mais d'autres solutions sont également disponibles. Cet article se termine par des conseils et astuces sur la manière d'accélérer le développement d'applications de lecture audio à l'aide d'un codec, tout en réduisant le coût système.

Présentation des codecs audio

Un codec audio est un composant matériel capable de coder ou de décoder un flux de données numériques contenant des informations audio1. Un codec audio est utile car il permet de déconnecter le traitement audio du microcontrôleur. Cela peut réduire considérablement la complexité logicielle et permettre d'utiliser un microcontrôleur moins coûteux et moins performant pour une application.

Un codec audio typique contient plusieurs blocs fonctionnels :

  • Une interface I2S pour transmettre ou recevoir des données audio numériques codées
  • Une interface I2C pour configurer et lire les registres de commande du codec audio
  • Une entrée de microphone qui est connectée à un convertisseur analogique-numérique (CAN)
  • Au moins un canal de sortie audio tel qu'une sortie de haut-parleur, mais la plupart des codecs comprennent également une sortie de ligne et peuvent inclure plusieurs sorties de haut-parleur pour la lecture stéréo
  • Un bloc numérique qui contient des filtres passe-haut, passe-bas, coupe-bande et égaliseurs pour accorder les lectures et les enregistrements audio

Le codec audio 24 bits AK4637EN d'AKM Semiconductor (Figure 1) est un exemple de codec audio qui est très populaire en raison de son faible coût et de ses capacités audio. L'AK4637EN possède toutes ces fonctionnalités, en plus d'une entrée de générateur de bip qui peut être utilisée pour générer un bip en utilisant un signal de modulation de largeur d'impulsion (PWM) à une fréquence souhaitée.

Schéma du codec audio AK4637EN d'AKM Semiconductor avec une sortie de haut-parleur mono (cliquez pour agrandir)Figure 1 : L'AK4637EN est un codec audio avec une sortie de haut-parleur mono avec des capacités de lecture et d'enregistrement audio. Il contient également un bloc audio interne qui peut être utilisé pour filtrer les signaux audio entrants et sortants afin d'améliorer la fidélité audio. (Source de l'image : AKM Semiconductor)

Les développeurs constateront que le principal différentiateur d'un codec audio est la sortie audio mono ou stéréo, ainsi que les capacités du bloc numérique. Par exemple, l'AK4637EN offre un filtre passe-haut, un filtre passe-bas, un égaliseur à quatre bandes, une fonction d'égalisation automatique des canaux et un égaliseur à bande unique. Ce dernier peut être utilisé comme un filtre coupe-bande à bande étroite. La manière dont un développeur configure ces filtres numériques peut considérablement affecter le son d'un système.

Le codec audio peut parfois intimider un développeur inexpérimenté en matière de lecture audio. Par exemple, alors que l'AK4637EN est un simple codec audio, un rapide coup d'œil à la fiche technique montre qu'il est doté de 64 registres configurables. Cela peut sembler beaucoup au début, mais la plupart de ces registres sont utilisés pour définir les coefficients de filtrage des différents filtres numériques disponibles. Il suffit d'en utiliser quelques-uns pour que le système produise correctement le son, ce qui rend le développement du pilote d'un codec audio beaucoup plus simple qu'il n'y paraît.

Comment sélectionner un codec audio

L'un des principaux facteurs de sélection de tout composant dans le développement d'un produit est le coût, et les codecs audio ne font pas exception. Néanmoins, il est important de garder à l'esprit que les performances dépendent de la qualité du composant. Ainsi, lorsqu'il s'agit d'audio, une équipe doit soigneusement comparer les exigences de conception et les paramètres clés de la solution.

La première considération est la sortie requise du codec audio. Il existe plusieurs choix différents. Par exemple, l'AK4637EN a une sortie de ligne et une sortie de haut-parleur mono. Il existe d'autres codecs comme le codec audio stéréo TLV320AIC3110IRHBR de Texas Instruments qui peut commander deux haut-parleurs à 1,29 watt (W) (Figure 2).

Schéma du codec audio avec sortie stéréo et amplification TLV320AIC3110IRHBR de TI (cliquez pour agrandir)Figure 2 : Le TLV320AIC3110IRHBR de TI est un codec audio avec sortie stéréo et amplification en plus d'une entrée de microphone. Le codec peut commander 1,29 W à partir d'amplificateurs internes et dispose de blocs audio numériques programmables. (Source de l'image : Texas Instruments)

D'autres codecs audio comme le MAX9867 de Maxim Integrated sont conçus pour commander uniquement une paire de casques (Figure 3). Le MAX9867 est doté des interfaces numériques I2S et I2C typiques, mais il offre également des entrées de microphones stéréo et deux entrées de ligne sélectionnables numériquement.

Schéma du codec audio MAX9867 de Maxim IntegratedFigure 3 : Le codec audio MAX9867 de Maxim Integrated peut commander des casques stéréo et sélectionner entre les entrées numériques, de microphone et de ligne. (Source de l'image : Maxim Integrated)

Le choix entre ces trois solutions quant au type de sortie (ou même d'entrée) est une décision cruciale à prendre dès le départ.

Les développeurs doivent également prendre en compte d'autres facteurs. Le codec audio commandera-t-il directement un casque, un ou deux haut-parleurs, et quelle sera la puissance de sortie ? Si le système doit commander un haut-parleur de 5 W, il n'y a pas beaucoup de codecs pour les systèmes embarqués adaptés à cette utilisation. Un développeur peut plutôt choisir la sortie de ligne et utiliser un amplificateur de classe D séparé pour commander directement le haut-parleur. Cela permet de réaliser des économies tout en offrant une certaine flexibilité de conception.

Deux dernières considérations sont les capacités de routage interne et de filtrage numérique. C'est ce qui détermine vraiment la différenciation réelle et les différences de coût pour un codec audio. Par exemple, le TLV320AIC311IRHBR est doté de fonctions de suppression du grésillement et de démarrage progressif pour minimiser le grésillement des haut-parleurs et permettre une transition fluide dans la lecture audio. Il dispose également d'un mélangeur interne pour chaque canal de sortie et d'un contrôle numérique du volume.

Il appartient au développeur de trouver un équilibre entre ses exigences en matière de codec audio, la nomenclature et l'espace carte qui sera occupé par le circuit.

Le système de lecture audio

Lorsque vous travaillez avec un codec audio, il est important de réaliser qu'il y a plusieurs blocs différents en plus du codec audio qui sont nécessaires pour obtenir une lecture audio réussie. Les blocs exacts varient légèrement en fonction de l'application et de la méthode choisie pour la lecture, mais un schéma généralisé est présenté à la Figure 4.

Schéma fonctionnel de connexion généralisé pour un système de lecture audioFigure 4 : Un schéma fonctionnel de connexion généralisé pour un système de lecture audio dans une application embarquée typique montre qu'il faut prévoir un espace de stockage pour les fichiers audio, qui peut se trouver sur le microcontrôleur ou sur une mémoire externe. (Source de l'image : Beningo Embedded Group)

Plusieurs points de ce schéma méritent d'être discutés. Tout d'abord, il faut prévoir une méthode pour stocker les fichiers de lecture audio. Il existe deux options pour cela : stocker les fichiers en interne dans la mémoire Flash du microcontrôleur ou les stocker en externe dans une mémoire Flash. Le choix dépend de la taille du ou des fichiers audio et de la taille de la mémoire Flash interne du microcontrôleur.

Les développeurs doivent également prendre en compte le format de lecture audio. Le format MP3 est le plus courant. Dans ce cas, le microcontrôleur sélectionné doit avoir une pile logicielle qui prend en charge le décodage MP3. Cela permet d'ouvrir le fichier MP3 puis de le transférer à l'aide d'un contrôleur d'accès dynamique à la mémoire (DMA) via l'interface I2S. Le port I2S peut également être configuré pour le mode maître/esclave et plusieurs autres modes. Il faut donc vérifier soigneusement ces informations pour s'assurer que les données sont transférées au codec à la vitesse correcte.

Comme mentionné précédemment, un amplificateur audio externe peut être nécessaire ou non, selon l'application. Un codec typique génère environ 1 W à 1,5 W, ce qui est utile pour commander un petit haut-parleur. Pour commander un haut-parleur de 3 W ou plus, il est nécessaire d'utiliser un amplificateur externe. Là encore, les plus utilisés sont les amplificateurs de classe D. L'amplificateur ne doit pas nécessairement avoir un gain variable. Le codec audio peut régler numériquement le contrôle du volume pour fournir une large plage de puissance de sortie.

Un domaine souvent négligé est celui de la capacité totale. Lorsque le son est en cours de lecture, il peut solliciter fortement les rails d'alimentation. Si la carte n'a pas une capacité suffisante, la qualité de la sortie peut être considérablement affectée et présenter plusieurs bruits indésirables. Cela peut être détecté en surveillant attentivement les rails d'alimentation pendant les tests. Lors du développement d'un circuit imprimé, ce n'est pas une mauvaise idée de laisser de l'espace supplémentaire sur la carte pour pouvoir tester différentes valeurs de capacité pour accorder le circuit de sortie.

Conseils et astuces pour la sélection et l'utilisation d'un codec audio

Les codecs audio peuvent considérablement simplifier les logiciels embarqués et fournir une application avec une excellente qualité audio. Les codecs audio peuvent s'avérer compliqués pour les développeurs inexpérimentés. Pour tirer pleinement parti d'un codec audio, il existe plusieurs trucs et astuces que les équipes doivent prendre en compte, notamment :

  • Utilisez la fonction de contrôleur d'accès direct à la mémoire (DMA) d'un microcontrôleur pour alimenter le codec audio avec une intervention minimale du processeur. Cela permet de garantir que le codec n'est pas « privé » de données.
  • En l'absence de lecture audio, utilisez la fonction de silencieux du codec pour empêcher les bruits de sortie de faible niveau d'atteindre le haut-parleur.
  • Lorsque vous activez ou désactivez la lecture, utilisez la fonction de silencieux progressif du codec audio pour éviter les grésillements de haut-parleur et d'autres bruits indésirables.
  • Utilisez une application de terminal pour générer les registres de codec une fois le codec initialisé. Cela peut être particulièrement utile lors des opérations de débogage des problèmes ou d'accord du circuit de sortie du haut-parleur et de l'enceinte.
  • Utilisez les mécanismes de filtres numériques internes inclus dans un codec. Les filtres numériques permettent au développeur d'égaliser la sortie, de filtrer les hautes et basses fréquences indésirables et de maximiser la qualité du système audio.
  • N'oubliez pas que le réglage du son ne sera utile que lorsque le circuit imprimé et le haut-parleur seront installés dans l'enceinte, car l'enceinte et le montage font une énorme différence.

Pour commencer, les développeurs peuvent expérimenter avec le kit d'évaluation MAX9867EVKIT+ pour le MAX9867 de Maxim Integrated (Figure 5).

Image du kit d'évaluation MAX9867EVKIT+ pour le MAX9867 de MaximFigure 5 : Le kit d'évaluation MAX9867EVKIT+ pour le MAX9867 se connecte à un PC via un câble USB et il comporte des entrées RCA, des sorties de casque et des modules d'émission et de réception fibre optique. (Source de l'image : Maxim Integrated)

Le kit comprend la carte et le logiciel associé, et il est configuré pour envoyer et recevoir des données audio en utilisant l'interface numérique Sony/Philips (S/PDIF), mais il peut également être configuré pour utiliser I2S. Il est équipé de deux jacks d'entrée RCA, de deux jacks de casque à sortie analogique de 3,5 millimètres (mm) et de modules d'émission et de réception fibre optique. Le logiciel est compatible avec Windows, et lorsqu'il est connecté à un PC par un câble USB, il présente une interface utilisateur graphique (GUI) via laquelle le développeur peut expérimenter les paramètres du MAX9867 (Figure 6).

Image de l'interface graphique Windows (cliquez pour agrandir)Figure 6 : En utilisant l'interface graphique Windows, les utilisateurs peuvent expérimenter une large gamme de paramètres MAX9867, de l'horloge et de l'audio numérique (onglet sélectionné) aux registres 1 et 2 (à droite). (Source de l'image : Maxim Integrated)

Conclusion

Les utilisateurs de systèmes embarqués se sont habitués à un son de qualité, au point qu'ils s'attendent désormais à des sons sophistiqués au lieu des traditionnels buzzers et bips pour les alarmes, les alertes et d'autres retours audio. Les équipes de développement ont donc pour mission d'implémenter des capacités de lecture MP3 dans leurs systèmes. À première vue, cela peut sembler complexe. Cependant, en utilisant le codec audio approprié avec un microcontrôleur et en suivant certaines bonnes pratiques de conception, les développeurs peuvent équilibrer le coût et la complexité associés aux applications audio.

Références

  1. https://en.wikipedia.org/wiki/Audio_codec
DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo est un consultant en logiciels embarqués, et il travaille actuellement avec des clients dans plus d'une douzaine de pays pour transformer radicalement leurs activités en améliorant la qualité, les coûts et les délais de commercialisation des produits. Il a publié plus de 200 articles sur les techniques de développement de logiciels embarqués. Jacob Beningo est un conférencier et un formateur technique recherché, et il est titulaire de trois diplômes, dont un master en ingénierie de l'Université du Michigan. N'hésitez pas à le contacter à l'adresse jacob@beningo.com et sur son site Web www.beningo.com, et abonnez-vous à sa newsletter mensuelle Embedded Bytes.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey