がれすたさんのDIY日記

電子回路、Python、組み込みシステム開発、自作エフェクターを語るblog

STM32でADCをやってみる1(レギュラ変換)

今回は一番簡単なやつやってみます。

やったことを雑に書くとこんな感じ

  • レギュラ変換
  • ADC2の1CHだけを使った連続変換
  • PB4ピンにポテンショメータをつなぎそれを読む
  • 変換値をUARTでTeratermに表示する。

CubeMXでの設定

今回は一個しか読まないのでこのようにPA4にアサインする
一応UARTも使ってるのでそれも設定する

f:id:gsmcustomeffects:20170408045027p:plain

各種設定はこんな感じ

f:id:gsmcustomeffects:20170408045044p:plain

要所要所説明挟むとこんなもん

ADC_Setting

設定 機能 説明
mode independent mode 独立モードで動く、その他速度を上げるDualModeがある
Clock Prescaler 非同期、1~4分周 読んで字のごとくクロック分周器
Resolution 6~12bit ADCの分解能
Data Alignment 右詰め、左詰め データの詰め方
Scan Coversion Enable,Disable 一回のシーケンスですべてのCHを変換するかどうか
Continuos Conversion Mode Enable,Disable 連続変換
Dis Continuos Conversion Mode Enable,Disable 不連続変換
End Of Conversion Selection シングルごとかシーケンスごとか両方か 変換終了フラグの有無 データシートEOCフラグの部分読んだほうが図もあってわかりやすい
Low Power Auto Wait Enable,Disable 自動遅延変換モードの有無。ADC オーバーランが発生するリスクのある低周波数のクロックで動作しているアプリケーションのパフォーマンスを最適化する場合に有効

ADC_Regular_Conversion_Mode

設定 機能 説明
Enable Regular Conversion Enable,Disable レギュラー変換の有効化
Number of conversion 変換数 チャンネル数分設定できる
External Trigger Conversion Source ソフトおよびタイマートリガ 変換トリガソースの設定。 タイマーとかに連動できる
External Trigger Conversion Edge 立ち上がりか立下りかソフトか 外部割り込みの設定

Rankの設定

RankはCH分だけ個別設定ができる

設定 機能 説明
Channel チャンネル数分設定できる 設定したいCHを入れる
SamplingTime 1.5~601.5サイクル サンプリングタイム
OffsetNumber 1~4 オフセットするCHの選択
Offset 1~4056 変換値のオフセット

ハード構成

一応紹介しておく
POTの2番ピンをA3ピンにつないでいるだけだが

f:id:gsmcustomeffects:20170408045403j:plain

コードを書いていく

参考までにコードを貼っておく