IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

STM32 Arduino I2C EEPROM


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut STM32 Arduino I2C EEPROM
    Bonjour, je cherche un code sous arduino permettant de lire et d'écrire dans une eeprom sous protocole I2C. La difficulté est que cette eeprom a un adressage sous 10bits et non 7 bits comme la plupart des eeprom. Je sais que le microcontroleur STM32F103C8T6 possède 2 gestions i2c et qu'il peut en natif gérer l'adressage 10 bits mais je ne sais comment faire. Merci de m'aider

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 196
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    Citation Envoyé par roro60 Voir le message
    Bonjour, je cherche un code sous arduino ... le microcontroleur STM32F103C8T6
    carte Arduino ou carte Nucleo dans l'EDI Arduino ?

    Si l'on en croit le protocole, l'adressage en 10 bits est compatible avec l'adressage en 7 bits...

    Nom : I2C_SlaveAddress7.jpg
Affichages : 1441
Taille : 12,2 Ko
    adressage 7 bits

    Nom : I2C_SlaveAddress10.jpg
Affichages : 1430
Taille : 16,4 Ko
    adressage 10 bits

    *images : https://ns-electric.com/knowledge-base/intro-to-arduino-i2c-serial-communication/

    Le premier octet débute avec un indicateur comprenant la séquence 11110 jamais utilisée en adressage 7 bits, suivi des des deux premiers bits de l'adresse et du bit read/write. Le second octet comprend le reste de l'adresse.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Bonjour,
    Merci pour votre réponse.
    J'utilise la carte blue pill à base de stm32f103 sous arduino. Il existe la bibliothèque wire.h mais je ne perçois pas la mise en oeuvre logicielle pour l'adresse 10bits, bien que je saisi le protocole au niveau hardware suite à votre réponse. Il faut dire que je suis débutant.
    Cdt

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 196
    Billets dans le blog
    47
    Par défaut
    Quelle est la référence de l'EEPROM ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    C'est la Ti046b1
    On ne trouve pas la documentation sur internet.
    C'est le chip des cartouches d'encre de ma lexmark (je viens d'en remplacer une) et par curiosité j'aimerai lire dedans.
    J'ai trouvé un forum ou l'on parle du sujet mais la bibliothèque twi n'existe pas sur arduino pour une stm32. Ci-dessous le lien du forum
    https://www.eevblog.com/forum/projec...-chip-ti046b1/
    Cdt

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 196
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    Citation Envoyé par roro60 Voir le message
    Il existe la bibliothèque wire.h mais je ne perçois pas la mise en oeuvre logicielle pour l'adresse 10bits, bien que je saisi le protocole au niveau hardware suite à votre réponse.
    Au niveau logiciel il n'y a rien de spécial.
    On s'adresse au composant comme en adressage 7 bits avec l'adresse 11110A9A8, le deuxième octet de donnée devant être la fin de l'adresse A7A6A5A4A3A2A1A0.

    Un exemple ici avec ce composant : https://www.pixconfig.fr/Lexmark-I2C...046B1_Read.ino

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut
    Merci encore pour l'aide apportée.
    J'ai bien vu ce fichier dans le forum. Toutefois, je pense qu' il faut que j'adapte #include "twi-all-included.h" (inclus dans le zip... Reset) avec la bibliothèque wire.h car twi.h n'existe pas pour stm32 arduino. La vraie question, est ce à ma portée vu que je débute. Je vais essayer ce soir.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Par défaut ST32 eeprom 10 bits
    Bonjour,

    Une avancée, dû moins dans la compréhension (je débute sur arduino (reçu il y a une semaine) et langage C/C++)

    Dans mes fonds de tiroir, j'avais une 24LC16 (tombe bien, tension 3,3V)
    J'ai joué avec, pour comprendre le jeu de wire.
    J'ai écris, et extrait l'intégralité de la mémoire (8 banques de 256 octets) que j'ai mis au chaud.

    Concernant la bibliothèque Wire. J'ai eu du mal avec "begintransmission' avant de comprendre qu'il ne faisait qu'initialiser les buffers et
    que c'était la fonction "endtransmission" qui émettait la trame correspondant au "begin" et les "write" suivants (en faisant évoluer l'index).
    Au début, le code de wire.cpp me rebutait un peu. Avec le recul, je le trouve plus simple que "twi.h" (qui je pense est plus hardware)

    En résumé, si j'ai bien compris, les modif à apporter sont:
    Bibliothèque WireBase.cpp:
    - fonction "endtransmission":
    tester l'adresse si supérieur à 127 si dans la positive alors passer les bits 8 et 9 dans un mot à la fonction "Process" (c'est elle qui envoie la trame)
    - fonction "requestFrom"
    même solution que "endtransmission"
    Bibliothèque Wire.cpp:
    Fonction "Process":
    - si le mot reçu précédemment égal 0 alors on ne change pas l'envoi de la trame
    - si le mot reçu précédemment >0 alors on détermine la première partie de la trame (11110+A9+A8+W), on l'envoie, attente ack et puis on passe à la
    seconde parti (A7 à A0)

    L'avantage que je vois , c'est que la "nouvelle" bibliothèque sera compatible 7 bits et 10 bits sans modifier la façon de faire (juste un INT pour l'adresse en cas d'adresse >127)
    Je pourrai essayer de mettre les 2 eeprom sur le même réseau I2C et tester. (enfin je pense)

    Ma seule vrai question est, si je modifie les 2 fichiers *.cpp directement dans arduino (avec une sauvegarde bien sûr), l'ide va t-il compiler mes modifs.
    Y a plus qu'à faire pour le savoir, si dans la négative alors création d'une nouvelle bibliothèque.

    Encore merci pour l'aide et de m'avoir pousser à poursuivre.

    Pour l'heure, suis obligé de suspendre, Madame veux sortir.
    Partie remise.

    Cdt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Arduino et le bus I2C
    Par f-leb dans le forum Arduino
    Réponses: 17
    Dernier message: 24/03/2019, 18h41
  2. Réponses: 9
    Dernier message: 10/05/2007, 15h14
  3. [PIC 16C84] Ajouter une eeprom externe i2c à un programme
    Par jacques8 dans le forum Autres architectures
    Réponses: 2
    Dernier message: 30/09/2005, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo