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
Diff: DSP_AdcBase.hpp
- Revision:
- 0:85348d58f498
- Child:
- 2:7d58c617d76a
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DSP_AdcBase.hpp Thu May 21 10:42:04 2020 +0000 @@ -0,0 +1,54 @@ +//------------------------------------------------------------- +// STM32F446 内蔵 ADC のための抽象基底クラス(ヘッダ) +// +// 2020/05/21, Copyright (c) 2020 MIKAMI, Naoki +//------------------------------------------------------------- + +#include "mbed.h" +#include "PeripheralPins.h" // PinMap_ADC で使用 +// PeripheralPins.c が含まれるディレクトリ: +// mbed-dev\targets\TARGET_STM\TARGET_STM32F4\ +// TARGET_STM32F446xE\TARGET_NUCLEO_F446RE + +#ifndef DSP_ADC_BASE_HPP +#define DSP_ADC_BASE_HPP + +namespace Mikami +{ + class DspAdc_Base + { + public: + // コンストラクタ + // fSampling 標本化周波数 [kHz] + // pin 入力ピンの名前 + // adc AD 変換器: ADC1, ADC2, ADC3 のいずれか + DspAdc_Base(float fSampling, PinName pin, + ADC_TypeDef* const adc = ADC2); + + virtual ~DspAdc_Base() {} + + // AD 変換された値を読み込む + // -1.0f <= AD変換された値 < 1.0f + virtual float Read() const = 0; // 純粋仮想関数 + + protected: + static ADC_TypeDef* myAdc_; // AD 変換器に対応する構造体のポインタ + float AdcToFloat() const { return AMP_*((int16_t)myAdc_->DR - 2048); } + + private: + static const float AMP_ = 1.0f/2048.0f; + static bool created_; // このクラスのオブジェクトの複数生成禁止で使用 + + // AD 変換器の外部トリガに使うタイマ (TIM8) の設定 + // fSampling 標本化周波数 [kHz] + void SetTim8(float fSampling); + + // pin に対応する AD 変換器が存在することを確認する + bool PinmapMatch(PinName pin, ADC_TypeDef* const adc); + + // コピー・コンストラクタ,代入演算子の禁止のため + DspAdc_Base(const DspAdc_Base&); + DspAdc_Base& operator=(const DspAdc_Base&); + }; +} +#endif // DSP_ADC_BASE_HPP \ No newline at end of file