ES1371のDMA再考

もう、降参したのでわりとどうでもいいのですが、少し考察。データシートを見る限りでは、ES1371のオーディオチャンネル用DMAはワンショットです。どういうことかというと、以下のような動作をします。

バッファAに受信データを蓄積する。バッファAがいっぱいになったら割り込みを発生し、DMAを止める。

この方法は、ストリーミングのように次々にデータを持ってくる場合にはうまくいきません。たとえば1kBのバッファがあるとします。最初の1kBをバッファに書き、再生します。再生が終了すると割り込みで知らせてくれますが、再生は終了するため残りのデータを再生できません。
こういう事態のために、ループモードが用意されています。

バッファAに受信データを蓄積する。バッファAがいっぱいになったら割り込みを発生し、バッファAの先頭からDMAを再開する。

この方法はDMAが停止しない点で最初のものより優れていますが、相変わらずなぞは残ります。バッファAに続くデータは、いつバッファに書き込めばいいのでしょうか。割り込みが起きた点では遅すぎます。
一般には、このような場合、バッファの中点でも割り込みを起こすべきです。しかし、ループモードにはバッファの中点で発生する割り込みが無いようです。
むむむ。
ワンショットのDMAが開始した後、バッファアドレスを変更した場合、「変更はDMA終了後に反映される」という可能性もあります。わかりませんが。