Question:
Relation entre la consommation d'énergie / d'énergie tirée I2C et le débit de données
kellogs
2018-11-09 20:04:09 UTC
view on stackexchange narkive permalink

En me référant à ce que dessinent les lignes I2C, ai-je tort de penser que plus la fréquence d'horloge est élevée, plus le temps sera court (la même quantité de) courant traversant les pullups et donc moins d'énergie consommée?


side qeustion

Je ne pense pas que j'atteindrai 100 kHz, c'est bien au-delà de la limite de mon matériel.Je alterne entre 32 et 4 kHz environ.La même valeur de résistance (3,3k @ 3V) sera-t-elle bonne pour les deux?

Cinq réponses:
ratchet freak
2018-11-09 20:29:04 UTC
view on stackexchange narkive permalink

Les lignes de données et d'horloge I2C consomment de l'énergie lorsqu'elles sont tirées bas.Parce qu'alors, la puissance passe par les résistances pull-up.

Lorsqu'une ligne est tirée vers le bas, elle attirera 5V / 4,7k \ $ ~ \ Omega \ approx \ $ 1mA.En supposant des résistances 5V VCC et 4,7k pullup.

La ligne d'horloge aura un cycle de service de 50%.La ligne de données est faible au moins 1 sur 9 cycles d'horloge (chaque accusé de réception pour un octet réussi) mais vous allez rarement envoyer / recevoir uniquement des octets 0xff.Il est plus probable qu'il soit réduit 75% du temps.

Mais en effet, une horloge plus rapide signifie une transmission plus courte, ce qui signifie moins de perte de puissance par les pull-ups.Cependant, une transmission plus rapide peut nécessiter des résistances de valeur inférieure pour surmonter la capacité parasite entre les lignes et la terre.

Il faut également de l'énergie pour charger et décharger la capacité parasite.Je pense qu'un autre facteur qui affecte la consommation d'énergie est le pourcentage de temps actif du bus.
Et ma question secondaire?
La puissance consommée pour charger et décharger la capacité (en supposant que vous ne changez pas le circuit et que votre horloge est suffisamment lente pour que cela arrive à son achèvement effectif) serait déterminée par le nombre d'horloge * de cycles * mais pas par le * taux * d'horloge *.
Je suis curieux de connaître les 75% de la valeur temps.J'aurais dit environ 50% (ou mieux 56, y compris l'ack), puisque toutes les valeurs sont également probables.75% signifie que le nombre moyen de zéros par octet est compris entre 5 ou 6;était votre estimation pessimiste ou 75% est la valeur statistique réelle?
Estimation pessimiste @frarugi87.Basé sur l'habitude d'utiliser des nombres faibles pour les adresses de divers registres de contrôle et les valeurs qu'ils prennent.J'ai donc estimé que les 3 premiers bits ne sont très souvent que 0.
@ratchetfreak C'est logique;) Merci pour votre explication
Arsenal
2018-11-09 20:28:53 UTC
view on stackexchange narkive permalink

Votre pensée est correcte, tant que vous pouvez atteindre une vitesse plus élevée avec les mêmes résistances de tirage.

Et ma question secondaire?
@kellogs ne peut pas répondre à cela car je n'ai aucune idée de la capacité de vos lignes.Je ne peux donc que vous dire que nous utilisons sans problème 100 kHz avec des résistances de 100 kOhm dans l'un de nos produits.Je suppose que tu vas bien.
une façon de le deviner?
@kellogs bien, 10 pF pour toute broche connectée au bus, 50 pF par mètre pour la longueur de la ligne serait une supposition conservatrice, je pense.Si votre bus I²C est sur un seul PCB, j'ai du mal à imaginer pourquoi il ne fonctionnerait pas avec des résistances pull up 3k3.
Peter Karlsen
2018-11-09 20:41:08 UTC
view on stackexchange narkive permalink

Une fréquence d'horloge plus élevée nécessite généralement une valeur de pull-up inférieure, augmentant ainsi le courant.

Augmenter la fréquence d'horloge de 100 kHz à 400 kHz nécessite généralement de réduire le pull-up d'un facteur de 4 à 5.

La puissance étant inversement proportionnelle à la résistance, la puissance consommée sera presque la même.

Et ma question secondaire?
@kellogs 32KHz est vraiment lent pour I2C.En fonction de la capacité du bus, vous pouvez probablement utiliser 10k ou plus.Utilisez une lunette pour voir le front montant de SCL et SDA pour déterminer la valeur du pull-up.La SDA doit être capable de passer de faible à élevée dans la période basse de SCL.
gustavovelascoh
2018-11-09 20:38:33 UTC
view on stackexchange narkive permalink

Comme l'a déclaré @ ratchet-freak, en termes de temps, vous pourriez avoir 75% du temps de descente du bus, par conséquent, si vous augmentez la fréquence d'horloge, votre consommation par le bus diminuera tant que vous aurezla même valeur pour les résistances pull-up.Mais, à des vitesses plus élevées, les valeurs de résistance devraient être réduites.

Ayant cela, la consommation du bus sera plus faible, mais les appareils esclaves et maîtres pourraient augmenter leur consommation en fonction de la fréquence d'horloge.

En ce qui concerne votre question secondaire, si 3,3kohms convient à la fois à 4khz et à 32khz, vous devez vérifier la capacité de votre bus.Cette capacité dépend de la longueur du bus, de la distance entre les lignes et du nombre d'appareils qui y sont attachés.Il peut être difficile de calculer la capacité réelle, mais vous pouvez vérifier la forme d'onde de vos données dans le bus aux deux fréquences et voir s'il y a une distorsion du signal à 32khz en utilisant 3,3k.

Et ma question secondaire?
Pallav Aggarwal
2019-06-19 17:36:31 UTC
view on stackexchange narkive permalink

À haut débit, la consommation d'énergie sera plus élevée: - Le MCU doit fonctionner plus rapidement - Des pullups de faible valeur seront nécessaires pour obtenir un front montant / descendant correct des impulsions



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...