MI_SetNDmaInterval

構文

#include <twl/mi.h>

void MI_SetNDmaInterval( u32 ndmaNo, u32 intervalTimer, u32 prescaler );

引数

ndmaNo DMA番号 (0〜3)
intervalTimer ブロック転送インターバル値 (0〜0xFFFF)
prescaler プリスケーラ (MI_NDMA_INTERVAL_PS_n)

返り値

なし。

説明

TWLの新規DMAが動作する際の、ブロック転送インターバル値とプリスケーラを設定します。

設定されるのは、内部で持っているDMA config 構造体 (MINDmaConfig) の値で、ユーザが別途指定しない限り、以降その値が使用されます。対象となるDMAを ndmaNo の引数で指定します。

intervalTimer はダウンカウンタになっています。値が大きいほどインターバルは長くなります。0の場合は、転送ワード数分までブロックDMAを連続して実行します。

prescaler はカウンタのプリスケーラで、以下の値を取ります。

意味
MI_NDMA_INTERVAL_PS_1 システムクロック(33.514MHz)
MI_NDMA_INTERVAL_PS_4 システムクロックの4分周
MI_NDMA_INTERVAL_PS_16 システムクロックの16分周
MI_NDMA_INTERVAL_PS_64 システムクロックの64分周


なお、DMAイネーブルフラグが1のときは、変更が無視されます。

内部動作

内部のDMA config 構造体に値をセットします。これは実際のDMA動作時に、DMAxBCNT レジスタに設定されます。

参照

MI_GetNDmaIntervalTimer, MI_GetNDmaIntervalPrescaler

履歴

2007/09/07 初版