Spi
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Spi



  1. #1
    invite91a05f0b

    Question Spi


    ------

    Bonjour à tous!
    Je travaille sur un pic18f4455 et je désire communiquer avec une mémoire MMC par le port SPI.
    J'utilise le programme donné par microchip ici.
    Ce programme utilise la fonction spi_read (SPI_READ(0xFF)). Je n'arrive pas à trouver cette fonction et du coup mon programme ne marche pas.
    Quelqu'un aurait-il le code ou saurait-il ou le trouver svp.
    Je vous remercie de votre aide, bonne journée à tous.
    Martin

    -----

  2. #2
    invite91a05f0b

    Re : Spi

    Je vais essayer d'etre plus complet dans l'explication de mon problème.
    Lors de l'initialisation de ma MMC, il faut que j'envoie une suite de caractère afin de la lancer en mode SPI.
    A la suite de cet envoi la mmc envoie sur le port SPI un accusé de réception (valeur 0x01). A l'oscilloscope tout à l'air de se passer comme il faut, je vois meme la réponse de la mmc.
    Mais il est impossible d'acquérir dans le registre SSPBUF les données présentent sur le bus!!!
    Quelqu'un pourrait-il me dire comment on se débrouille pour lire sur le bus spi?
    Je vous remercie de votre aide. M.

  3. #3
    umfred

    Re : Spi

    La fonction SPI_READ qui se trouve dans ton fichier, est en faite une fonction utilisable dans le compilateur utilisé pour écrire le code que tu as téléchargé (CCS C Compilier dont voici le manuel (voir page 216 pour cette fonction)).

  4. #4
    invite91a05f0b

    Re : Spi

    Merci Umfred!
    Décidemment je peux compter sur toi, merci encore.
    M.

  5. A voir en vidéo sur Futura
  6. #5
    invitefa0007cf

    Re : Spi

    Bonjour à tous! je vien de lire cette page sur le SPI. je voudrait savoir si, il est possible que vous m'envoyer un exemple de trame SPI ou dans lequelle la MMC envoit des donnée vers l'µC.
    Car je suis exactement dans la même situation, mise a part
    que je tape mon langage C dans Code vision AVR.
    merci d'avance.

  7. #6
    umfred

    Re : Spi

    Dans Codevision AVR, il y a la fonction spi() (tout simplement) qui permet d'utiliser la fonction SPI. Tu trouvera un exemple de son utilisation dans le manuel d'utilisation (p173) de codevision AVR, téléchargeable ici.
    Si tu veux plus de détail sur ce qu'il faut envoyer comme données à la MMC, consulte sa datasheet, il doit y avoir les diverses instructions qu'elle accepte

  8. #7
    invitefa0007cf

    Re : Spi

    re bonjour,
    justement j'ai utilisé cette fonction [spi()] (pour réception et émission). Sur l'oscilloscope je voi bien la trame d'émission que je veux (en SI). Mais en réception c'est juste la ou ça se gatte. Précisement j'envoie dans ma carte MMC (AT45DCB002) ke des "10101010...". et quand je lui demande de me renvoyer les données il me revoie que des "0".
    Pourtant je j'applique bien ce que me dit la doc de la carte MMC, c'est à dire un octet de commande, un paquet d'octet et demie pour la mémoire tampon, 2 octet et demi pour la page de mémoire et la DATA.

    bref je suis un peu perdu :/. (mais merci beaucoup pour ce debut de réponse).

  9. #8
    invitefa0007cf

    Re : Spi

    escuse moi des fautes, j'ai taper un peu trop vite

  10. #9
    umfred

    Re : Spi

    mets nous le code que tu utilises pour faire la lecture et l'écriture (ainsi qu'un lien vers la doc de ta MMC), ça sera plus facile pour comprendre ce qu'il se peut se passer. (enfin j'espère )

  11. #10
    invitefa0007cf

    Re : Spi

    Alors voici la Carte en question:
    http://www.atmel.com/dyn/resources/p...ts/doc3257.pdf
    Mais le fonctionnement de la carte est indiquer dans une doc (qui est sont équivalent en CMS) que voici:
    http://www.atmel.com/dyn/resources/p...ts/DOC0807.PDF
    ensuite mon programme (que j'ai taper dans code vision est le suivant):

    //Cractère déclarer que j'utilise:
    int i;
    char BUFFERT[5]={0x84,0x00,0x00,0x00,0xAA};
    char READT[6]={0xD4,0x00,0x00,0x00};

    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 1000,000 kHz
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: Low
    // SPI Data Order: MSB First
    SPCR=0x50;
    SPSR=0x00;

    WRITEBUFFERSD() //ECRITURE dans le buffer
    {
    PORTC.0=0; //cette broche est relié au /CS
    delay_us(1);
    for (i=0; i<5; i++) {spi(BUFFERT[i]);};
    delay_us(1);
    PORTC.0=1;
    }

    READBUFFERSD() //lecture du buffer
    {
    PORTC.0=0;
    delay_us(1);
    for (i=0; i<7; i++) {spi(READT[i]);};
    delay_us(1);
    PORTC.0=1;
    delay_ms(2);

    }

    Voila j'espere que cela est compréhensible.
    Merci de vous intéresser à mon cas en tous cas .

  12. #11
    invitefa0007cf

    Re : Spi

    je rajoute une précision:
    Dans ce cas ici j'essaye simplement d'écrire 0xAA a l'adresse 0 du buffer et je la relis ensuite. c'est la que je me suis apercut que à l'oscilloscope ma commande était transmit a merveille mais que la réception est foireuse .

  13. #12
    invitefa0007cf

    Re : Spi

    pardonne moi mais g gaffer sur le lien de la mémoire équivalente: c'est celle ci
    http://seniordesign.engr.uidaho.edu/...amm/memory.pdf
    désolé.

  14. #13
    umfred

    Re : Spi

    essaie en corrigeant ainsi
    //Cractère déclarer que j'utilise:
    int i;
    char BUFFERT[5]={0x84,0x00,0x00,0x00,0xAA};
    char READT[5]={0xD4,0x00,0x00,0x00,0x00};
    char resultat;

    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 1000,000 kHz
    // SPI Clock Phase: Cycle Half
    // SPI Clock Polarity: Low
    // SPI Data Order: MSB First
    SPCR=0x50;
    SPSR=0x00;

    WRITEBUFFERSD() //ECRITURE dans le buffer
    {
    PORTC.0=0; //cette broche est relié au /CS
    delay_us(1);
    for (i=0; i<5; i++) {spi(BUFFERT[i]);};
    delay_us(1);
    PORTC.0=1;
    }

    READBUFFERSD() //lecture du buffer
    {
    PORTC.0=0;
    delay_us(1);
    for (i=0; i<5; i++) {spi(READT[i]);};
    resultat=spi(0);
    delay_us(1);
    PORTC.0=1;
    delay_ms(2);

    }
    En fait, il y avait une différence entre la taille de READT et son indice dans le for (dépassement de capactié de READT)
    Et d'après la datasheet, il faut 8 bits du code de commande, 14 bits sans importance, 10 bits d'adresses, et 8 bits sans importance, ensuite on lit le SDO (voir le chrono de la page 17 de la datasheet de la mémoire.

  15. #14
    invitefa0007cf

    Re : Spi

    je te remercie je v essayer ce code. je te tiens au courant.
    Bonne soirée!

  16. #15
    invitefa0007cf

    Re : Spi

    Bonsoir,
    Voila j'ai donc éffectuer mes tests avec le code que tu ma conseillier mais malheureusement je n'obtiens toujour pas mais fameux "10101010". MAIS JE RECOIT QUAND MEME quelque chose . "10000000" en réponse alors, je me pose la question si par hasard ce ne serait po une sorte de réponse (erreur ou autre) de ma mémoire... enfin je continue a chercher. Grand merci a toi

  17. #16
    invitefa0007cf

    Re : Spi

    Bonjour!
    Je voudrai savoir a quoi sert le "0" de spi("0") qui correspond a la commande de lecture spi.
    Que ce passe-t-il si je change ce chiffre?
    Merci d'avance

  18. #17
    invite70efba66

    Re : Spi

    bonsoir, je met en ligne en fin de semaine une librairie pour codevision sur la gestion de mmc et sdcard

    http://www.atmicroprog.com/forum/index.php

    A bientot.

  19. #18
    invitefa0007cf

    Re : Spi

    merci beaucoup je vais regarder ça de très pres .

  20. #19
    invite70efba66

    Re : Spi

    bonsoir,

    voila c'est fait et ca se trouve ici : http://www.atmicroprog.com/forum/viewtopic.php?t=667

    ++

Discussions similaires

  1. protocole Spi
    Par invite9293de6d dans le forum Électronique
    Réponses: 2
    Dernier message: 01/07/2009, 00h38
  2. SPI et USB
    Par invitef1ce9c71 dans le forum Électronique
    Réponses: 0
    Dernier message: 24/02/2007, 08h48
  3. SPI via IR ?
    Par invitee17aeca5 dans le forum Électronique
    Réponses: 2
    Dernier message: 17/08/2006, 10h44
  4. port SPI
    Par invite91a05f0b dans le forum Électronique
    Réponses: 2
    Dernier message: 04/08/2006, 11h46
  5. Débouchés en SPI?
    Par invite6cbab356 dans le forum Orientation après le BAC
    Réponses: 3
    Dernier message: 23/07/2006, 13h10
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...