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

Committer:
MikamiUitOpen
Date:
Tue Jun 29 00:58:39 2021 +0000
Revision:
3:a3148d75c1ea
Parent:
2:91765f32ab2c
4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:c02c700a8ecf 1 //----------------------------------------------------------
MikamiUitOpen 0:c02c700a8ecf 2 // STM32F446 の ADC2, ADC3 を使って同時に AD 変換を開始し,
MikamiUitOpen 0:c02c700a8ecf 3 // アナログ信号を入力するための抽象クラス(ヘッダ)
MikamiUitOpen 0:c02c700a8ecf 4 // CH1 は ADC2 を使用
MikamiUitOpen 0:c02c700a8ecf 5 // CH2 は ADC3 を使用
MikamiUitOpen 0:c02c700a8ecf 6 // Read(), Write() の引数:
MikamiUitOpen 0:c02c700a8ecf 7 // 第一引数:CH1,第二引数:CH2
MikamiUitOpen 0:c02c700a8ecf 8 //
MikamiUitOpen 2:91765f32ab2c 9 // 2020/11/07, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:c02c700a8ecf 10 //----------------------------------------------------------
MikamiUitOpen 0:c02c700a8ecf 11
MikamiUitOpen 0:c02c700a8ecf 12 #include "mbed.h"
MikamiUitOpen 0:c02c700a8ecf 13 #include "PeripheralPins.h" // PinMap_ADC で使用
MikamiUitOpen 0:c02c700a8ecf 14 // PeripheralPins.c が含まれるディレクトリ:
MikamiUitOpen 0:c02c700a8ecf 15 // mbed-dev\targets\TARGET_STM\TARGET_STM32F4\
MikamiUitOpen 0:c02c700a8ecf 16 // TARGET_STM32F446xE\TARGET_NUCLEO_F446RE
MikamiUitOpen 0:c02c700a8ecf 17
MikamiUitOpen 0:c02c700a8ecf 18 #ifndef STM32F446xx
MikamiUitOpen 0:c02c700a8ecf 19 #error Select NUCLEO-F446RE.
MikamiUitOpen 0:c02c700a8ecf 20 #endif
MikamiUitOpen 0:c02c700a8ecf 21
MikamiUitOpen 0:c02c700a8ecf 22 #ifndef F446_ADC_DUAL_HPP
MikamiUitOpen 0:c02c700a8ecf 23 #define F446_ADC_DUAL_HPP
MikamiUitOpen 0:c02c700a8ecf 24
MikamiUitOpen 0:c02c700a8ecf 25 namespace Mikami
MikamiUitOpen 0:c02c700a8ecf 26 {
MikamiUitOpen 0:c02c700a8ecf 27 class DspAdcDualBase
MikamiUitOpen 0:c02c700a8ecf 28 {
MikamiUitOpen 0:c02c700a8ecf 29 public:
MikamiUitOpen 0:c02c700a8ecf 30 // コンストラクタ
MikamiUitOpen 0:c02c700a8ecf 31 // fSampling 標本化周波数 [kHz]
MikamiUitOpen 0:c02c700a8ecf 32 // pinCh1 チャンネル 1 に対応する入力ピンの名前
MikamiUitOpen 0:c02c700a8ecf 33 // pinCh2 チャンネル 2 に対応する入力ピンの名前
MikamiUitOpen 0:c02c700a8ecf 34 DspAdcDualBase(float fSampling, PinName pinCh1, PinName pinCh2);
MikamiUitOpen 0:c02c700a8ecf 35
MikamiUitOpen 0:c02c700a8ecf 36 virtual ~DspAdcDualBase() {}
MikamiUitOpen 0:c02c700a8ecf 37
MikamiUitOpen 0:c02c700a8ecf 38 // AD 変換された値を読み込む
MikamiUitOpen 0:c02c700a8ecf 39 // -1.0f <= AD変換された値 < 1.0f
MikamiUitOpen 0:c02c700a8ecf 40 virtual void Read(float &ad1, float &ad2) const = 0; // 純粋仮想関数
MikamiUitOpen 0:c02c700a8ecf 41
MikamiUitOpen 1:e1c5baa559de 42 // AD 変換器の外部トリガに使うタイマ (TIM8) の設定
MikamiUitOpen 1:e1c5baa559de 43 // fSampling 標本化周波数 [kHz]
MikamiUitOpen 1:e1c5baa559de 44 void SetFs(float fSampling);
MikamiUitOpen 1:e1c5baa559de 45
MikamiUitOpen 0:c02c700a8ecf 46 protected:
MikamiUitOpen 0:c02c700a8ecf 47 ADC_TypeDef* adcCh1_; // チャンネル 1 の AD 変換器に対応する構造体のポインタ
MikamiUitOpen 0:c02c700a8ecf 48 ADC_TypeDef* adcCh2_; // チャンネル 2 の AD 変換器に対応する構造体のポインタ
MikamiUitOpen 0:c02c700a8ecf 49
MikamiUitOpen 0:c02c700a8ecf 50 float ToFloat(uint16_t x) const { return AMP_*(x - 2048); }
MikamiUitOpen 0:c02c700a8ecf 51
MikamiUitOpen 0:c02c700a8ecf 52 private:
MikamiUitOpen 0:c02c700a8ecf 53 static const float AMP_ = 1.0f/2048.0f;
MikamiUitOpen 0:c02c700a8ecf 54
MikamiUitOpen 0:c02c700a8ecf 55 // AD 変換器の初期設定
MikamiUitOpen 0:c02c700a8ecf 56 void Initialize(ADC_TypeDef* adc, PinName pin);
MikamiUitOpen 0:c02c700a8ecf 57
MikamiUitOpen 0:c02c700a8ecf 58 // pin に対応する AD 変換器が存在することを確認する
MikamiUitOpen 0:c02c700a8ecf 59 bool PinmapMatch(PinName pin, ADC_TypeDef* const adc);
MikamiUitOpen 0:c02c700a8ecf 60
MikamiUitOpen 0:c02c700a8ecf 61 // コピー・コンストラクタ,代入演算子の禁止のため
MikamiUitOpen 0:c02c700a8ecf 62 DspAdcDualBase(const DspAdcDualBase&);
MikamiUitOpen 0:c02c700a8ecf 63 DspAdcDualBase& operator=(const DspAdcDualBase&);
MikamiUitOpen 0:c02c700a8ecf 64 };
MikamiUitOpen 0:c02c700a8ecf 65 }
MikamiUitOpen 0:c02c700a8ecf 66 #endif // F446_ADC_DUAL_HPP