メモ書きブログ

日々の覚書

STM32 のADC個別ch読み出し

STM32のリソースとして1個しか無いADCで、 ch(port)を切り替えながら個別で読み取るには2種類の方法がある。

DMAを使って一括で指定アドレスに転送するか、 個別にchを切り替えながら読み取るか。

常にセンサを一括で読み取れれば良いが、たまに読みたいだけのchがある場合は個別で良い、と思う。

https://stackoverrun.com/ja/q/12434967

ここのコードを読むと、

  • HAL_ADC_ConfigChannelでチャンネルを指定する
  • キャリブレーションする
  • ADC開始する
  • 変換
  • ADC停止する
  • HAL_ADC_ConfigChannelでADC_RANK_NONEを指定する

ということをやっている。

ADC_RANK_NONEを行わないと、うまく切替が行われなくてハマった。