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
DSP_AdcDualPolling.hpp@3:a3148d75c1ea, 2021-06-29 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Jun 29 00:58:39 2021 +0000
- Revision:
- 3:a3148d75c1ea
- Parent:
- 0:c02c700a8ecf
4
Who changed what in which revision?
User | Revision | Line number | New 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 |