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