2021/03/28(日)LPC55xx DMA Register : Set valid register

参照: NXP LPC55S1x RM R1.3, 22.6.13項 *1

Set valid register

SETVALID0(set valid 0)レジスタでは、1つまたは複数のDMAチャネルのCTRLSTATレジスタのVALIDビットをセットすることができます。VALIDビットの説明については、22.6.17項「Channel transfer configuration registers」を参照してください。このレジスタは書き込み専用です。

CFGVALIDビットおよびSV(set valid)ビットは、ソフトウェアによるより直接的なDMAブロックタイミング制御を可能にします。一連のディスクリプタの中の各チャネルディスクリプタは、CFGVALIDビットの設定またはチャネルのSETVALIDフラグの設定によって有効にすることができます。

通常、CFGVALIDビットはセットされています。これにより、DMAはチャネルディスクリプタがアクティブであり、実行可能であることを伝えます。DMAは、CFGVALIDビットがセットされたディスクリプタブロックを、ソフトウェアの介入なしに順次実行していきます。

CFGVALIDビットを0に設定したままにしておくと、ソフトウェアが継続をトリガするまで、DMAシーケンスをディスクリプタで一時停止させることができます。DMA送信中に、CFGVALIDが0に設定されたチャネルディスクリプタが見つかった場合、DMAは(以前にバッファリングされた)SETVALID0のそのチャネルに対するフラグをチェックします。見つかった場合、DMAはディスクリプタを有効に設定し、SVビットをクリアし、ディスクリプタの処理を再開します。それ以外の場合、DMAはチャネルのSETVALID0ビットがセットされるまで一時停止します。

*1 : この記事は筆者が私的利用のためにReference Manualを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。