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

Committer:
MikamiUitOpen
Date:
Sun Dec 20 08:04:35 2020 +0000
Revision:
3:a1dcee67c67e
Parent:
2:7d58c617d76a
4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:85348d58f498 1 //-------------------------------------------------------------
MikamiUitOpen 0:85348d58f498 2 // STM32F446 内蔵 ADC のための抽象基底クラス(ヘッダ)
MikamiUitOpen 0:85348d58f498 3 //
MikamiUitOpen 3:a1dcee67c67e 4 // 2020/12/20, 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 3:a1dcee67c67e 18 class DspAdcBase
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 3:a1dcee67c67e 25 DspAdcBase(float fSampling, PinName pin,
MikamiUitOpen 0:85348d58f498 26 ADC_TypeDef* const adc = ADC2);
MikamiUitOpen 0:85348d58f498 27
MikamiUitOpen 3:a1dcee67c67e 28 virtual ~DspAdcBase() {}
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 3:a1dcee67c67e 50 DspAdcBase(const DspAdcBase&);
MikamiUitOpen 3:a1dcee67c67e 51 DspAdcBase& operator=(const DspAdcBase&);
MikamiUitOpen 0:85348d58f498 52 };
MikamiUitOpen 0:85348d58f498 53 }
MikamiUitOpen 0:85348d58f498 54 #endif // DSP_ADC_BASE_HPP