STM32F446 の内蔵 ADC, DAC を 2 チャンネルで使うためのライブラリ.このライブラリを登録した際のプログラム: Demo_DSP_ADDA_Dual. Library for build-in ADC and DAC in STM32F446 using with dual channels.

Dependents:   F446_DSP_Oscilloscope Demo_DSP_ADDA_Dual TrG_Oscilloscope

Committer:
MikamiUitOpen
Date:
Tue Sep 22 04:52:53 2020 +0000
Revision:
0:c02c700a8ecf
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:c02c700a8ecf 1 //-------------------------------------------------------------
MikamiUitOpen 0:c02c700a8ecf 2 // STM32F446 内蔵 ADC をポーリング方式で使うための派生クラス
MikamiUitOpen 0:c02c700a8ecf 3 // 基底クラス: DspAdcDualBase
MikamiUitOpen 0:c02c700a8ecf 4 //
MikamiUitOpen 0:c02c700a8ecf 5 // 2020/09/22, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:c02c700a8ecf 6 //-------------------------------------------------------------
MikamiUitOpen 0:c02c700a8ecf 7
MikamiUitOpen 0:c02c700a8ecf 8 #include "DSP_AdcDualBase.hpp"
MikamiUitOpen 0:c02c700a8ecf 9
MikamiUitOpen 0:c02c700a8ecf 10 #ifndef DSP_ADC_DUAL_POLLING_HPP
MikamiUitOpen 0:c02c700a8ecf 11 #define DSP_ADC_DUAL_POLLING_HPP
MikamiUitOpen 0:c02c700a8ecf 12
MikamiUitOpen 0:c02c700a8ecf 13 namespace Mikami
MikamiUitOpen 0:c02c700a8ecf 14 {
MikamiUitOpen 0:c02c700a8ecf 15 class DspAdcDualPolling : public DspAdcDualBase
MikamiUitOpen 0:c02c700a8ecf 16 {
MikamiUitOpen 0:c02c700a8ecf 17 public:
MikamiUitOpen 0:c02c700a8ecf 18 // コンストラクタ
MikamiUitOpen 0:c02c700a8ecf 19 // fSampling 標本化周波数 [kHz]
MikamiUitOpen 0:c02c700a8ecf 20 // pinCh1 チャンネル 1 に対応する入力ピンの名前
MikamiUitOpen 0:c02c700a8ecf 21 // pinCh2 チャンネル 2 に対応する入力ピンの名前
MikamiUitOpen 0:c02c700a8ecf 22 DspAdcDualPolling(float fSampling, PinName pinCh1, PinName pinCh2)
MikamiUitOpen 0:c02c700a8ecf 23 : DspAdcDualBase(fSampling, pinCh1, pinCh2) {}
MikamiUitOpen 0:c02c700a8ecf 24
MikamiUitOpen 0:c02c700a8ecf 25 virtual ~DspAdcDualPolling() {}
MikamiUitOpen 0:c02c700a8ecf 26
MikamiUitOpen 0:c02c700a8ecf 27 // AD 変換された値を読み込む
MikamiUitOpen 0:c02c700a8ecf 28 // -1.0f <= AD変換された値 < 1.0f
MikamiUitOpen 0:c02c700a8ecf 29 virtual void Read(float &ad1, float &ad2) const
MikamiUitOpen 0:c02c700a8ecf 30 {
MikamiUitOpen 0:c02c700a8ecf 31 while((ADC->CSR & EOC23_) != EOC23_) {} // AD 変換が完了するまで待つ
MikamiUitOpen 0:c02c700a8ecf 32 ad1 = ToFloat(adcCh1_->DR);
MikamiUitOpen 0:c02c700a8ecf 33 ad2 = ToFloat(adcCh2_->DR);
MikamiUitOpen 0:c02c700a8ecf 34 }
MikamiUitOpen 0:c02c700a8ecf 35
MikamiUitOpen 0:c02c700a8ecf 36 private:
MikamiUitOpen 0:c02c700a8ecf 37 static const uint32_t EOC23_ = ADC_CSR_EOC2 | ADC_CSR_EOC3;
MikamiUitOpen 0:c02c700a8ecf 38
MikamiUitOpen 0:c02c700a8ecf 39 // コピー・コンストラクタ,代入演算子の禁止のため
MikamiUitOpen 0:c02c700a8ecf 40 DspAdcDualPolling(const DspAdcDualPolling&);
MikamiUitOpen 0:c02c700a8ecf 41 DspAdcDualPolling& operator=(const DspAdcDualPolling&);
MikamiUitOpen 0:c02c700a8ecf 42 };
MikamiUitOpen 0:c02c700a8ecf 43 }
MikamiUitOpen 0:c02c700a8ecf 44 #endif // DSP_ADC_DUAL_POLLING_HPP