Pergunta

O DMA for STM32F4 Series tem algumas funções avançadas, posso pedir esclarecimentos aqui?

  • fluxo simultâneo: dois fluxos transmitem dados transmitidos ao mesmo tempo? Como uma transferência de byte é permitida. Se a largura do barramento é de 32 bits, 4 transmissão simultânea é possível. BTW, qual é a largura do barramento AHB para STM32?

  • Modo FIFO: Se a transmissão simultânea não for possível, acho que a FIFO poderia ser usada aqui. O FIFO ajudaria a esperar dados prontos de periféricos de baixa velocidade para o DMA sem ocupar o barramento AHB. Quando uma certa quantidade de dados estiver pronta, o pedaço de dados será enviado para a memória juntos. É meu entendimento correto?

.

Profundidade de quatro palavras 32 Buffers de memória First-Out First out (FIFoS) por fluxo

O que isso significa? Quantos dados podem ser armazenados no FIFO? 4 ou 4 * 32?

  • Modo Burst: O que realmente o modo burst faz? Ele diz na folha de dados que 65535 dados podem ser transmitidos. Qual é a relação entre 65535 com o modo de burst?

  • duplo modo de buffer:

.

Double-buffer Type transações: Transferências duplas de tampão usando dois Ponteiros de memória para a memória (enquanto o DMA está lendo / escrevendo
De / a um buffer, o aplicativo pode escrever / ler para / para o outro
amortecedor). ----- De Manual de Referência de STM32F4

Minha pergunta é: Durante a transmissão do DMA, o barramento AHB não está disponível para o Cortex M4, como poderia a aplicação ler do outro buffer?

Foi útil?

Solução

Depois de fazer alguma pesquisa, aqui está o que eu encontrei, caso alguém possa precisar.

  • fluxo simultâneo: não é possível dentro de um DMA. Possível ter DMA1, DMA2 correndo simultaneamente. Por exemplo: F427 pode fazer simultaneamente:

    • Acesso à CPU ao Flash (código de leitura)
    • DMA1 Acesso ao SRAM (para transferir algum buffer)
    • DMA2 Acesso ao SDRAM (outro buffer)
  • FIFO é usado para armazenar dados temporariamente do dispositivo de baixa velocidade. Quando uma certa quantidade de dados foi acumulada, uma explosão poderia ser enviada, para economizar recursos do AHB. Como quando a AHB é usado pelo DMAC, ele não pode ser usado pelo processador. O FIFO tem 4 * 32 bits. Pode ser configurado como 16 * 8 bits (16 * 0ne byte).

  • Modo de Burst: Um pedaço de dados é enviado continuamente de, digamos FIFO para, digamos memória. O AHB só será ocupado quando estou sendo enviado. O modo de burst é usado para economizar recursos do AHB. Não está relacionado com a limitação de tamanho de dados 65535.
  • buffer duplo: como é dito antes, a AHB é ocupada apenas quando os dados estão sendo transferidos. Portanto, o processador ainda pode buscar dados da memória quando o DMA não está ocupando o AHB.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top