2016年11月20日

タイマ割り込みADCサンプリング

今回はSTM32でのタイマ割り込みでADCのサンプリングを行う際の設定について紹介します。


環境はこれまで同様、
・STM32F303K8
 +SW4STM32(System Workbench for STM32)
 +STM32CubeMX(F3_1.6.0)
です。
 

STM32CubeMXでADCは下記のように設定します。

ADsetting.png

今回はTimer2をトリガにしてADCサンプリングを行います。
ポイントはContinuousConvModeをDisableにする点。

最初、通常のADCサンプリング同様に
ContinuousConvModeをENABLEにしていました。
この状態ではタイマによらず、
ADC側のタイミングで連続して変換されてしまい、
意図したタイミングになりませんでした。



STM32CubeMXでTimer2は下記のように設定します。

timer2.png

タイマのPrescalerとPeriodは適当に設定して
後から下記のようにコード上で書き換えます。

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = (SystemCoreClock / 1000000) - 1;  // 1us Tick
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 10-1; // 10us (100kHz)
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;

上記の設定でPrescaleをクロックに応じた式にすることで
Periodをusとしてそのまま直感的に定義することが可能です。
ただ、秒単位の場合は変数の範囲を超えるため、
必要に応じてClockDivisioやPrescalerの変更が必要です。






posted by Crescent at 00:00| Comment(0) | TrackBack(0) | ナレッジ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/444172599
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック