STM32 DMA(同時ストリーム、FIFO、バーストモード、ダブルバッファ)

StackOverflow https://stackoverflow.com//questions/24051720

  •  21-12-2019
  •  | 
  •  

質問

STM32F4シリーズのDMAはいくつかの高度な機能を持っています、ここで説明を求めることができますか?

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

  • FIFOモード:同時送信が不可能な場合は、ここではFIFOを使用することができます。 FIFOは、AHBバスを占有せずに低速周辺機器からDMAへのデータを待つのに役立ちます。一定量のデータが準備されている場合は、データのチャンクが一緒にメモリに送信されます。私の理解は正しいですか?

4ワード深度32ストリームごとの最初のメモリバッファ(FIFO)

それはどういう意味ですか? FIFOに格納できるデータの数はいくつですか? 4または4 * 32?

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

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

ダブルバッファ型トランザクション:2つを使用したダブルバッファ転送
メモリのメモリポインタ(DMAが読み書き中ですが
バッファーから、アプリケーションは他の
に書き込み/読み取りできます。 バッファ)。 ----- STM32F4

のリファレンスマニュアルから

私の質問は:DMA送信中に、AHBバスはCortex M4には利用できません。

役に立ちましたか?

解決

いくつかの研究を行った後、ここに私が見つけたことは、誰かがそれを必要とするかもしれません。

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

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

  • バーストモード:データのチャンクは、FIFOから、Memoryまで連続的に送信されます。 AHBは、バーストが送信されているときだけ占有されます。バーストモードは、AHBのリソースを保存するために使用されます。 65535のデータサイズの制限とは関係ありません。
  • ダブルバッファ:前に言われているように、データ転送中にAHBは占有されます。したがって、DMAがAHBを占有していないときは、プロセッサは依然としてメモリからデータをフェッチできます。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top