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
DSP_AdcDualBase.hpp@0:c02c700a8ecf, 2020-09-22 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Sep 22 04:52:53 2020 +0000
- Revision:
- 0:c02c700a8ecf
- Child:
- 1:e1c5baa559de
1
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:c02c700a8ecf | 9 | // 2020/09/22, 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 | 0:c02c700a8ecf | 42 | protected: |
MikamiUitOpen | 0:c02c700a8ecf | 43 | ADC_TypeDef* adcCh1_; // チャンネル 1 の AD 変換器に対応する構造体のポインタ |
MikamiUitOpen | 0:c02c700a8ecf | 44 | ADC_TypeDef* adcCh2_; // チャンネル 2 の AD 変換器に対応する構造体のポインタ |
MikamiUitOpen | 0:c02c700a8ecf | 45 | |
MikamiUitOpen | 0:c02c700a8ecf | 46 | float ToFloat(uint16_t x) const { return AMP_*(x - 2048); } |
MikamiUitOpen | 0:c02c700a8ecf | 47 | |
MikamiUitOpen | 0:c02c700a8ecf | 48 | private: |
MikamiUitOpen | 0:c02c700a8ecf | 49 | static const float AMP_ = 1.0f/2048.0f; |
MikamiUitOpen | 0:c02c700a8ecf | 50 | |
MikamiUitOpen | 0:c02c700a8ecf | 51 | // AD 変換器の初期設定 |
MikamiUitOpen | 0:c02c700a8ecf | 52 | void Initialize(ADC_TypeDef* adc, PinName pin); |
MikamiUitOpen | 0:c02c700a8ecf | 53 | |
MikamiUitOpen | 0:c02c700a8ecf | 54 | // AD 変換器の外部トリガに使うタイマ (TIM8) の設定 |
MikamiUitOpen | 0:c02c700a8ecf | 55 | // fSampling 標本化周波数 [kHz] |
MikamiUitOpen | 0:c02c700a8ecf | 56 | void SetTim8(float fSampling); |
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 |