Bibliothèque technique gratuite ENCYCLOPÉDIE DE LA RADIOÉLECTRONIQUE ET DU GÉNIE ÉLECTRIQUE Lecteur audio MP3 et Opus. Encyclopédie de l'électronique radio et de l'électrotechnique Encyclopédie de l'électronique radio et de l'électrotechnique / l'audio Cet article décrit un lecteur portable maison pour les fichiers musicaux de formats courants à partir d'une carte mémoire microSD. Il est assemblé sur le microcontrôleur STM32F407VGT6 dans un boîtier d'un téléphone portable NOKIA 1100. Le schéma du joueur est illustré à la fig. 1. Il utilise au maximum les composants électroniques disponibles sur la carte de développement STM32F4DISCOVERY, notamment le microcontrôleur STM32F407VGT6 (DD1), les régulateurs de tension intégrés LD3985M25R (DA1) et LD3985M33R (DA3), le codec CS43L22 (DD2) ainsi que les composants passifs. Du téléphone portable NOKIA 1100, en plus du boîtier et de la batterie, un connecteur pour connecter des écouteurs XS3, un panneau avant avec un écran LCD HG1, des membranes pour les boutons SB1-SB17 formées par des plages de contact concentriques sur une carte de circuit imprimé, et un connecteur pour connecter une batterie G1 ont été utilisés. De plus, la carte du lecteur contient un support pour une carte mémoire microSD TFC-WPCE-08 (XS1), un groupe de plages de contact pour connecter le programmeur Xp1, un connecteur miniUSB-B 5075BMR-05-SM (XS2).
Les ensembles de diodes VD1, VD4, VD5, VD6 sont utilisés pour protéger contre les décharges électrostatiques les circuits connectés aux connecteurs XS2 et XS3. Les connecteurs restants sont situés à l'intérieur du compartiment de la batterie et n'ont pas besoin de protection. La puce (DA2) est un contrôleur de charge de batterie lithium-ion G1 avec une tension maximale de 4,2 V. La résistance R9 réduit la chute de tension sur cette puce pendant la charge, la faisant chauffer. La résistance R10 définit le courant de charge maximal Isal.max selon la formule Ipar ap.max = 1000/R10. Avec la résistance R10 réglée en kiloohms, la valeur du courant de charge est obtenue en milliampères. Il est recommandé de charger une batterie lithium-ion avec un courant ne dépassant pas 1C, où C est la capacité de la batterie. La capacité de la batterie BL-5C utilisée est d'environ 1000 mAh, le courant de charge maximal autorisé pour la puce LTC4054ES5-4.2 est de 800 mA. La charge s'effectuant depuis le bus USB, sa capacité de charge (500 mA) doit également être prise en compte. Ainsi, la valeur recommandée de R10 est de 2 kOhm. De plus, en mesurant la tension aux bornes de R10, vous pouvez déterminer la valeur actuelle du courant de charge de la batterie à l'aide de la formule Izar= 1000UR10/ R10 (courant - en milliampères, tension - en volts, résistance - en kiloohms). Lorsque le connecteur XS2 est connecté au bus USB, le transistor à effet de champ VT1 déconnecte la batterie G1 du circuit d'alimentation du lecteur. Une tension de 5 V provenant de la broche 1 du connecteur XS2 ouvre le transistor VT5, la tension de grille du transistor VT3 devient négative par rapport à sa source. Le transistor VT3 s'ouvre, y compris le lecteur. Lorsqu'il n'y a pas de tension sur la broche 1 du connecteur XS2, le potentiel de grille du transistor VT3 est proche de son potentiel de source et le transistor est fermé. L'appui sur le bouton SB1 ouvre également le transistor VT3, le microcontrôleur commence à fonctionner et vérifie l'état de ce bouton toutes les 10 ms. S'il est maintenu enfoncé pendant plus de 2 secondes, le microcontrôleur établira un niveau de tension élevé à la base du transistor VT2, l'ouvrant et maintenant le transistor VT3 ouvert. Après cela, le lecteur se met en état de marche et le bouton peut être relâché. Éteignez le lecteur en appuyant à nouveau sur le bouton SB1 et en le maintenant enfoncé. Après la mise sous tension, le microcontrôleur initialise l'écran LCD HG1 et la carte microSD insérée dans le support XS1, vérifie la présence du fichier de configuration player.ini dans le répertoire racine de la carte (les systèmes de fichiers FAT12, FAT16, FAT32 sont pris en charge). Il s'agit d'un fichier ini normal, qui est un ensemble de lignes "clé - valeur". Il stocke des informations sur le fichier audio sélectionné pour la lecture au moment où le lecteur a été éteint pour la dernière fois, la position dans celui-ci et le volume réglé. Le programme essaie de restaurer cet état. En cas d'échec (par exemple, si la carte a été remplacée), le premier fichier audio (avec l'extension .mp3 ou .opus) sur la carte est recherché. La recherche commence à partir du répertoire racine, les fichiers sont recherchés dans l'ordre dans lequel ils sont répertoriés dans la table d'allocation des fichiers sur la carte. Pendant la lecture, la fonction MainThread du décodeur actuel est appelée périodiquement, qui effectue la lecture de la carte selon les besoins (chaque codec est responsable de sa mise en mémoire tampon, car les formats des conteneurs de paquets audio pour .opus et .mp3 sont différents) et décodage . La nécessité d'effectuer ces opérations est déterminée par la plénitude du tampon circulaire AudioBuffer, à partir duquel le codec audio lit les informations de manière asynchrone. A l'issue du décodage du fichier audio courant, le suivant est recherché selon le principe décrit ci-dessus. Si la traversée du système de fichiers est terminée, la lecture s'arrête. Le lecteur interagit avec l'utilisateur à l'aide d'un écran LCD graphique monochrome HG1 avec une résolution de 96x65 px et des boutons SB 1 -SB 17. Une simulation logicielle du mode d'affichage du texte est utilisée avec l'écran divisé en huit lignes de 8 px de hauteur. La barre horizontale restante de 1px en bas de l'écran est utilisée pour afficher visuellement la position actuelle dans le fichier pendant la lecture. La première ligne à partir du haut affiche (de gauche à droite) la tension de la batterie, l'état du lecteur, le volume. L'état est caractérisé par les caractères "0" - lecture, "-" - pause, "<<" ou ">>" - retour rapide ou avance rapide, respectivement, dans le fichier. Le symbole en forme de rectangle signifie une erreur dans la communication des microcircuits DD1 et DD2 via l'interface I2C. Les lignes 2 à 6 indiquent le chemin d'accès complet au fichier audio en cours de lecture. La ligne 8 affiche le temps de lecture actuel à gauche et la durée du fichier audio à droite. Le bouton SB1 bascule entre les modes de lecture et de pause, le bouton SB3 augmente le volume et le bouton SB5 diminue le volume, le bouton SB4 s'allume et le verrouillage du clavier est désactivé avec le bouton SB15. Lorsque le clavier est verrouillé, "Locked" s'affiche au centre de la ligne 7 de l'écran. Appuyez sur le bouton SB6 pour passer à la lecture du fichier précédent et sur le bouton SB8 - le suivant. Appuyer et maintenir ces boutons pendant plus d'une seconde place le lecteur en mode d'avance rapide, de rembobinage ou d'avance, respectivement. Appuyer sur le bouton SB9 ou SB11 charge respectivement le premier et le dernier fichier du répertoire actuel pour la lecture. Connecteur XS3 - disponible dans le boîtier utilisé pour connecter un casque. Le casque lui-même dispose d'une prise pour une prise audio standard d'un diamètre de 3,5 mm, à laquelle un casque est connecté. Le casque fournit également un bouton qui, lorsqu'il est enfoncé, connecte les circuits BTN et GND, et la résistance entre les contacts du bouton relâché est d'environ un kiloohm. Dans le lecteur, la ligne BTN est connectée au circuit 3,3 V via une résistance R21. Par conséquent, en mesurant la tension sur cette ligne, on peut juger à la fois de la présence d'un casque connecté et de l'état de son bouton. La fonction du bouton du casque est similaire à la fonction du bouton du lecteur SB1 - vous pouvez le faire passer du mode lecture au mode pause, et vice versa, et également l'éteindre. Cependant, vous ne pouvez pas allumer le lecteur qui l'utilise. Lorsque le clavier est verrouillé, le bouton du casque reste actif. Le connecteur XS2 remplace la lentille de la lampe de poche LED dans le téléphone. Lorsqu'un niveau logique haut est détecté à l'entrée PA1 du microcontrôleur connecté à la broche 9 de ce connecteur, le programme commence à afficher le courant de charge de la batterie en ampères dans le coin supérieur droit de l'écran. De plus, cet événement allume automatiquement le lecteur s'il était éteint. Par défaut, après cela, le lecteur fonctionne en mode de lecture normal, ce qui vous permet d'écouter de la musique et de charger la batterie en même temps. Lorsque vous appuyez sur le bouton SB13, le programme enregistre l'état du lecteur dans le fichier player.ini et configure le module de microcontrôleur USB pour fonctionner en mode MSC (Mass Storage Class). Dans ce mode, l'ordinateur reconnaît le lecteur connecté au connecteur USB comme un périphérique de stockage amovible dont le contenu correspond à celui enregistré sur la carte microSD insérée dans le lecteur. Les informations sont échangées avec l'ordinateur uniquement en mode Full Speed avec une bande passante ne dépassant pas 12 Mbps. L'écran affiche toujours la valeur actuelle du courant de charge, à la ligne 3 - l'inscription "USB Disk", aux lignes 4 et 5 - respectivement, la vitesse de lecture et d'écriture. En appuyant sur le bouton SB12, l'appareil revient en mode lecteur. Le dessin de la carte de circuit imprimé du lecteur est illustré à la fig. 2. Ses dimensions et sa forme sont identiques à la carte du téléphone portable NOKIA 1100, auquel cas il est placé (Fig. 3). La carte doit être fabriquée selon la technologie avec des trous métallisés, sinon il faut insérer et souder des morceaux de fil étamé des deux côtés dans tous les vias (avec des pastilles des deux côtés de la carte) et les souder des deux côtés. L'emplacement des pièces sur la carte est illustré à la fig. Échelle 4 en 2:1. Il montre également des masques en vernis isolant résistant à la chaleur, qui doivent être utilisés pour protéger les conducteurs imprimés. Si les masques ne sont pas appliqués, il est nécessaire d'isoler au moins les zones où les conducteurs s'approchent des contacts imprimés des boutons et la zone sous le boîtier métallique du support de carte microSD XS1.
Les codes du fichier walkgeek-v1.2-n1100-with-mp3.hex joint à l'article doivent être entrés dans la mémoire du microcontrôleur installé sur la carte. Le code source du programme du lecteur et de tous ses composants est distribué sous la nouvelle licence BSD (et d'autres compatibles), ce qui permet son utilisation dans des projets commerciaux fermés. L'exception est la bibliothèque Mp3dec, dont l'ajout au produit final nécessite la divulgation de tous les codes sources. Le projet est constamment mis à jour et ses versions mises à jour sont publiées dans [1]. Comme déjà mentionné, le lecteur offre la possibilité de lire des fichiers Opus. Il s'agit d'une version stable récemment publiée d'un codec logiciel [2] pour la compression audio avec perte développé par le projet Xiph.org, connu pour des solutions telles que Vorbis, FLAC (Free Lossless Audio Codec - codec pour la compression audio sans perte) et Speex (discours codec). Vous pouvez également l'appeler Ogg - un conteneur multimédia universel utilisé par défaut pour compresser un flux compressé dans des fichiers Opus. Étant donné que le codec Opus est assez nouveau, il n'y a pas beaucoup d'implémentations sur des systèmes avec une petite quantité de RAM. L'un d'eux est Rockbox. Au cours du processus de travail avec le codec, il s'est avéré que la bibliothèque Ogg alloue dynamiquement de la mémoire pour la mise en cache de la page entière (la taille maximale théorique est de 65 Ko, la vraie est d'environ 26 Ko), ainsi que pour la mise en cache granulepos de tous paquets de page (environ 16 Ko), ce qui pour un appareil, ayant 192 Ko de RAM, beaucoup. De plus, la bibliothèque alloue par défaut une petite zone de mémoire pour le tampon de page, l'étendant pendant le fonctionnement et allouant à chaque fois de la mémoire "avec une marge". La même chose se produit avec le tampon pour les valeurs de laçage - des informations sur la distribution des packages sur la page. Ainsi, si le pool de mémoire dynamique est petit, cela conduit rapidement à sa fragmentation importante et à l'impossibilité d'allouer davantage de mémoire de la quantité requise. Suite aux modifications apportées aux bibliothèques, la mise en cache est effectuée au niveau paquet (la taille maximale d'un paquet d'informations stéréo transmises à un débit de 512 Kbps est, en pratique, de 1276 octets). La taille maximale de la mémoire tampon pour les valeurs de laçage est de 256 cellules à deux octets, et elles peuvent également être rendues à un octet. Ainsi, toutes les structures associées au conteneur Ogg, après modification, occupent moins de 2 Ko de RAM. Certaines hypothèses ont été faites dans la modification : les paquets ne peuvent pas franchir les limites de page, les sommes de contrôle de page ne sont pas vérifiées (aucune de celles-ci n'a été trouvée dans aucun des fichiers Opus). Travailler avec des fichiers contenant plus d'un flux et avec un nombre de canaux différent de deux n'a pas été testé. La quantité totale de mémoire consommée par le codec Opus est de 65088 octets, dont 3856 octets sont occupés par le tampon de sortie. Les résultats du profilage de codec à différents débits d'informations sont présentés dans le tableau. 1. Tableau 1
Le concept de "complexité" fait référence aux performances du processeur requises pour un décodage réussi. Il a été estimé par simple calcul à l'aide d'un temporisateur matériel de la différence entre les instants d'entrée dans la procédure de décodage de chaque trame et de sortie de celle-ci (avec multitâche préemptif désactivé et interruptions désactivées). Le test a montré que le codec MP3 nécessite moins d'efforts de calcul. Mais Opus est libre de droits et la qualité sonore est meilleure lors de son utilisation que lors de l'utilisation de MP3 et du même débit binaire. Il existe une version du programme de lecteur pour la carte de débogage STM32F4DISCOVERY.Les codes qui doivent être entrés dans la mémoire du microcontrôleur installé sur celle-ci se trouvent dans le fichier walkgeek-v1. 1 -stm32f4discovery-with-mp3.hex (également joint à l'article). Dans ce cas, les fichiers audio sont lus à partir d'une clé USB connectée au connecteur CN5 de la carte via un adaptateur. Le joueur agit comme Maître du bus USB. Son état est affiché par des LED orange, rouge, bleue et verte sur la carte. Le rouge indique non, le vert indique la présence d'un lecteur FLASH connecté, l'orange indique qu'un fichier audio est en cours de chargement, la lecture s'est arrêtée ou une erreur de programme, le bleu clignotant indique le mode de lecture. La plupart des boutons disponibles dans le schéma de la Fig. 1, connecté à la carte de débogage selon le tableau. 2 (le deuxième contact de chaque bouton est relié à un fil commun). Le rôle du bouton SB8 est assuré par le bouton "User" de la carte. L'écran du téléphone NOKIA 1100 est connecté à la carte de débogage conformément au tableau. 3. Tableau 2
Tableau 3
littérature
Auteur : O. Tsaregorodtsev Voir d'autres articles section l'audio. Lire et écrire utile commentaires sur cet article. Dernières nouvelles de la science et de la technologie, nouvelle électronique : Machine pour éclaircir les fleurs dans les jardins
02.05.2024 Microscope infrarouge avancé
02.05.2024 Piège à air pour insectes
01.05.2024
Autres nouvelles intéressantes : ▪ Microcontrôleur ARM 32 bits flexible ▪ Chaussures de navigation électroniques pour touristes ▪ Détecteur de mensonge sans contact ▪ Nanoresonator aidera à refléter 10000 XNUMX fois plus de lumière Fil d'actualité de la science et de la technologie, nouvelle électronique
Matériaux intéressants de la bibliothèque technique gratuite : ▪ section du site Web de l'électricien. PUE. Sélection d'articles ▪ article Gestion anti-crise. Notes de lecture ▪ article Valériane pharmacie. Légendes, culture, méthodes d'application ▪ article Bloc d'allumage électronique. Encyclopédie de l'électronique radio et de l'électrotechnique
Laissez votre commentaire sur cet article : Toutes les langues de cette page Page principale | bibliothèque | Articles | Plan du site | Avis sur le site www.diagramme.com.ua |