Nucleo-F446RE 内蔵の AD/DA を使うためのライブラリ.DA からの出力は,標本化周波数の4倍のレートで行う.出力の補間フィルタには直線位相の FIR フィルタを使用. このライブラリを登録した際のプログラム: Demo_F446_AD_DA_MultirateLinearPhase. Library for built-in ADC and DAC in Nucleo-F446RE. Sampling rate for DAC is four times of that for ADC. Interpolation filter for output is linear-phase FIR filter.
Dependents: Demo_F446_AD_DA_MultirateLinearPhase
F446_ADC.hpp@0:ad30ac2b412b, 2018-07-03 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Jul 03 01:29:13 2018 +0000
- Revision:
- 0:ad30ac2b412b
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:ad30ac2b412b | 1 | //---------------------------------------------------------------- |
MikamiUitOpen | 0:ad30ac2b412b | 2 | // AD Conversion by interrupt using ADC2 or ADC3 on STM32F446 |
MikamiUitOpen | 0:ad30ac2b412b | 3 | // ---- Header ---- |
MikamiUitOpen | 0:ad30ac2b412b | 4 | // |
MikamiUitOpen | 0:ad30ac2b412b | 5 | // STM32F446 の ADC2 または ADC3 を使って割込みによりアナログ信号を |
MikamiUitOpen | 0:ad30ac2b412b | 6 | // 入力するクラス ― マルチ・レート処理用(ヘッダ) |
MikamiUitOpen | 0:ad30ac2b412b | 7 | // |
MikamiUitOpen | 0:ad30ac2b412b | 8 | // 選択可能な入力端子: |
MikamiUitOpen | 0:ad30ac2b412b | 9 | // A0 (PA_0) : ADC2 CH0 ---- デフォルト |
MikamiUitOpen | 0:ad30ac2b412b | 10 | // A1 (PA_1) : ADC3 CH1 |
MikamiUitOpen | 0:ad30ac2b412b | 11 | // |
MikamiUitOpen | 0:ad30ac2b412b | 12 | // 2018/04/16, Copyright (c) 2018 MIKAMI, Naoki |
MikamiUitOpen | 0:ad30ac2b412b | 13 | //---------------------------------------------------------------- |
MikamiUitOpen | 0:ad30ac2b412b | 14 | |
MikamiUitOpen | 0:ad30ac2b412b | 15 | #include "mbed.h" |
MikamiUitOpen | 0:ad30ac2b412b | 16 | |
MikamiUitOpen | 0:ad30ac2b412b | 17 | #ifndef STM32F446xx |
MikamiUitOpen | 0:ad30ac2b412b | 18 | #error Not NUCLEO-F446RE. |
MikamiUitOpen | 0:ad30ac2b412b | 19 | #endif |
MikamiUitOpen | 0:ad30ac2b412b | 20 | |
MikamiUitOpen | 0:ad30ac2b412b | 21 | #include "F446_DAC.hpp" |
MikamiUitOpen | 0:ad30ac2b412b | 22 | |
MikamiUitOpen | 0:ad30ac2b412b | 23 | #ifndef F446_ADC_SINGLE_HPP |
MikamiUitOpen | 0:ad30ac2b412b | 24 | #define F446_ADC_SINGLE_HPP |
MikamiUitOpen | 0:ad30ac2b412b | 25 | |
MikamiUitOpen | 0:ad30ac2b412b | 26 | namespace Mikami |
MikamiUitOpen | 0:ad30ac2b412b | 27 | { |
MikamiUitOpen | 0:ad30ac2b412b | 28 | class AdcF446 |
MikamiUitOpen | 0:ad30ac2b412b | 29 | { |
MikamiUitOpen | 0:ad30ac2b412b | 30 | public: |
MikamiUitOpen | 0:ad30ac2b412b | 31 | // コンストラクタ |
MikamiUitOpen | 0:ad30ac2b412b | 32 | // frequency: 標本化周波数 |
MikamiUitOpen | 0:ad30ac2b412b | 33 | AdcF446(int frequency, PinName pin = A0); |
MikamiUitOpen | 0:ad30ac2b412b | 34 | |
MikamiUitOpen | 0:ad30ac2b412b | 35 | virtual ~AdcF446() {} |
MikamiUitOpen | 0:ad30ac2b412b | 36 | |
MikamiUitOpen | 0:ad30ac2b412b | 37 | // -1.0f <= AD変換された値 < 1.0f |
MikamiUitOpen | 0:ad30ac2b412b | 38 | // ad1: left, ad2: right |
MikamiUitOpen | 0:ad30ac2b412b | 39 | float Read() { return ToFloat(adc_->DR); } |
MikamiUitOpen | 0:ad30ac2b412b | 40 | |
MikamiUitOpen | 0:ad30ac2b412b | 41 | // 割込みベクタを設定し,ADC 割込みを有効にする |
MikamiUitOpen | 0:ad30ac2b412b | 42 | void SetIntrVec(void (*Func)()); |
MikamiUitOpen | 0:ad30ac2b412b | 43 | |
MikamiUitOpen | 0:ad30ac2b412b | 44 | // ADC 割込みを無効にする |
MikamiUitOpen | 0:ad30ac2b412b | 45 | void DisableAdcIntr() |
MikamiUitOpen | 0:ad30ac2b412b | 46 | { NVIC_DisableIRQ(ADC_IRQn); } |
MikamiUitOpen | 0:ad30ac2b412b | 47 | |
MikamiUitOpen | 0:ad30ac2b412b | 48 | private: |
MikamiUitOpen | 0:ad30ac2b412b | 49 | static const float AMP_ = 1.0f/2048.0f; |
MikamiUitOpen | 0:ad30ac2b412b | 50 | ADC_TypeDef *adc_; |
MikamiUitOpen | 0:ad30ac2b412b | 51 | |
MikamiUitOpen | 0:ad30ac2b412b | 52 | float ToFloat(uint16_t x) { return AMP_*(x - 2048); } |
MikamiUitOpen | 0:ad30ac2b412b | 53 | |
MikamiUitOpen | 0:ad30ac2b412b | 54 | // AD 変換器の外部トリガに使うタイマ (TIM8) の設定 |
MikamiUitOpen | 0:ad30ac2b412b | 55 | void SetTim8(int frequency); |
MikamiUitOpen | 0:ad30ac2b412b | 56 | |
MikamiUitOpen | 0:ad30ac2b412b | 57 | // for inhibition of copy constructor |
MikamiUitOpen | 0:ad30ac2b412b | 58 | AdcF446(const AdcF446&); |
MikamiUitOpen | 0:ad30ac2b412b | 59 | // for inhibition of substitute operator |
MikamiUitOpen | 0:ad30ac2b412b | 60 | AdcF446& operator=(const AdcF446&); |
MikamiUitOpen | 0:ad30ac2b412b | 61 | }; |
MikamiUitOpen | 0:ad30ac2b412b | 62 | } |
MikamiUitOpen | 0:ad30ac2b412b | 63 | #endif // F446_ADC_SINGLE_HPP |