IIC (3)

I2C est un protocole de communication de données en série développé par Philips invention, en utilisant seulement deux lignes de signaux: SerialClock (dénommé SCL) et la serialData (appelée SDA). I2C est une structure de bus, un maître, esclave 1 ou plus, chaque dispositif esclave de distinguer l'adresse à 7 bits, une adresse de retour d'écriture bit de conversation indique une lecture (= 1) ou d' écriture (= 0), nous parfois , vous pouvez voir huit formes d'adresse de l' appareil, chaque appareil pour lire, écrire les adresses, haute adresse 7 bits est en fait la même chose.
format de données I2C est la suivante:
Pas de données: SCL = 1, SDA = 1 ;
bit de démarrage (Start): Lorsque SCL = 1, les transitions de SDA du 1 à 0,
bit d'arrêt (Stop): Lorsque SCL = 1, SDA par le 0 à 1;
bits de données: lorsque la transition SCL de 0 à 1, contrôlée par l'expéditeur SDA, SDA sont des données valables pour l'instant, pas libre pour changer SDA,
tandis que SCL reste est égal à 0, les données relatives à la SDA peuvent être librement changement,
adresse: il définit avec les bits de données, mais seulement délivrée par le maître - esclave;
reconnaître bit (ACK): lorsque l'expéditeur transmet End 8 bits, l'expéditeur libère SDA, SDA commandé par le récepteur, et SDA = 0;
pas de reconnaître bit (NACK): lorsque l'expéditeur transmet des extrémités 8, l'expéditeur libère SDA, SDA commandé par le récepteur, et SDA = 1.
Lorsque le transfert de données est un seul format d'octet:
bit de départ, 8 bits d'adresse (y compris les a bits d'écriture), la réponse, les données à 8 bits, de la réponse, les bits d'arrêt.
Lorsque la transmission de données est une chaîne d'octets, le format:
bit de départ, 8 bits d'adresse (y compris les a bits d'écriture), la réponse, les données à 8 bits, de réponse, de données de 8 bits, réponse, ......, données à 8 bits, réponse, bits d'arrêt.
A noter que:
1, SCL a été commandé par le maître, la direction de transfert de données conformément à la SDA, les données de commande sont lues par le SDA esclave, lors de l' écriture des données contrôlées par le Maître SDA. Lorsque le transfert de données à 8 bits est terminée, la commande de SDA opposée reconnaître bit ou les bits de transfert de données d' accusé de réception bit NO.
2, le bit de départ « Démarrer » et bits d'arrêt « Stop », ne peut être délivrée par le Maître.
3, après la fin de l'adresse de transfert 8, l'adresse est configuré avec succès des dispositifs esclaves doivent être transmises « ACK ». Après un certain temps Master ou autrement traités comme des heures supplémentaires, donnera le transfert de données, l' envoi de « Stop ».
4, lorsque les données d'écriture, maître d' émission se complètent huit bits de données, s'il y a un espace sous l'appareil esclave accepte un octet doit répondre « ACK », dispositif esclave s'il n'y a pas d' espace pour recevoir plus d' octets doivent répondre « NACK » , Maître n'a pas reçu de données sera traitée comme expiration du délai de renoncer à un transfert de données de base, l' envoi « Stop » lorsque , après la réception de « NACK » ou un certain temps.
5, lors de la lecture des données, chaque bits de données dispositif esclave 8 ont été envoyés, si le maître souhaite continuer à lire l'octet suivant, Maître doit répondre « ACK » pour préparer les prochaines données rapide esclave, maître indésirable si lire la suite octet, Maître doit répondre « NACK » pour demander à l'appareil esclave est prêt à recevoir des signaux d' arrêt.
6, lorsque l'heure de fin à la vitesse de traitement maître - esclave est trop rapide, un appareil esclave peut maintenez le SCL (SCL = 0 à « ligne » se produit) pour empêcher le maître d'envoyer plus de données. A cette époque, selon le cas peut être ralenti ou le transfert des données de base est terminée.
Dans le cas d' une application réelle, les données ne sont pas une exigence obligatoire et le moût récepteur répondre à la transmission de données 8 bits, en particulier dans le Maître et le terminal esclave GPIO sont atteints par une méthode de simulation logicielle, le programmeur peut être accepté dans les données à l'avance longueur de transmission, l' esclave ne vérifie pas NACK, aide parfois à réduire l'effet des frais généraux. Mais si la partie est une configuration matérielle I2C esclave doit être standard NACK, logiciel de simulation maître GPIO partie i2c n'est pas le droit d'envoyer NACK, il y aura « esclave recevoir arrêt » i2c plomb accroché mort.

Dans des circonstances normales, le protocole de bus I2C pour assurer lecture normale et le fonctionnement du bus d'écriture.

Cependant, lorsque le maître I2C d'anomalie réinitialisation (opération de chien de garde, une anomalie d'alimentation puce de bord provoquent une opération remise à zéro, un bouton de réarmement manuel, etc.) peut conduire au blocage de bus I2C.

La description détaillée suivante du bus de raisons Deadlock.

Pendant les opérations de lecture et d'écriture en dispositif maître I2C. Après que le signal de démarrage maître pour générer huit impulsions d'horloge SCL et tire alors le signal SCL est faible à ce moment, une sortie de signal de réponse à partir du dispositif, le signal SDA est tiré faible.

Si cette fois-ci sera libéré l'erreur dispositif maître réinitialisation, SCL à un niveau élevé.

A ce moment, si l'appareil est pas remis à zéro, il continuera réponse I2C, le SDA a été tirée vers le bas jusqu'à ce que SCL passe au niveau bas avant la fin du signal de réponse.

En ce qui concerne le maître I2C est. Une fois que les signaux de détection de réinitialisation SDA et SCL, le signal SDA est faible si elle se trouve, qui sera occupé par le bus I2C, il attend SCL et le signal SDA va vers le haut.

Ainsi, attend dispositif maître I2C pour libérer le signal de SDA à partir du dispositif dans l'attente d'un autre dispositif maître I2C esclave pour libérer le signal de SCL faible signal de réponse, à la fois d'attente pour l'autre, dans l'état du bus I2C interblocage.

De même, lorsque l'opération de lecture I2C, les données de sortie à partir des réponses des périphériques I2C, si à ce moment le maître I2C anormale remise à zéro du bit de données I2C de la sortie du dispositif est exactement 0, va conduire à un état de blocage bus I2C.

Procédé selon la

    I2C essayer d'utiliser avec l' entrée remise à zéro de l'appareil.
    Toutes les connexions des dispositifs I2C ensemble d'alimentation, le tube est connecté à l'alimentation secteur MOS, et le transistor MOS est mis hors tension est réalisé par un maître I2C.
    De l' équipement fonction de chien de garde de la conception à I2C.

    Augmentation du programme de récupération dispositif maître de bus I2C I2C.
    Procédé dispositif maître I2C après chaque remise à zéro, si elle est détectée , le SDA de ligne de données est tirée vers le bas, le contrôle de la ligne d'horloge I2C SCL pour générer des impulsions d'horloge 9 (pour le cas de données de 8 bits « 9 clk peut activer le » de NXP documents, NXP (Philips) comme l'expéditeur du bus I2C, cet argument est crédible), de sorte I2C, la récupération de l' appareil pour effectuer l'opération de lecture à partir de l'état suspendu de l' impasse sur.
    Ce procédé présente des limites importantes, puisque la plupart d'un appareil construit module principal I2C mis en oeuvre par un circuit matériel, les logiciels ne sont pas en mesure de produire directement le signal de contrôle analogique désirés impulsions d'horloge SCL.
    En variante, les conditions de transmission permettent la libération I2C_Stop esclave de bus. Si analogique bus I2C GPIO est mis en œuvre, l'opération I2C avant d' ajouter le bus I2C état détecteur I2C_Probe, si le bus est occupé, il peut tenter de récupérer le bus, jusqu'à ce que le bus est libéré avant de poursuivre. Pour assurer l'intégrité de la plus petite unité d'exploitation I2C, pas d' autres événements (interruptions, fil de haute priorité, etc.) interrompues.

    Ajout d' un bus supplémentaire sur l'équipement de récupération de bus I2C. Ce dispositif surveille le bus I2C. Lorsque le dispositif détecte SDA est tiré signal basse est supérieure à la durée spécifiée, la neuvième impulsion d'horloge est généré sur le bus SCL, de l'opération de lecture esclave I2C, le rétablissement d'un état de blocage. dispositif de récupération ayant un bus requiert une programmation, cette fonction peut être mise en œuvre en général MCU ou CPLD.

    Sur la chaîne I2C I2C dans une impasse tampon a récupéré, comme le bus I2C LTC4307 linéaire est un tampon bidirectionnel, et a une fonction pour restaurer l'impasse bus I2C. LTC4307 dispositifs maîtres de bus connectés au côté d'entrée, un côté de sortie connectés à un bus de tous les appareils. Lorsque le côté de sortie détecté LTC4307 SDA ou un signal SCL est tirée vers le bas 30ms, déconnecter automatiquement le bus I2C est connecté aux côtés d'entrée et de sortie. 16 et des impulsions d' horloge de génération du côté de la sortie du signal SCL pour libérer le bus. Lorsque la récupération de bus réussie, le LTC4307 se connecte à nouveau du côté d'entrée et de sortie du bus pour fonctionner correctement.
----------------
Avertissement: Cet article est l'article original blogueurs RPSC « Winitz », et suivez CC 4.0 BY-SA accord du droit d'auteur, reproduit, s'il vous plaît joindre le lien source d' origine et cette déclaration. .
Lien original: https: //blog.csdn.net/winitz/article/details/72460775

Je suppose que tu aimes

Origine www.cnblogs.com/keda/p/12484247.html
conseillé
Classement