# MIC_AdjustLimitedSamplingAsync

## 構文

  `#include <twl/spi.h>`

      MICResult MIC_AdjustLimitedSamplingAsync(
                u32             rate,
                MICCallback     callback,
                void*           arg );

## 引数

rate | サンプリング周期を指定します。
callback | コールバック関数へのポインタを指定します。 このコールバックは割り込みハンドラ内から呼び出されます。
arg | コールバック関数へ渡す引数を指定します。

## 返り値

`MICResult`列挙型の処理結果を返します。
非同期処理を正常に開始できた場合に MIC_RESULT_SUCCESS が、何らかの原因で失敗した場合にはそれ以外の返り値が返されます。

## 説明

マイクの周波数限定自動サンプリングにおけるサンプリングレートの調整を非同期に開始します。
この関数はARM7に周波数限定自動サンプリング調整要求を発行し、ARM7からの応答を待たずに呼び出し元に戻ります。 ARM7における処理結果はユーザコールバック関数に渡されるresult引数によって取得する必要があります。 この関数が失敗した場合は非同期的な操作は行われず、ユーザコールバック関数も呼び出されません。
周波数限定自動サンプリングが開始されている場合にのみ有効であり、ARM7が要求を受け付けた時点でサンプリング周期が更新されます。

周波数限定自動サンプリングは通常の自動サンプリングと異なり、実際のサンプリング操作をハードウェアで行います。 このため、厳密な周期で安定したサンプリングを行うことができ、ARM7でのCPU負荷が緩和されることにより無線通信などの他のI/Oに与える影響が少なくなります。 反面、ハードウェアのサポートする周波数以外ではサンプリングを行うことができません。 rate に指定可能なサンプリング周波数は以下の通りですが、サウンドのマスター周波数設定に依存して更に以下の内の４つに限定されます。 限定された周波数以外を指定した場合には MIC_RESULT_ILLEGAL_PARAMETER が返されます。

サウンドマスター周波数 | 設定可能な周波数 | 説明
--- | --- | ---
32.73kHz | MIC_SAMPLING_RATE_32730 | 32.73kHz (マスター周波数の1/1)
MIC_SAMPLING_RATE_16360 | 16.36kHz (マスター周波数の1/2)
MIC_SAMPLING_RATE_10910 | 10.91kHz (マスター周波数の1/3)
MIC_SAMPLING_RATE_8180 | 8.18kHz (マスター周波数の1/4)
47.61kHz | MIC_SAMPLING_RATE_47610 | 47.61kHz (マスター周波数の1/1)
MIC_SAMPLING_RATE_23810 | 23.81kHz (マスター周波数の1/2)
MIC_SAMPLING_RATE_15870 | 15.87kHz (マスター周波数の1/3)
MIC_SAMPLING_RATE_11900 | 11.90kHz (マスター周波数の1/4)

## 注意

NITROプラットフォーム上やCODECをCODEC-DSモードで動作させる場合には周波数限定自動サンプリングは行うことができないため、 代わりに自動サンプリング操作用関数`MIC_AdjustAutoSamplingAsync()`が内部的に呼び出されます。

TWL のマイク入力には、微小なノイズが混入することが判明しています。対策はこちらをご覧下さい。

## 参照

`MIC_AdjustLimitedSampling, MIC_StartLimitedSamplingAsync, MIC_StopLimitedSamplingAsync`

## 履歴

Ver. 2008/01/09 CODECモードによる動作の差異についての注意を追記
Ver. 2007/11/17 初版