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

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