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を行わないと、うまく切替が行われなくてハマった。