Bus I2C
Répondre à la discussion
Affichage des résultats 1 à 16 sur 16

Bus I2C



  1. #1
    Eleomir

    Bus I2C


    ------

    Bonjour,

    Je programme sur un 68HC908, j'ai un programme qui doit stocker en RAM beaucoup de données donc j'ai besoin de rajouter un module de RAM

    J'ai choisit la solution de l'I2C avec le PCF8570 (Ram de 2ko). L'I2C va me permettre d'utiliser seulement 2 fils du micro

    Le problème c'est que sur mon micro je n'ai plus de broches à collecteur ouvert disponibles

    Donc ma question est la suivante : peut-t-on utiliser le protocole I2C avec un maitre sans collecteur ouvert sur ses E/S?

    -----

  2. #2
    Eleomir

    Re : Bus I2C

    On peut pas éditer donc j'ai eu une idée mais dites moi si sa peut marcher


  3. #3
    invite4ce7f495

    Re : Bus I2C

    Bonjour
    Oui, je pense que c'est possible. Il suffit de simuler une sortie à collecteur ouvert en configurant la pin comme entrée (Haute impédance), ceci pour relacher la ligne.
    Et pour mettre à la masse tu configure la pin en sortie et met à 0.
    Attend les autres pour vérifier.

  4. #4
    invite4ce7f495

    Re : Bus I2C

    Je viens de poster avant ton schéma.
    Je pense pas qu'il faudrai en venir en transistor puisque c'est possible de le faire avec Les pins du UC

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Bus I2C

    Oui, je pense que c'est possible. Il suffit de simuler une sortie à collecteur ouvert en configurant la pin comme entrée (Haute impédance), ceci pour relacher la ligne.
    Exactement.

    Voici un exemple d'utilisation avec un 68HC908GR8. Les pins sont facilement reconfigurables en modifiant les lignes #define ....

    C'est compilé avec Codewarrior.

    A+

  7. #6
    Eleomir

    Re : Bus I2C

    J'ai deja vu ton programme mais il a un bug car il utilise 2 pin pour SDA au lieu d'une seule, le programmeur à fait une mise à jour sur 68HC08.net

    Ce que j'aurais voulu savoir c'est si il a activé les resistances internes des 2 pin ou pas? Car je n'ai pas de possibilités de les activés, j'utilise un JK1 et il n'y a que deux pin de dispo que j'utilise déjà

    Je vais lui demander directement sur l'autre forum je pense

  8. #7
    Jack
    Modérateur

    Re : Bus I2C

    ah oui, désolé, en fait, pour gérer l'I2C maintenant, je n'utilise plus que des version qui intègrent un module I2C interne.
    Je n'arrive plus à remettre la main sur le programme qui n'utilise plus que deux pins.

    Si tu as déjà le programme de "l'autre forum", pourquoi ne l'utilise-tu pas?

    A+

  9. #8
    Eleomir

    Re : Bus I2C

    Je suis actuellement en train de le modifier mais j'ai une autre question, lorsqu'on veut lire une donnée de la RAM :
    On envoie l'adresse physique de la RAM avec le RW en lecture
    On vérifie qu'on reçoit l'ACK
    On envoie l'adresse haute de l'espace mémoire que l'on veut lire
    On vérifie qu'on reçoit l'ACK
    On envoie l'adresse basse de l'espace mémoire que l'on veut lire
    On vérifie qu'on reçoit l'ACK
    On commence à recevoir les données
    On doit envoyer un Ack
    etc jusqu'à ce qu'on envoie un STOP

    C'est bien la procédure pour recevoir une donnée de la RAM?

  10. #9
    Jack
    Modérateur

    Re : Bus I2C

    Je dois partir.

    Je regarderai ça ce soir

    A+

  11. #10
    Jack
    Modérateur

    Re : Bus I2C

    Je viens de regarder la doc du PCF8570.
    http://www.cems.uwe.ac.uk/~ngunton/vhdl/pcf8570.pdf

    Si tu regardes bien la fig 8, tu verras que tu n'y est pas du tout. Voilà comment je comprends le principe:

    Condition de START
    On envoie l'adresse physique de la RAM avec le RW en ECRITURE
    On vérifie qu'on reçoit l'ACK
    On envoie l'adresse de l'espace mémoire que l'on veut lire (l'adresse tient sur un octet puisqu'il n'y a que 256 octets de RAM)
    On vérifie qu'on reçoit l'ACK
    On envoie l'adresse physique de la RAM avec le RW en LECTURE
    On vérifie qu'on reçoit l'ACK
    On commence à recevoir les données
    On doit envoyer un Ack
    etc
    A la dernière donnée, on n'envoie pas le ACK afin de signifier la fin de transmission
    Condition de STOP

    Le pointeur interne de la RAM s'incrémentant automatiquement, la fig 9 montre qu'il n'y a pas besoin de réaffecter une valeur à ce pointeur si on reprend là où l'on s'était arrêté.

    A+

  12. #11
    Eleomir

    Re : Bus I2C

    Donc en fait on envoie :
    - l'adresse physique de la RAM avec RW en écriture,
    - l'adresse memoire que l'on souhaite
    - l'adresse physique avec RW en lecture

    Donc si je me trompe pas sa doit être sa

    Sinon la ram dispose de 2Ko et non 256, en fait c'est 256 * 8 = 2048 octets
    Donc lorsqu'on envoie 0 il va à l'adresse 0000, lorsqu'on envoie 1 il va à l'adresse 0008, 2 à l'adresse 0016? lorsqu'on envoie 255 il va à l'adresse 2040?

    A mon avis ça doit être ça mais dit moi ce que tu en pense, ce que j'avais pas trop comprit c'était pour indiquer l'adresse memoire donc j'avais prit exemple sur les EEPROM du même type où on envoie adresse haute puis adresse basses (ou inversement je sait plus)

  13. #12
    Jack
    Modérateur

    Re : Bus I2C

    Sinon la ram dispose de 2Ko et non 256, en fait c'est 256 * 8 = 2048 octets
    Mais non

    256 octets = 256 * 8 bits = 2048 bits.

    Mais comme à chaque adresse se trouve un octet, il n'y a donc que 256 adresses. Pas besoin d'adresse haute et basse qui ne sont nécessaires que lorsqu'il y a plus de 256 adresses différentes.

    A+

  14. #13
    Eleomir

    Re : Bus I2C

    j'ai peur que ma RAM soit trop petite alors, c'est cette page qui m'a induit en erreur : lien

    Dans le tableau tout en bas il marque RAM Statique 2 Ko (256 x 8)

    Le problème c'est que je ne vais avoir que 256 octets de libre

    Donc ce que je peut faire à la place c'est utiliser une EEPROM 24C16

    Elle coûte moins cher que la ram en plus, donc la question que je me pose c'est quel était l'avantage de la RAM par rapportà l'EEPROM? durée de vie plus longue?

    L'EEPROM va garder les données lorsqu'on éteint l'alim non?

    Je te remercie

  15. #14
    Jack
    Modérateur

    Re : Bus I2C

    Elle coûte moins cher que la ram en plus, donc la question que je me pose c'est quel était l'avantage de la RAM par rapportà l'EEPROM? durée de vie plus longue?
    La RAM est plus rapide que l'eeprom, mais sur un bus I2C, cet avantage n'a plus d'intérêt.

    La durée de vie de la RAM est quasi illimitée, pas celle de l'eeprom. Mais pour atteindre la durée de vie de l'eeprom, il faudrait que ton programme ne cesse de faire des accès.

    L'EEPROM va garder les données lorsqu'on éteint l'alim non?
    oui.

    SI tu cherche sur "l'autre forum", tu trouveras des topics qui montrent comment écrire dans la flash du HC908 pendant l'exécution du programme. Selon ton application, ça peut te dispenser de l'utilisation d'une mémoire externe.

    A+

  16. #15
    Eleomir

    Re : Bus I2C

    En fait j'avais deux possibilités : écrire dans la flash ou rajouter un module externe, j'avais choisit de rajouter une RAM externe pour la fiabilité, je voulais pas qu'au bout de quelques années le micro ne fonctionne plus.

    L'intêret avec l'EEPROM externe c'est que si elle ne fonctionne plus il suffira de la changer et l'appareil recommencera à fonctionner, alors que si on programme dans la flash du micro il faut changer le micro, il est plus cher et il faut avoir le programme pour le reprogrammer.

    D'un point de vue économique l'EEPROM que je vais prendre coûte environ 2€ donc c'est pas excessif je pense

  17. #16
    Jack
    Modérateur

    Re : Bus I2C

    C'est toi qui voit. Tout dépend du nombre de cycles d'écriture.

    Les flash actuelles permettent plusieurs dizaines ou centaines de milliers de cycles.

    Economiquement, ça se discute aussi. Un 9S08QG8 coute entre 2 et 3€.

    A+

Discussions similaires

  1. bus I2C
    Par inviteedcf41c6 dans le forum Électronique
    Réponses: 2
    Dernier message: 30/06/2008, 00h28
  2. I2C : bus collision
    Par invite182d641b dans le forum Électronique
    Réponses: 15
    Dernier message: 26/10/2007, 11h42
  3. Electronique : bus I2C
    Par invite6e39a71f dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 10/10/2007, 11h37
  4. Bus I2c
    Par invite66afc259 dans le forum Électronique
    Réponses: 6
    Dernier message: 30/10/2005, 14h53
  5. création bus I2C?
    Par invite1c009f16 dans le forum Électronique
    Réponses: 1
    Dernier message: 05/10/2005, 16h51
Découvrez nos comparatifs produits sur l'informatique et les technologies.