StM32 DMA (fluxo concorrente, FIFO, modo de explosão, tampão duplo)
-
21-12-2019 - |
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?
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).