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