3

stm32F4 シリーズの DMA にはいくつかの高度な機能がありますが、ここで説明を求めてもよろしいですか?

  • 同時ストリーム: 2 つのストリームが同時にデータを送信できますか? 1 バイト転送が許可されているため。バス幅が 32 ビットの場合、4 つの同時伝送が可能です。ところで、STM32 の AHB バスの幅は?

  • FIFO モード: 同時送信ができない場合は、ここで FIFO を使用できると思います。FIFO は、AHB バスを占有することなく、低速ペリフェラルから DMA へのデータの準備ができているのを待つのに役立ちます。一定量のデータの準備が整うと、データのチャンクがまとめてメモリに送信されます。私の理解は正しいですか?

ストリームごとに 4 ワードの深さ 32 個の先入れ先出しメモリ バッファ (FIFO)

どういう意味ですか?FIFOにはいくつのデータを保存できますか? 4 または 4*32?

  • バースト モード: バースト モードは実際に何をしますか? データシートには、65535個のデータを送信できると書かれています。65535とバーストモードの関係は?

  • ダブルバッファモード:

ダブル バッファ タイプのトランザクション: メモリに対して 2 つの
メモリ ポインタを使用するダブル バッファ転送 (DMA が
バッファから読み書きしている間、アプリケーションは他のバッファに読み書きできます
)。-----STM32F4のリファレンスマニュアルより

私の質問は次のとおりです。DMA 送信中、AHB バスは Cortex M4 で使用できません。アプリケーションは他のバッファからどのように読み取ることができますか?

4

1 に答える 1

8

いくつかの調査を行った後、誰かがそれを必要とする場合に備えて、ここに私が見つけたものがあります.

  • 同時ストリーム: 1 つの DMA 内では不可能です。DMA1、DMA2 の同時実行が可能です。例: F427 は同時に行うことができます:

    • フラッシュへの CPU アクセス (コードの読み取り)
    • SRAMへのDMA1アクセス(一部のバッファを転送するため)
    • SDRAM (別のバッファ) への DMA2 アクセス
  • FIFO は、低速デバイスからのデータを一時的に格納するために使用されます。一定量のデータが蓄積されると、AHB のリソースを節約するためにバーストを送信できます。AHB を DMAC で使用する場合、プロセッサでは使用できません。FIFO のサイズは 4*32 ビットです。16*8 ビット (16*0ne バイト) として構成できます。

  • バースト モード: データのチャンクが、FIFO からメモリなどに連続的に送信されます。AHB は、バーストが送信されているときにのみ占有されます。Burst モードは、AHB のリソースを節約するために使用されます。65535 のデータ サイズ制限とは関係ありません。
  • ダブルバッファ: 前に述べたように、AHB はデータが転送されているときにのみ使用されます。したがって、DMA が AHB を占有していない場合でも、プロセッサはメモリからデータをフェッチできます。
于 2014-06-06T02:44:56.343 に答える