Avez-vous les gars savent comment faire pour activer l'horloge qui s'étend sur I2C esclave?
Est-il suffisant de mettre cette fonction I2C_StretchClockCmd(I2C2, ENABLE)
dans l'initialisation de l'I2C?
Comment fonctionne l'horloge de l'étirement de travail?
OriginalL'auteur kai | 2014-07-21
Semble pour moi oui, c'est assez. Voici un arrière-plan:
De Génération D'Horloge
L'horloge SCL est toujours générée par l'I2C maître. Le cahier des charges exige un minimum de périodes de basse et haute d'une des phases du signal d'horloge. Par conséquent, la fréquence d'horloge peut être inférieur à la valeur nominale de la fréquence d'horloge par exemple dans le bus I2C avec grand temps de montée, due à la haute capacitance.
Horloge Étirement
Les composants I2C peut ralentir la communication par l'étirement SCL: au Cours d'une SCL bas de phase, tout I2C périphérique sur le bus peut en outre maintenez SCL pour l'empêcher de grimper à nouveau, leur permettant de ralentir la fréquence d'horloge SCL ou de cesser de communication I2C pour un certain temps. Il est également appelé comme la synchronisation de l'horloge.
Remarque: I2C spécification ne précise pas de délai d'attente de conditions pour l'horloge de l'étirement, c'est à dire un appareil maintenez SCL aussi longtemps qu'il le souhaite.
Dans une communication I2C maître appareil détermine la vitesse de l'horloge. Contrairement RS232 le bus I2C prévoit explicitement signal d'horloge qui soulage maître et de l'esclave de synchronisation jusqu'à une certaine vitesse en bauds.
Cependant, il existe des situations où un I2C esclave n'est pas en mesure de coopérer avec la vitesse d'horloge donnée par le maître et les besoins de ralentir un peu. C'est fait par un mécanisme appelé horloge étirement.
I2C esclave est autorisé à occuper le bas de l'horloge si elle a besoin de réduire la vitesse du bus. Le master sur l'autre main est nécessaire pour lire le signal d'horloge après l'avoir relâché à l'état haut et attendre jusqu'à ce que la ligne a en fait augmenté de haut.
Comment l'I2C vitesse d'horloge sur la durée de l'horloge de l'étirement introduit par l'I2C esclave?
De l'horloge, l'étirement est un phénomène où l'I2C esclave tire la SCL ligne de basse sur la 9e horloge de chaque I2C de transfert de données (avant l'accusé de réception de la scène). L'horloge est tirée vers le bas lorsque le CPU est le traitement de l'I2C interrompre pour évaluer l'adresse ou le processus de données reçu à partir de Maître ou de préparer le prochain données lorsque le Maître est la lecture de l'esclave.
Le temps de l'horloge est de tirer basse dépend du temps que le PROCESSEUR de traitement de l'interruption et donc dépend de la vitesse du PROCESSEUR et de ne pas l'I2C vitesse de l'horloge.
Lorsque l'esclave reçoit la commande de lecture à partir de le maître, il est titulaire de l'horloge de la ligne de basse. Le CPU/MCU obtient alors les données demandées, le place dans la transmission de registre et les communiqués de l'horloge ligne permettant la résistance de pull-up pour enfin tirer élevé. Des maîtres point de vue, il sera question de la première impulsion d'horloge de lecture en faisant SCL haut et puis vérifier pour voir si elle a vraiment disparu de haut. S'il est encore faible, puis son esclave que la tenue de la basse et le maître doit attendre jusqu'à ce qu'il passe au niveau haut avant de continuer. Heureusement, le matériel I2C ports sur la plupart des microprocesseurs gérer cela automatiquement.
Note qu'un esclave peut s'étirer tout le cycle, et pas seulement le 9ème de l'horloge.
OriginalL'auteur Ruslan Gerasimov
Pourquoi nous avons besoin de l'horloge étirement? La même chose peut être réalisé au moment de la confirmation de l'esclave sur le 9ème bit d'horloge.
Les choses peuvent se faire en maintenant la ligne de transmission de Données jusqu'à l'esclave processus interne.
OriginalL'auteur Navneet Tripathi