Pièces: Potentiomètre de volume audio I2C (DS1807)
Le DS1807 est composé de deux potentiomètres numériques logarithmiques (pots) pour le réglage du volume audio. Chaque pot a 64 niveaux de volume plus un réglage muet. Le niveau de volume de chaque pot est défini sur une interface série I2C à deux fils. Nous vous montrerons comment vous connecter et interfacer le DS1807 ci-dessous.
Potentiomètre de volume audio DS1807 I2C (DIGIKEY # DS1807 + -ND, 3,04 $)
Connexions
Pirate de bus
DS1807 (code PIN)
Gnd
Gnd (1)
Gnd
A2 (2)
Gnd
A1 (3)
Gnd
A0 (4)
Gnd
Agnd (11)
SDA
SDA (12)
L’horloge
SCL (13)
+ 5Volts
VCC (14)
Nous avons connecté le DS1807 à l’outil d’interface série Universal de bus Pirate, comme indiqué dans le tableau, les mêmes principaux de base s’appliquent à toute configuration sur mesure. Nous avons utilisé l’alimentation 5 Volt du pirate de bus, mais le DS1807 fonctionnera également à 3,3 volts. I2C nécessite une résistance pull-up sur chaque ligne de signal, nous avons utilisé les résistances embarquées du pirate de bus connectées à l’alimentation de 5 Volts intégré.
Connectez le DS1807 à une source audio, comme indiqué à la page 3 de la fiche technique. Connectez le signal audio brut à la broche H et connectez la broche L à la terre, le signal audio atténué proviendra de la goupille W.
Interface
Tout d’abord, configurez le pirate de bus pour le mode I2C et activez l’alimentation 5 Volt. Nous avons couvert cette procédure dans notre dernier poste de pièces.
I2C> V <-Voltage Moniteur MONITEUR DE TENSION 9XX: 5V: 4.9 | 3.3V: 0.0 | VPullup: 5.0 | I2c>
Avec l’alimentation configurée, vérifiez que le moniteur de tension (V) pour être sûr que l’alimentation 5 Volt est active et que 5 volts sont présents aux résistances de pull-up.
I2c> (0) <- liste des macros disponibles 0.macro Menu Recherche d'adresse 1.7BIT I2C> (1) <- Exécution de la recherche d'adresse XXX recherche sur l'espace d'adressage 7 bits I2C. Dispositifs trouvés à: 0x50 0x51 0x52 La recherche de recherche de l'adresse du pirate du bus est un moyen rapide de localiser les périphériques I2C sans vérifier la fiche technique. 0x50 est une adresse d'écriture i2c car le dernier bit est 0, 0x51 est une adresse de lecture (dernier bit 1). 0x52 est probablement une adresse d'écriture de groupe / global, car elle n'a pas d'adresse de lecture correspondante. Nous pourrions également comprendre l'adresse à partir de la fiche technique: l'adresse de base est 0101 plus les trois bits d'adresse (A0-2, tous à la terre, 000) et le bit d'écriture ou de lecture (0 ou 1) donnent 0B01010000 (0x50). I2c> [0x51 r] <- lire les valeurs du pot Condition de départ 210 I2C 220 I2C Écrire: 0x51 a reçu ACK: Oui <-D'adresse de lecture 230 I2C Lire: 0x3f <-pot0 230 I2C Lire: 0x3f <-pot1 Condition d'arrêt 240 I2C I2c>
Tout d’abord, nous lisons les valeurs du potentiomètre au démarrage. [Numère la condition de démarrage I2C, 0x51 est l’adresse de lecture de périphérique, “R R” lit deux octets et] émet la commande I2C STOP. La valeur de démarrage par défaut est de 63 (0x3f), une position au-dessus de la sourdine (Fiche technique Page 2).
I2c> [0x50 0b10101001 0] <- écrire POT0 Condition de départ 210 I2C 220 I2C Écrire: 0x50 Got ACK: Oui <-DS1807 Adresse d'écriture 220 I2C Écrire: 0xa9 Got Ack: Oui <-Pot0 Write Commande 220 I2C Écrire: 0x00 Got ACK: Oui <-Volume à définir Condition d'arrêt 240 I2C I2C> [0x50 0B10101010 64] <- Ecrire Pot1 Condition de départ 210 I2C 220 I2C Écrire: 0x50 Got ACK: Oui <-DS1807 Adresse d'écriture 220 I2C Écrire: 0xaa a obtenu ACK: Oui <-Pot1 Commande d'écriture 220 I2C Écrire: 0x40 Got ACK: Oui <-Volume à définir Condition d'arrêt 240 I2C I2c> [0x51 r] <- lire les valeurs de retour pour vérifier Condition de départ 210 I2C 220 I2C Écrire: 0x51 Got ACK: OUI <-DS1807 Adresse de lecture 230 I2C Lire: 0x00 <-Pot0 valeur 230 I2C Lire: 0x40 <-pot1 valeur Condition d'arrêt 240 I2C I2c>
Ensuite, nous mettons à jour chaque pot de volume avec une commande séparée. 0x50 est l’adresse d’écriture DS1807, 0B10101001 (0xa9) est la commande pour mettre à jour le pot0 et 0 définit le volume à la totalité. La séquence suivante utilise la commande Mettre à jour Pot1, 0B10101010 (0xaa) et définit le volume sur Muet (64, 0x40). Enfin, nous utilisons la procédure de lecture pour vérifier que les valeurs sont correctes.
I2c> [0x50 0xa9 64 0] <- écrivez les deux valeurs de pot Condition de départ 210 I2C 220 I2C Écrire: 0x50 Got ACK: Oui 220 I2C Écrire: 0xA9 Got ACK: Oui <-UPDate Pot0 Commande 220 I2C Écrire: 0x40 Got ACK: Oui <-Pot0 valeur 220 I2C Écrire: 0x00 a reçu ACK: Oui <-Pot1 valeur Condition d'arrêt 240 I2C I2C> [0x51 r] <- Read Back Valeurs Condition de départ 210 I2C 220 I2C Écrire: 0x51 a reçu ACK: Oui 230 I2C Lire: 0x40 <-Pot0 valeur 230 I2C Lire: 0x00 <-Pot1 valeur Condition d'arrêt 240 I2C I2c>
La commande Pot 0 Write peut également être utilisée pour définir les deux valeurs de potentiomètre avec une seule commande. Utilisez la commande POT0 UPDATE (0B10101001, 0xa9) et envoyez la valeur POT1 (0) en suivant la valeur POT0 (64).
I2c> [0x50 0b10101111 0x20] <- Mettez à jour les deux pots de la même valeur Condition de départ 210 I2C 220 I2C Écrire: 0x50 Got ACK: Oui 220 I2C Écrire: 0XAF GOT ACK: OUI