Library for build-in ADC and DAC in STM32F446 mounted on Nucleo F446RE. Nucleo F446RE に搭載されている STM32F446 の内蔵 ADC, DAC 用のライブラリ.

Dependents:   Demo_F446_AD_DA F446_MySoundMachine F446_ADF_Nlms F446_Spectrogram

Committer:
MikamiUitOpen
Date:
Mon Jan 30 08:12:44 2017 +0000
Revision:
3:d1da91aec62f
Parent:
2:29f9831ce719
Child:
4:16667bdb8227
4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:c945b4fe9a48 1 //----------------------------------------------------------
MikamiUitOpen 0:c945b4fe9a48 2 // Simultanuous AD Conversion by polling using
MikamiUitOpen 0:c945b4fe9a48 3 // ADC2 and ADC3 on STM32F446 ---- Header
MikamiUitOpen 0:c945b4fe9a48 4 //
MikamiUitOpen 0:c945b4fe9a48 5 // STM32F446 の ADC2, ADC3 を使って同時に AD 変換を開始し,
MikamiUitOpen 0:c945b4fe9a48 6 // ポーリングによりアナログ信号を入力するクラス(ヘッダ)
MikamiUitOpen 1:6b9f2af6613d 7 // A0 (PA_0) : ADC2 CH0, 左
MikamiUitOpen 1:6b9f2af6613d 8 // A1 (PA_1) : ADC3 CH1, 右
MikamiUitOpen 1:6b9f2af6613d 9 // Read(), Write() の引数:
MikamiUitOpen 1:6b9f2af6613d 10 // 第一引数:A0 (左),第二引数:A1 (右)
MikamiUitOpen 0:c945b4fe9a48 11 //
MikamiUitOpen 2:29f9831ce719 12 // 2017/01/30, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:c945b4fe9a48 13 //----------------------------------------------------------
MikamiUitOpen 0:c945b4fe9a48 14
MikamiUitOpen 0:c945b4fe9a48 15 #include "mbed.h"
MikamiUitOpen 0:c945b4fe9a48 16
MikamiUitOpen 0:c945b4fe9a48 17 #ifndef STM32F446xx
MikamiUitOpen 3:d1da91aec62f 18 #error Select NUCLEO-F446RE.
MikamiUitOpen 0:c945b4fe9a48 19 #endif
MikamiUitOpen 0:c945b4fe9a48 20
MikamiUitOpen 3:d1da91aec62f 21 #include "F446_DAC.hpp"
MikamiUitOpen 3:d1da91aec62f 22
MikamiUitOpen 0:c945b4fe9a48 23 #ifndef F446_ADC_DUAL_HPP
MikamiUitOpen 0:c945b4fe9a48 24 #define F446_ADC_DUAL_HPP
MikamiUitOpen 0:c945b4fe9a48 25
MikamiUitOpen 0:c945b4fe9a48 26 namespace Mikami
MikamiUitOpen 0:c945b4fe9a48 27 {
MikamiUitOpen 0:c945b4fe9a48 28 class AdcDual
MikamiUitOpen 0:c945b4fe9a48 29 {
MikamiUitOpen 0:c945b4fe9a48 30 public:
MikamiUitOpen 0:c945b4fe9a48 31 // Constructor
MikamiUitOpen 0:c945b4fe9a48 32 // frequency: 標本化周波数
MikamiUitOpen 0:c945b4fe9a48 33 explicit AdcDual(int frequency);
MikamiUitOpen 0:c945b4fe9a48 34
MikamiUitOpen 1:6b9f2af6613d 35 // -1.0f <= ad1, ad2 <= 1.0f
MikamiUitOpen 1:6b9f2af6613d 36 // ad1: left, ad2: right
MikamiUitOpen 0:c945b4fe9a48 37 virtual void Read(float &ad1, float &ad2);
MikamiUitOpen 0:c945b4fe9a48 38
MikamiUitOpen 1:6b9f2af6613d 39 // 0 <= ad1, ad2 <= 4095
MikamiUitOpen 1:6b9f2af6613d 40 // ad1: left, ad2: right
MikamiUitOpen 0:c945b4fe9a48 41 virtual void Read(uint16_t &ad1, uint16_t &ad2);
MikamiUitOpen 0:c945b4fe9a48 42
MikamiUitOpen 0:c945b4fe9a48 43 protected:
MikamiUitOpen 0:c945b4fe9a48 44 float ToFloat(uint16_t x)
MikamiUitOpen 0:c945b4fe9a48 45 { return AMP_*(x - 2048); }
MikamiUitOpen 0:c945b4fe9a48 46
MikamiUitOpen 0:c945b4fe9a48 47 private:
MikamiUitOpen 0:c945b4fe9a48 48 static const float AMP_ = 1.0f/2048.0f;
MikamiUitOpen 0:c945b4fe9a48 49 static const uint32_t EOC23_ = ADC_CSR_EOC2 | ADC_CSR_EOC3;
MikamiUitOpen 0:c945b4fe9a48 50
MikamiUitOpen 0:c945b4fe9a48 51 // AD 変換が完了するまで待つ
MikamiUitOpen 0:c945b4fe9a48 52 void WaitDone()
MikamiUitOpen 0:c945b4fe9a48 53 { while((ADC->CSR & EOC23_) != EOC23_); }
MikamiUitOpen 0:c945b4fe9a48 54
MikamiUitOpen 0:c945b4fe9a48 55 // AD 変換器の外部トリガに使うタイマ (TIM8) の設定
MikamiUitOpen 0:c945b4fe9a48 56 void SetTim8(int frequency);
MikamiUitOpen 0:c945b4fe9a48 57
MikamiUitOpen 0:c945b4fe9a48 58 // for inhibition of copy constructor
MikamiUitOpen 0:c945b4fe9a48 59 AdcDual(const AdcDual&);
MikamiUitOpen 0:c945b4fe9a48 60 // for inhibition of substitute operator
MikamiUitOpen 0:c945b4fe9a48 61 AdcDual& operator=(const AdcDual&);
MikamiUitOpen 0:c945b4fe9a48 62 };
MikamiUitOpen 0:c945b4fe9a48 63 }
MikamiUitOpen 1:6b9f2af6613d 64 #endif // F446_ADC_DUAL_HPP