FM4 DMAについて

Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
TeMa_2997106
Level 6
Level 6
Distributor - TED (Japan)
10 likes received 10 solutions authored 250 replies posted

FM4(S6E2H)において、ADCのFIFOからSRAM内にDMACを使用してDMA転送させようと検討しています。

下記が前提です。

[ADC]

SW起動で複数ch(合計8ch分)による連続モードで動作(割込みは許可で設定)

[割込みコントローラ]

該当するADC unitのスキャン変換割り込みをDMA要求選択に設定 

[DMAC]

HW,Demand転送にてデータサイズ(ブロック数=1、転送回数=8)を設定

転送元はADCのFIFO、転送先はSRAM内の特定アドレス

転送元アドレスは固定値、転送先アドレスはインクリメントで、リロードとする

ブロック数、転送回数もリロードとして繰り返し転送

 [Operation] 

DMACを動作許可状態にして、A/Dコンバータをソフトウェア起動します。

 

以上の動作の前提において、確認したいことがあります。

※質問が3つあるため、スレッド分割も検討しましたが、前提条件が同一のため申し訳ありませんがここで3つとも質問させてください。分割したほうがよければコメントください。

 ■質問1

1ch目のAD変換が完了するとスキャン変換割り込みが発生しDMA転送が実行されて1ch目のADC値が指定SRAM領域の先頭アドレスに格納されます。その際、2ch目のAD変換が完了するまで、2回目のDMA転送はウエイトとなるのでしょうか?

(DMACは、FIFOのエンプティビットを確認しながら実行されるのでしょうか?)

AD変換時間よりDMA転送のほうが短時間で処理されることが予想されるため、2ch目のAD変換が完了する前に2回目のDMA転送が実行されてしまい、AD変換の無効データが指定SRAM領域内の2番目に格納されることを心配しています。

質問2

他の優先順位の高いDMA転送が実行されて、上記ADCからSRAMへのDMA転送が一時中断となっている間に、ADCFIFO3ch分のAD変換値が格納された状態でDMA転送が再開となった場合も、DMACは、FIFOのエンプティビットを確認しながら既に格納されている3ch分のAD変換値をSRAMに転送し、その後のAD変換値も順に転送される、という認識ですが正しいでしょうか。 

質問3

上記「質問2」と同様にADCFIFO3ch分のAD変換値が格納された状態でDMA転送が再開となったとき、FIFOに格納されているAD変換値が8ch(最後)AD変換値と次の1ch目と2ch目のAD変換値だった場合、DMA転送再開後に8ch(最後)AD変換値が転送されると、転送要求信号(ADCのスキャン変換割込み要求ビット)がクリアされることになると思います。

このときFIFOにはまだ2ch分のAD変換値が格納されているためADCのスキャン変換割込み要求ビットが再度1(変換結果格納)にセットされて次のブロック転送としてのDMA転送が開始されると考えてよいでしょうか?

DMA転送が停止していまい、FIFOオーバーフローになることを懸念しています。

内容が複雑で質問数も多いですが、よろしくお願いします。

0 件の賞賛
1 解決策
Takashi_M
Moderator
Moderator
Moderator
1000 replies posted 500 solutions authored 750 replies posted

【回答1】

今回の場合、DMAが待たされることになります。

動作については、32 Bit Microcontroller FM4 Family Peripheral Manual Main Part の

CHAPTER 10: DMAC 、3.3 ハードウェア・Demand転送を参照ください。

https://www.infineon.com/dgdl/Infineon-32-BIT_MICROCONTROLLER_FM4_PERIPHERAL_MANUAL-AdditionalTechni...

 

【回答2】

32 Bit Microcontroller FM4 Family Peripheral Manual Analog Part 

CHAPTER 1-2: 12ビットA/Dコンバータ の3.6 DMA起動のFigure 3-10 DMA転送動作を見る限り、誤認氏に間違いは無いようです。もし可能でしたら、実機にてご確認ください。

 

【回答3】

ご理解の通りです。

DMA転送が開始されると考えてよいです。

元の投稿で解決策を見る

0 件の賞賛
1 返信
Takashi_M
Moderator
Moderator
Moderator
1000 replies posted 500 solutions authored 750 replies posted

【回答1】

今回の場合、DMAが待たされることになります。

動作については、32 Bit Microcontroller FM4 Family Peripheral Manual Main Part の

CHAPTER 10: DMAC 、3.3 ハードウェア・Demand転送を参照ください。

https://www.infineon.com/dgdl/Infineon-32-BIT_MICROCONTROLLER_FM4_PERIPHERAL_MANUAL-AdditionalTechni...

 

【回答2】

32 Bit Microcontroller FM4 Family Peripheral Manual Analog Part 

CHAPTER 1-2: 12ビットA/Dコンバータ の3.6 DMA起動のFigure 3-10 DMA転送動作を見る限り、誤認氏に間違いは無いようです。もし可能でしたら、実機にてご確認ください。

 

【回答3】

ご理解の通りです。

DMA転送が開始されると考えてよいです。

0 件の賞賛