RX63TでのDMA転送について

お世話になっております。

カイロスです。

 

DMA転送の初期化についてお聞きしたく、質問させていただきました。

 

外部AD変換データを外部FRAMへ保存する際に、DMAを使用して行おうとしているのですが、

DMAの転送が動作しない(転送回数がデクリメントされない)状況になっておりまして、何か初期化で足りないところがありましたら、ご教授頂きたく思います。

DMAの動作要因は、外部ADからの変換完了要求の割り込みを設定しています。

 

DMAの処理は以下です。

IEN( ICU, IRQ3 ) = 0; /* 割り込み禁止 */
ICU.DMRSR0 = 3; /* DMAに外部要因としてIRQ3の割り込みを設定 */
DMAC0.DMCNT.BIT.DTE = 0; /* 転送の禁止 */

DMAC0.DMAMD.BIT.DM = 2; /* 転送先アドレスをインクリメント */
DMAC0.DMAMD.BIT.SM = 0; /* 転送元アドレスを固定 */

DMAC0.DMTMD.BIT.DCTG = 1; /* 転送要求に外部割込み端子からの割り込みを設定 */
DMAC0.DMTMD.BIT.SZ = 1; /* データサイズを16bit転送にする。 */
DMAC0.DMTMD.BIT.DTS = 2; /* リピート領域、ブロック領域を設定しない */
DMAC0.DMTMD.BIT.MD = 0; /* ノーマル転送 */

DMAC0.DMSAR = (uint8_t*)E8ADC; /* 転送元アドレス  0x07f00000*/

DMAC0.DMDAR = (uint32_t*)MEM_RDAT; /* 転送先アドレス 0x05f00000 */
DMAC0.DMCRA = MEM_1WAV; /* 転送回数 10240回 */
//DMAC0.DMCRA = 1; /* 転送回数 */

DMAC0.DMCNT.BIT.DTE = 1; /* 転送許可 */

IEN( ICU, IRQ3 ) = 1; /* 割り込み許可 */
DMAC.DMAST.BIT.DMST = 1; /* 動作許可 */

 

割り込みは、立ち上がりで取っており、割り込み許可後に、割り込みが入っているのは確認ができました。

もしかすると、ハードの面を疑う必要もあるのかな?とも考えています。

 

以上、よろしくお願い致します。

Parents
  • カイロスさんMSTP(DMAC0)=0;はありましたか?
  • IKUZOさんお返事ありがとうございます。

    全体の初期化項目にて、
    MSTP(DMAC0)=0;
    を実施しておりました。

    今は、データバスのほうが上手く動作していないので、DMACにて転送ができない可能性も考えております。
  • すみません、データバスは正常に動作していました。
    DMACのみ動作しない状況です。
  • カイロスさん DMAに外部要因としてIRQ3の割り込みを設定されているのですからオシロがあればそのパルスがあるのか確認してみては、それと DMAを使用せずにうまくデータを取れていますか?
  • IKUZOさんご返答ありがとうございます。

    確認してみたところ、IRQ3は正常に動作しておりました。
    また、DMAを使用せずに、外部ADからデータを取り出すことと、FRAMに書き込み読込みを実行したところ、正常に動作しておりました。

    また、
    DMAをソフトウエアトリガモードで動作させると、正常に動作しデータの移行ができました。

    以上から、
    外部割込みをトリガとして設定ができていないのかな?と考えて、設定の順序とかもろもろを見直しているのですが、今のところ上手く入っていない状況です。
Reply
  • IKUZOさんご返答ありがとうございます。

    確認してみたところ、IRQ3は正常に動作しておりました。
    また、DMAを使用せずに、外部ADからデータを取り出すことと、FRAMに書き込み読込みを実行したところ、正常に動作しておりました。

    また、
    DMAをソフトウエアトリガモードで動作させると、正常に動作しデータの移行ができました。

    以上から、
    外部割込みをトリガとして設定ができていないのかな?と考えて、設定の順序とかもろもろを見直しているのですが、今のところ上手く入っていない状況です。
Children