DMAx_CURR_DESC_PTRとDMAx_NEXT_DESC_PTR
この二つのレジスタ、すごく間違いすいので注意が必要です。
- DMAx_CURR_DESC_PTR
- DMAデスクリプタの中の次にロードされるアドレス。デスクリプタ・アレイを使用する場合には、最初のデスクリプタの先頭アドレスで初期化する。
- DMAx_NEXT_DESC_PTR
- 次にロードされるDMAデスクリプタのアドレス。デスクリプタ・リストを使用する場合には、最初のデスクリプタの先頭アドレスで初期化する。
こうやって並べても難しいですね。CURRの方はメモリの中を動いていくポインタですが、NEXTの方はデスクリプタを縫い合わせるリンクリストのポインタです。したがってNEXTのほうは常にどれかのDMAデスクリプタの戦闘アドレスを示しています。対して、CURRは必ずしも先頭アドレスを示していません。