Utilisation DMA du PIC32 pour mémoire flash sur SPI
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Utilisation DMA du PIC32 pour mémoire flash sur SPI



  1. #1
    invite4f7ba01b

    Utilisation DMA du PIC32 pour mémoire flash sur SPI


    ------

    Bonjour,

    Voici mon environnement de travail:
    microcontrôleur PIC32MX695F512L
    MPLAB x IDE v1.85
    Compilateur XC32 V1.21

    Je souhaite utiliser la DMA pour le transfert de données vers ma flash externe par la liaison SPI 4. J'arrive SANS DMA à lire l'identifiant de ma Flash et de la configurer pour l'écriture. Je lis aussi son statut donc jusque là tout va bien.

    A la suite de cela, j'ai regardé les exemples de dma pour la liaison spi dont le code source spi_txfer.c
    Je les ai intégré à mon code et je lance la DMA pour transférer mes données par la fonction DmaDoM2Spi(void) et la à mon grand étonnement je sors complètement de ma fonction mais dès que j'essaie d'éxécuter une commande pour lire dans ma Flash ou écrire dedans, ça bloque comme si je ne pouvais plus accéder au spi4buf.

    Pour l'instant je cherche mais si quelqu'un a une suggestion ou une idée sur ce point je suis preneur.

    Bonne après midi!

    detube

    -----

  2. #2
    invite4f7ba01b

    Re : Utilisation DMA du PIC32 pour mémoire flash sur SPI

    Après avoir creuser le problème il semblerait que le bit SPIROV soit actif.

  3. #3
    RISC

    Re : Utilisation DMA du PIC32 pour mémoire flash sur SPI

    Salut,

    Je pense que tu vas trouver la solution ici.

    a+

  4. #4
    invite4f7ba01b

    Re : Utilisation DMA du PIC32 pour mémoire flash sur SPI

    Salut RISC!
    Merci encore une fois, ça marche maintenant! Cependant je me demandais de l'utilité de la DMA dans le transfert de donnée entre le PIC32 et une mémoire flash sur SPI. Pour que cela marche correctement, il faut d'une part reset le bit SPIROV de l'interface SPI mais dans la fonction gérant le transfert par DMA, il faut intégrer deux boucles while une un flag généré par l'interruption et l'autre signalant l'interface SPI libre. Tout ceux ci pour en venir que cela bloque tout de même le CPU et bloque les traitements dans la boucle principal.

    Autre chose me passe par la tête. J'ai besoin de transférer 8196 data à ma mémoire flash mais elles sont divisées en n pages de 256 bytes. Peut on utiliser la fonction Auto-Repeat Block de la DMA pour éviter de relancer à la mano la fonction de transfert par DMA?

    N'hésitez pas à échanger vos idées. Après tout c'est fait pour ça!

    Bon week end!

    detube78

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

    Re : Utilisation DMA du PIC32 pour mémoire flash sur SPI

    Salut,

    Les canaux DMA sont activés par un évènement. A la fin du transfert d'un block, il peut se réactiver automatiquement, voir "Channel Auto Enable Mode"

    a+

  7. #6
    invite4f7ba01b

    Re : Utilisation DMA du PIC32 pour mémoire flash sur SPI

    Salut RISC,

    Effectivement j'avais noté ce point sur mon petit bloc à idées. ça me conforte dans le fait que je suis sur la bonne voie. Je test ça normalement aujourd'hui et je donne des résultats dès que possible.

    A+

Discussions similaires

  1. PIC32 utilisation de la DMA
    Par invite4f7ba01b dans le forum Électronique
    Réponses: 21
    Dernier message: 22/08/2013, 15h29
  2. PIC32: Mémoire DDR ou similaire
    Par inviteff0ad740 dans le forum Électronique
    Réponses: 15
    Dernier message: 30/04/2010, 21h00
  3. aide pour reprogrammer une mémoire nand flash
    Par invited3221a84 dans le forum Électronique
    Réponses: 6
    Dernier message: 03/10/2008, 00h13
  4. Mémoire flash trop petite pour PICBASIC 3B
    Par thomasalbert1993 dans le forum Électronique
    Réponses: 0
    Dernier message: 27/12/2006, 09h42
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...