- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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転送が一時中断となっている間に、ADCのFIFOに3ch分のAD変換値が格納された状態でDMA転送が再開となった場合も、DMACは、FIFOのエンプティビットを確認しながら既に格納されている3ch分のAD変換値をSRAMに転送し、その後のAD変換値も順に転送される、という認識ですが正しいでしょうか。
■質問3
上記「質問2」と同様にADCのFIFOに3ch分のAD変換値が格納された状態でDMA転送が再開となったとき、FIFOに格納されているAD変換値が8ch目(最後)のAD変換値と次の1ch目と2ch目のAD変換値だった場合、DMA転送再開後に8ch目(最後)のAD変換値が転送されると、転送要求信号(ADCのスキャン変換割込み要求ビット)がクリアされることになると思います。
このときFIFOにはまだ2ch分のAD変換値が格納されているためADCのスキャン変換割込み要求ビットが再度1(変換結果格納)にセットされて次のブロック転送としてのDMA転送が開始されると考えてよいでしょうか?
DMA転送が停止していまい、FIFOオーバーフローになることを懸念しています。
内容が複雑で質問数も多いですが、よろしくお願いします。
Solved! Go to Solution.
- Labels:
-
Legacy Microcontrollers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
【回答1】
今回の場合、DMAが待たされることになります。
動作については、32 Bit Microcontroller FM4 Family Peripheral Manual Main Part の
CHAPTER 10: DMAC 、3.3 ハードウェア・Demand転送を参照ください。
【回答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転送が開始されると考えてよいです。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
【回答1】
今回の場合、DMAが待たされることになります。
動作については、32 Bit Microcontroller FM4 Family Peripheral Manual Main Part の
CHAPTER 10: DMAC 、3.3 ハードウェア・Demand転送を参照ください。
【回答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転送が開始されると考えてよいです。