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

C Discussion :

Lecture/Ecriture EEPROM SPI


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut Lecture/Ecriture EEPROM SPI
    Bojour je souhaite ecrire sur une EEPROM 2Méga connecté en SPI (ATMEL: AT25DF021).
    Le microcontroleur que j'utilise est un STM32F105.

    J'ai donc créer 2 fichiers que je vous joins: Eeprom_AT25DF021.c et Eeprom_AT25DF021.h

    Dans le main on peut trouver cela:

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Définition image
    const unsigned short image[11456];
     
    Send_EEPROM(0x02,image[11456]);
    LCD_DispPic(157,155,Read_EEPROM(0x03));

    Pour information lorque je charge cette image dans la RAM, j'arrive à l'afficher sur mon écran
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    LCD_DispPic(157,155,image);
    mais pas à partir de l'eeprom.

    Voyez-vous quelque chose d'anormal?

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Si je regarde le prototype de la fonction Send_EEPROM:

    void Send_EEPROM(u32 add, u32 data);

    Je vois qu'elle sauvegarde un mot de 32 bits, et non pas une image complète.

    Pour la fonction Read_EEPROM, il y a un problème, car le void indique qu'elle ne retourne rien, or le code lui fait retourner un 32 bits...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Read_EEPROM(u32 add)
    {
        .../...
        return (data); 
    }
    A+,

    Pfeuh

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut
    Merci pour ta réponse,
    Effectivement c'est une erreur de ma part,

    j'ai modifié le nom des fonctions en :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    u32 Send_EEPROM(u32 add, u32 data) et u32 Read_EEPROM(u32 add)

    et au lieu de tester l'enregistrement d'un image mais d'un mot j'ai donc modifier le main en

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Definition d'un mot
    char mot[7] = "Bonjour";
     
    Send_EEPROM(0x02,mot[7]);
    LCD_Text(190, 120, Read_EEPROM(0x03), 7, BLUE, RED);

    La fonction LCD_text fonctionne aussi sur la ram et j'arrive à afficher sur mon écran un mot cependant toujours pas à l'aide de l'eeprom.

    Merci

  4. #4
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Tout semble indiquer que le problème est dans le driver de l'eeprom. Avant de vouloir afficher, il faut s'assurer que l'écriture et la lecture marchent. Je te conseille donc d'écrire quelques valeurs différentes à des adresses différentes et de relire pour vérifier les valeurs. J'ose espérer que tu as un déboggeur!

    Si ça ne marche pas, ça va être galère. Il va falloir vérifier que les registres de communication avec l'eprom soient bien configurés, penser à une foultitude de détails du genre "Y a t-il une fonction d'initialisation de la communication?" "L'ai-je appelée avec les bon paramètres?" "y a t-il une patte write protect sur l'eeprom?" "est elle au bon niveau?" Mais bon, c'est comme ça que le métier rentre.

    A+

    Pfeuh

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2010
    Messages : 87
    Par défaut
    slt

    ton code contient beaucoup des erreurs je vais essaye de t'aider mais moi je connais pas bien le francais
    u32 Send_EEPROM(u32 add, u32 data)
    erreur 1 dans la fonction "Send_EEPROM()" tu ne peux pas passer un tableau de type char au parametre "u32", le u32 seulement pour les l'adresse qui est codé en 32bits pour AT25DF021 donc normalment
    Send_EEPROM(u32 ,char*)
    erreur 2 quand tu appelle de la fonction "Send_EEPROM()" tu na pas besoin d'indiquer le dernier element de ton tableau "mot[7]" ou "image[11456]" donc normalement
    // meme avec la Definition le numero 7 na auqu'une importance
    char mot[] = "Bonjour";
    Send_EEPROM(0x02, mot);
    erreur 3 avan d'envoyer une image de "[11456]" octet verifier sur le datashit AT25DF021 si cette taill n'est pas superieur d'une page memoire dans AT25DF021 sinon il te faut programmer l'eeprom par blok car si tu programmer l'eeprom en mode par page avec une taill superieur le conteur se remise a zero a la fine de la page avan de programmer completement ton image
    erreur 4 avec la veriabe u32 de add il faut l'envoyer en 8bits avec la fonction "SPI_SendByte(add)" les premier 8bits et les deuxieme puis les troisieme 8bits par l'aide de l'opirateur ">>" pour dicaler bits et "&" pour masquer les bits non utiliser exemple
    SPI_SendByte((char)(add & 0x000000FF));
    SPI_SendByte((char)((add >> 8)& 0x000000FF));
    SPI_SendByte((char)((add >> 16)& 0x000000FF));
    ou
    SPI_SendByte((char)(add & 0x000000FF));
    SPI_SendByte((char)(add & 0x0000FF00));
    SPI_SendByte((char)(add & 0x00FF0000));
    (c'est un exemple )
    erreur 5 aprés l'envoi de la commande "WRITE" et l'adresse de la page il faut mettre le "SPI_SendByte(data)" dans une boucle avec le teste de caractere de fine "\n" aprés chaque incrimentation de tableau data

    bonne chance

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Par défaut
    Merci, pour vos réponses. Je vais tester ça de suite et je vous tiens au courant.

    Merci encore pour votre aide

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/05/2007, 15h14
  2. lecture/ecriture des broches RTS/CTS du port RS232
    Par .:: sly51 ::. dans le forum C
    Réponses: 3
    Dernier message: 24/10/2006, 15h28
  3. [JDBC]lecture/ecriture dans une base de donnée
    Par tarik75 dans le forum JDBC
    Réponses: 7
    Dernier message: 30/06/2005, 12h42
  4. [VB.NET] Tableau de bytes Lecture/Ecriture
    Par BenoitM dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/04/2005, 09h51
  5. [LG]Lecture-ecriture fichier
    Par arno15 dans le forum Langage
    Réponses: 19
    Dernier message: 03/02/2005, 22h25

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