STM32 DMA(同時ストリーム、FIFO、バーストモード、ダブルバッファ)
-
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バイト)として設定できます。