STM32F446 の内蔵 ADC, DAC 用のライブラリ.このライブラリを登録した際のプログラム: Demo_DSP_ADDA. Library for build-in ADC and DAC in STM32F446.
Dependents: Demo_DSP_ADDA F446_DSP_FFT_Analyzer TrG_FFT_Analyzer DSP_MultirateLinearphase ... more
DSP_AdcBase.hpp@2:7d58c617d76a, 2020-11-07 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sat Nov 07 02:12:24 2020 +0000
- Revision:
- 2:7d58c617d76a
- Parent:
- 0:85348d58f498
- Child:
- 3:a1dcee67c67e
3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:85348d58f498 | 1 | //------------------------------------------------------------- |
MikamiUitOpen | 0:85348d58f498 | 2 | // STM32F446 内蔵 ADC のための抽象基底クラス(ヘッダ) |
MikamiUitOpen | 0:85348d58f498 | 3 | // |
MikamiUitOpen | 2:7d58c617d76a | 4 | // 2020/11/07, Copyright (c) 2020 MIKAMI, Naoki |
MikamiUitOpen | 0:85348d58f498 | 5 | //------------------------------------------------------------- |
MikamiUitOpen | 0:85348d58f498 | 6 | |
MikamiUitOpen | 0:85348d58f498 | 7 | #include "mbed.h" |
MikamiUitOpen | 0:85348d58f498 | 8 | #include "PeripheralPins.h" // PinMap_ADC で使用 |
MikamiUitOpen | 0:85348d58f498 | 9 | // PeripheralPins.c が含まれるディレクトリ: |
MikamiUitOpen | 0:85348d58f498 | 10 | // mbed-dev\targets\TARGET_STM\TARGET_STM32F4\ |
MikamiUitOpen | 0:85348d58f498 | 11 | // TARGET_STM32F446xE\TARGET_NUCLEO_F446RE |
MikamiUitOpen | 0:85348d58f498 | 12 | |
MikamiUitOpen | 0:85348d58f498 | 13 | #ifndef DSP_ADC_BASE_HPP |
MikamiUitOpen | 0:85348d58f498 | 14 | #define DSP_ADC_BASE_HPP |
MikamiUitOpen | 0:85348d58f498 | 15 | |
MikamiUitOpen | 0:85348d58f498 | 16 | namespace Mikami |
MikamiUitOpen | 0:85348d58f498 | 17 | { |
MikamiUitOpen | 0:85348d58f498 | 18 | class DspAdc_Base |
MikamiUitOpen | 0:85348d58f498 | 19 | { |
MikamiUitOpen | 0:85348d58f498 | 20 | public: |
MikamiUitOpen | 0:85348d58f498 | 21 | // コンストラクタ |
MikamiUitOpen | 0:85348d58f498 | 22 | // fSampling 標本化周波数 [kHz] |
MikamiUitOpen | 0:85348d58f498 | 23 | // pin 入力ピンの名前 |
MikamiUitOpen | 0:85348d58f498 | 24 | // adc AD 変換器: ADC1, ADC2, ADC3 のいずれか |
MikamiUitOpen | 0:85348d58f498 | 25 | DspAdc_Base(float fSampling, PinName pin, |
MikamiUitOpen | 0:85348d58f498 | 26 | ADC_TypeDef* const adc = ADC2); |
MikamiUitOpen | 0:85348d58f498 | 27 | |
MikamiUitOpen | 0:85348d58f498 | 28 | virtual ~DspAdc_Base() {} |
MikamiUitOpen | 0:85348d58f498 | 29 | |
MikamiUitOpen | 0:85348d58f498 | 30 | // AD 変換された値を読み込む |
MikamiUitOpen | 0:85348d58f498 | 31 | // -1.0f <= AD変換された値 < 1.0f |
MikamiUitOpen | 0:85348d58f498 | 32 | virtual float Read() const = 0; // 純粋仮想関数 |
MikamiUitOpen | 0:85348d58f498 | 33 | |
MikamiUitOpen | 2:7d58c617d76a | 34 | // AD 変換器の外部トリガに使うタイマ (TIM8) の設定 |
MikamiUitOpen | 2:7d58c617d76a | 35 | // fSampling 標本化周波数 [kHz] |
MikamiUitOpen | 2:7d58c617d76a | 36 | void SetFs(float fSampling); |
MikamiUitOpen | 2:7d58c617d76a | 37 | |
MikamiUitOpen | 0:85348d58f498 | 38 | protected: |
MikamiUitOpen | 0:85348d58f498 | 39 | static ADC_TypeDef* myAdc_; // AD 変換器に対応する構造体のポインタ |
MikamiUitOpen | 0:85348d58f498 | 40 | float AdcToFloat() const { return AMP_*((int16_t)myAdc_->DR - 2048); } |
MikamiUitOpen | 0:85348d58f498 | 41 | |
MikamiUitOpen | 0:85348d58f498 | 42 | private: |
MikamiUitOpen | 0:85348d58f498 | 43 | static const float AMP_ = 1.0f/2048.0f; |
MikamiUitOpen | 0:85348d58f498 | 44 | static bool created_; // このクラスのオブジェクトの複数生成禁止で使用 |
MikamiUitOpen | 0:85348d58f498 | 45 | |
MikamiUitOpen | 0:85348d58f498 | 46 | // pin に対応する AD 変換器が存在することを確認する |
MikamiUitOpen | 0:85348d58f498 | 47 | bool PinmapMatch(PinName pin, ADC_TypeDef* const adc); |
MikamiUitOpen | 0:85348d58f498 | 48 | |
MikamiUitOpen | 0:85348d58f498 | 49 | // コピー・コンストラクタ,代入演算子の禁止のため |
MikamiUitOpen | 0:85348d58f498 | 50 | DspAdc_Base(const DspAdc_Base&); |
MikamiUitOpen | 0:85348d58f498 | 51 | DspAdc_Base& operator=(const DspAdc_Base&); |
MikamiUitOpen | 0:85348d58f498 | 52 | }; |
MikamiUitOpen | 0:85348d58f498 | 53 | } |
MikamiUitOpen | 0:85348d58f498 | 54 | #endif // DSP_ADC_BASE_HPP |