Emuler une liaison SPI memoire Flash externe avec un PIC
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Emuler une liaison SPI memoire Flash externe avec un PIC



  1. #1
    invite179ef891

    Smile Emuler une liaison SPI memoire Flash externe avec un PIC


    ------

    Bonjour à tous,

    Nouveau dans ce forum, donc je commence par me présenter, Je m'appel Guillaume je suis en Licence EEA (génie électrique), je fais un stage dans un labo, et je travail sur un lecteur de capteur.
    Après avoir pas mal avancé dans mon stage, je suis arrivé à l'étape où je dois ajouter un mémoire externe à mon PIC 18F2520. La taille mémoire doit être grande 1Mo fréquence interne grande.
    Je n'ai plus de place sur mon PIC il ne me reste que 4 pins de Libre (de 25 à 28) (désolé je n'arrive pas à joindre un fichier pour mieux voir). Tous les autres pins sont occupés (communication avec afficheur LCD, DAC, ADC, bouton ...etc)

    Je me suis dis que je devrais utiliser une mémoire flash SPI (j'ai pensé au Atmel AT26DF081A) un SOIC 8pin classique. Mais les liaisons SPI du PIC sont tous occupé, donc je devrais émuler ma liaison SPI.

    Mes questions sont les suivantes:
    Est ce que vous pensez que c'est faisable, de rajouté une mémoire externe dans ce cas?
    Est ce possible d'émulé mes Liaison SPI ?
    Quel conseil me donneriez-vous ?
    Le pic est imposé car le lecteur existe déjà. Mais la mémoire flash, je l'ai choisi, est ce que vous pensez que j'ai bien choisi ?

    Merci de vos réponses, ça m'aidera énormément,
    A++ S:

    Si vous avez des exemples de code en C pour l'adressage de la memoire (c'est bienvenus)

    -----

  2. #2
    invite07d645db

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Tu peux communiquer avec 2 périphérique via une seule liaison SPI, en utilisant les broches Slave Select pour sélectionner quel périphérique doit communiquer

  3. #3
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    merci pour ta réponse, j'ai deja vu que c'est faisable mais je ne sais pas trop comment faire, je débute dans la prog des µC, donc niveau protocole communication je suis unpeu trop novice, lol, j’essaie de me documenter du mieux que je peux. Si t'as des exemples et des liens à me filer, pour m'orienter ça va etre coool, on me laisse beaucoup d'autonomie au bureau, et je commence à patiner.

  4. #4
    invite805ff73c

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Chaque esclave SPI doit avoir une broche SS (slave select). Pour chaque broche SS tu prends une broche GPIO configuré en sortie du PIC et tu fais gaffe de n'activer qu'un seul esclave à la fois. Mais on peut aussi très bien émuler du SPI en soft, ce n'est vraiment pas très compliqué.

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

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Merci pour la réponse, effectivement j'ai déjà vu ça sur d'autre forum mais j'ai pas compris comment sélectionner mon esclave au bon moment surtout que cette mémoire doit être utilisé pratiquement constamment. c'est pour ça que j'ai préféré émuler. ce qui me pose problème c'est surtout l'horloge, comment choisir le bon cycle ?.

  7. #6
    invite805ff73c

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Citation Envoyé par soldat86 Voir le message
    j'ai pas compris comment sélectionner mon esclave au bon moment
    Eh ben avant de lancer le module SPI de ton µP tu mets juste la bonne broche à 1 (ou 0 si la logique est inversée). Sur AVR ça donnerais genre
    Code:
    PORTB|=(1<<SS_MEMOIRE); //activer
    spi_envoi_reception(valeur); //vers la mémoire
    PORTB&=~(1<<SS_MEMOIRE); //désactiver
    
    PORTB|=(1<<SS_AUTRE_CHOSE);
    spi_envoi_reception(valeur); //vers autre chose
    PORTB&=~(1<<SS_AUTRE_CHOSE);
    Le ou les composants désactivés mettent leur broches à l'état Z (haute impédance), comme si il n'y avait pas de connection...

    surtout que cette memoire dois etre utilisé pratiquement constamment.
    Ah ben ça faut bien sur faire des calculs avant, le module SPI ne peut faire qu'une com à la fois...

    ce qui me pose problème c'est surtout l'horloge comment choisir le bon cycle.
    Voyons... Ton AT26DF081A supporte 70MHz, ton PIC fait max. 40MHz system clock (IO-Clock je ne sais pas, j'y connais rien...) si j'ai bien vu, donc pas de soucis, pas besoin de temporisations. Tu fais juste shift, test si 1, mise à 1/0 de data puis un front sur clock et tu recommence....

  8. #7
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Oki merci, je vais voir ce que je peux faire, si je n'avance pas je reviendrais surement
    Encore merci, et biensur si entre temps t'as des idée je suis preneur.!!!

  9. #8
    RISC

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Salut,

    Je te DECONSEILLE d'utiliser les broches 25 à 28 car 2 de ces broches (27 et 28) sont indispensables pour programmer/deboguer le PIC18F2520 (PGC, PGD).........
    En plus tu vas devoir faire une liaison SPI en "bit-banging" ce qui va réduire la vitesse de façon très importante...

    As-tu déjà un périphérique SPI sur ta carte ? (peux-tu poster ton schéma).
    Car si tu en as un, il est possible de "partager" le bus SPI. Il suffit d'utiliser la broche SS de chaque périph.
    Le bus SPI se trouve sur les broches 15 et 16 (SDI, SDO).

    Concernant le choix de la flash SPI, AT26DF081A n'est pas un bon choix car...ATMEL a vendu sa division mémoire FLASH à une autre société assez inconnue (ADESTO ???) pas facile à trouver et cette mémoire n'est pas recommandée pour de nouveau design car elle est en fin de vie ("Not Recommended for New Designs").
    La flash SPI SST25VF080B a des temps d'effacement beaucoup plus rapides et le driver en C est fourni ici.

    Vu que tu n'as plus assez de broches dispo, tu devrais considérer de passer sur un PIC18F4520 qui est le grand frère en 40 broches et qui dispose de plus d'E/S.

    a+
    Dernière modification par RISC ; 03/07/2013 à 22h06.

  10. #9
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Salut merci pour ta réponse RISC, j'ai joins l'image mais y a juste la notation des ports pas le shema complet, mais je crois que c'est assez claire, en gros les liaison SPI du DAC et de l'ADC sont émulé et les port du SPI (SDO SDI) sont utilisés pour l'I2C du LCD. Le lecteur marche bien mais j'utilise que la mémoire interne du PIC qui reste trés petite pour enregistré les données.
    Merci pour le tuyau de la flash SST25VF080B, mais tu ne pense pas que la vitesse d'horloge est beaucoup plus grand que celle du PIC ?
    Concernant le changement du PIC ça ne sera pas facile pask j'ai plus de place sur ma carte et ca taille doit resté comme tel. ca fé partie du cahier des charge ??
    Voila si t'as encore des idées a me filer ça sera cool

    je cherche aussi qu'est ce qu'il faut lire et qui est important dans une datasheet de PIC et de mémoires, si t'as des un tuto ou des idées ça m'aidera beaucoup, je sais que ça fait beaucoup de question et de demande mais je débute, donc voila.....

    Nom : SPIflash.JPG
Affichages : 115
Taille : 61,8 Ko

  11. #10
    RISC

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Salut,

    Si tu "émules" déjà plusieurs liaisons SPI c'est que ton micro est sous dimensionné et que tu vas avoir de plus en plus de problèmes de temps-réel.
    Il faut parfois prendre la décision qui s'impose quand on ajoute au fur et à mesure des périphériques...

    Personnellement, je commencerais par au MINIMUM changer le PIC18F2520 pour un PIC18F26K22 (c'est également un 28 broches). C'est la version récente et améliorée du PIC18F2520. Il possède 2 UARTS, 2 x I2C ou SPI , il fonctionne à 64MHz (16MIPS) y compris sur l'horloge interne, beaucoup plus de timers.

    Cela devrait demander une semaine d'adaptation et peut-être un re-routage de ta carte mais cela résoudra pas mal de PB.

    Concernant la mémoire SPI, la fréquence de la mémoire est sa fréquence MAX d'utilisation. On peut bien sûr l'utiliser à des fréquences beaucoup plus basses sans aucun PB.

    Je ne sais pas à quelle fréquence tu dois enregistrer dans la mémoire SPI mais si tu choisis une 8 Mbits je suppose que tu as pas mal de données.
    quand tu vas les transférer, cela risque de saturer le micro...

    a+

  12. #11
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Encore merci, tu m'aide beaucoup, avec toutes ces infos, Concernant la mémoire, je ne l'utilise pas entièrement au meme temps, c juste qu'elle doit stocker des données de 100 types de capteurs différents , donc pendant l'utilisation je ferais appel a un capteur à la fois que je récupererai à une adresse donnée de la flash.
    Encore merci je vais voir tout ça, sympas de votre part.
    Mais j'insiste toujours, s'il y a de la doc de prog de PIC, et utilisation des protocole de com, des tutos c tjr bienvenus.

    A++

  13. #12
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Helloo, tout le monde
    Je reviens vers vous, car je n'ai toujours pas pu mettre en place ma flash externe en SPI, donc le soucis c'est que je ne doi pas changé de PIC, au labo il veulent ke ca reste comme tel, donc voila mon souci: Je dois Emuler mon SPI avec le PIC 18f2520 et la memoire externe SST25VF080B sachant k'il me reste ke les pin de 25 a 28.
    Aidez moi , Merci

  14. #13
    invite49a9147b

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Euh, c'est vraiment usine à gaz. N'émule pas un autre SPI et utilise le slave select de préférence. Il y a de nombreux cas d'utilisation dans la MAL (librairie microchip hein).
    Sur MiWi Demo par exemple, il y a MAC_EEPROM et Transceiver sur le même SPI. Tu pourras constater que le chip select se fait avec seulement 2 ou 3 lignes de code.

  15. #14
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    oki je vais voir ca, et je te ferai signe, merci

  16. #15
    invite179ef891

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    je ne trouve rien et personne pour m'aider, j'ai besoin d'une aide mode debutant
    je m'enbrouille.......

  17. #16
    invite49a9147b

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Go forum microchip, je suis sur que ce sujet a du y être traité une dizaine de fois

  18. #17
    RISC

    Re : Emuler une liaison SPI memoire Flash externe avec un PIC

    Salut,

    Emuler une liaison SPI est lent. Si tu veux vraiment faire cela il suffit de chercher sur g...gle "SPI bit banging PIC18".
    Tu trouveras des exemples et en particulier pour les cartes SD qui utilisent aussi le mode SPI pour communiquer...

    Cela dit, utiliser les broches PGC et PGD qui servent à la programmation et au debug de ton PIC, je te prédit des grosses galères !!!
    Ne pas vouloir changer le PIC alors qu'il y a des modèles avec le même nombre de broches et des liaisons hardware toutes faites c'est aller à la guerre sans arme...

    Bonne chance....car tu vas vraiment en avoir besoin ;=)
    a+

Discussions similaires

  1. émuler une liaison SPI
    Par invite72c69f9a dans le forum Électronique
    Réponses: 7
    Dernier message: 31/05/2012, 15h20
  2. Communication avec mémoire SPI-PIC 18
    Par invite953f8104 dans le forum Électronique
    Réponses: 0
    Dernier message: 08/02/2011, 08h58
  3. emuler une carte SD avec un PIC
    Par invite446c87f8 dans le forum Électronique
    Réponses: 2
    Dernier message: 03/10/2009, 21h06
  4. Liaison Usb -> Spi avec un pic 18f4550
    Par inviteb608cdc8 dans le forum Électronique
    Réponses: 3
    Dernier message: 28/08/2008, 22h12
  5. émuler un signal sur une entrée PIC avec MPLAB
    Par invite5396f733 dans le forum Électronique
    Réponses: 3
    Dernier message: 24/02/2008, 07h15
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...