Question

La série DMA pour STM32F4 a quelques fonctions avancées, pourrais-je demander des éclaircissements ici?

  • Stream simultané: Deux flux peuvent-ils transmettre des données en même temps? Étant donné qu'un transfert d'octets est autorisé. Si la largeur du bus est 32 bits, 4 transmission simultanée est possible. BTW, quelle est la largeur du bus AHB pour STM32?

  • Mode FIFO: Si la transmission simultanée n'est pas possible, je suppose que FIFO pourrait être utilisé ici. FIFO aiderait à attendre des données prêtes à partir de périphériques à basse vitesse à DMA sans occuper le bus AHB. Lorsqu'une certaine quantité de données est prête, le morceau des données sera envoyé à la mémoire ensemble. Est mon compréhension correcte?

Profondeur à quatre mots 32 Tampons de mémoire de première entrée de première entrée (FIFO) par flux

Qu'est-ce que cela signifie? Combien de données peuvent être stockées dans la FIFO? 4 ou 4 * 32?

  • Mode rafale: Que fait en réalité la mise en balance? Il dit dans la fiche technique que 65535 données peuvent être transmises. Quelle est la relation entre 65535 avec le mode rafale?

  • Mode tampon double:

Type de type double tampon Transactions: transferts tampons doubles en utilisant deux
Pointeurs de mémoire pour la mémoire (tandis que le DMA lit / écriture de
De / à un tampon, l'application peut écrire / lire sur / de l'autre
amortir). ----- Du manuel de référence de STM32F4

Ma question est la suivante: Pendant la transmission DMA, le bus AHB n'est pas disponible pour Cortex M4, comment peut-on lire à partir de l'autre tampon?

Était-ce utile?

La solution

Après avoir fait des recherches, voici ce que j'ai trouvé, au cas où quelqu'un pourrait en avoir besoin.

  • Stream simultané: impossible dans un DMA. Possible d'avoir DMA1, DMA2 fonctionnant simultanément. Par exemple: F427 peut faire simultanément:

    • CPU Accès au flash (code de lecture)
    • Accès DMA1 à SRAM (pour transférer un tampon)
    • Accès DMA2 à SDRAM (autre tampon)
  • FIFO est utilisé pour stocker des données temporairement à partir d'un périphérique à basse vitesse. Lorsqu'une certaine quantité de données a été accumulée, une rafale pourrait être envoyée pour économiser des ressources de AHB. Depuis lors, AHB est utilisé par le DMAC, il ne peut pas être utilisé par le processeur. FIFO a 4 * 32 bits. Il peut être configuré comme 16 * 8 bits (16 * 0ne octet).

  • Mode rafale: une partie des données sont envoyées en continu de, disons FIFO à, dites la mémoire. L'AHB ne sera occupé que lorsque l'éclat est envoyé. Le mode rafale est utilisé pour enregistrer la ressource de AHB. Il n'est pas lié à la limitation de la taille des données 65535.
  • Double tampon: Comme il est dit avant, AHB n'est occupé que lorsque des données sont transférées. Par conséquent, le processeur peut toujours récupérer des données de la mémoire lorsque DMA n'occupe pas l'AHB.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top