DMAx_CURR_DESC_PTRとDMAx_NEXT_DESC_PTR

この二つのレジスタ、すごく間違いすいので注意が必要です。

DMAx_CURR_DESC_PTR
DMAデスクリプタの中の次にロードされるアドレス。デスクリプタ・アレイを使用する場合には、最初のデスクリプタの先頭アドレスで初期化する。
DMAx_NEXT_DESC_PTR
次にロードされるDMAデスクリプタのアドレス。デスクリプタ・リストを使用する場合には、最初のデスクリプタの先頭アドレスで初期化する。

こうやって並べても難しいですね。CURRの方はメモリの中を動いていくポインタですが、NEXTの方はデスクリプタを縫い合わせるリンクリストのポインタです。したがってNEXTのほうは常にどれかのDMAデスクリプタの戦闘アドレスを示しています。対して、CURRは必ずしも先頭アドレスを示していません。