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:
Sat Feb 18 05:37:31 2017 +0000
Revision:
4:16667bdb8227
Parent:
3:d1da91aec62f
5

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 4:16667bdb8227 12 // 2017/02/16, 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 4:16667bdb8227 34
MikamiUitOpen 4:16667bdb8227 35 virtual ~AdcDual() {}
MikamiUitOpen 0:c945b4fe9a48 36
MikamiUitOpen 1:6b9f2af6613d 37 // -1.0f <= ad1, ad2 <= 1.0f
MikamiUitOpen 1:6b9f2af6613d 38 // ad1: left, ad2: right
MikamiUitOpen 0:c945b4fe9a48 39 virtual void Read(float &ad1, float &ad2);
MikamiUitOpen 0:c945b4fe9a48 40
MikamiUitOpen 1:6b9f2af6613d 41 // 0 <= ad1, ad2 <= 4095
MikamiUitOpen 1:6b9f2af6613d 42 // ad1: left, ad2: right
MikamiUitOpen 0:c945b4fe9a48 43 virtual void Read(uint16_t &ad1, uint16_t &ad2);
MikamiUitOpen 0:c945b4fe9a48 44
MikamiUitOpen 0:c945b4fe9a48 45 protected:
MikamiUitOpen 0:c945b4fe9a48 46 float ToFloat(uint16_t x)
MikamiUitOpen 0:c945b4fe9a48 47 { return AMP_*(x - 2048); }
MikamiUitOpen 0:c945b4fe9a48 48
MikamiUitOpen 0:c945b4fe9a48 49 private:
MikamiUitOpen 0:c945b4fe9a48 50 static const float AMP_ = 1.0f/2048.0f;
MikamiUitOpen 0:c945b4fe9a48 51 static const uint32_t EOC23_ = ADC_CSR_EOC2 | ADC_CSR_EOC3;
MikamiUitOpen 0:c945b4fe9a48 52
MikamiUitOpen 0:c945b4fe9a48 53 // AD 変換が完了するまで待つ
MikamiUitOpen 0:c945b4fe9a48 54 void WaitDone()
MikamiUitOpen 0:c945b4fe9a48 55 { while((ADC->CSR & EOC23_) != EOC23_); }
MikamiUitOpen 0:c945b4fe9a48 56
MikamiUitOpen 0:c945b4fe9a48 57 // AD 変換器の外部トリガに使うタイマ (TIM8) の設定
MikamiUitOpen 0:c945b4fe9a48 58 void SetTim8(int frequency);
MikamiUitOpen 0:c945b4fe9a48 59
MikamiUitOpen 0:c945b4fe9a48 60 // for inhibition of copy constructor
MikamiUitOpen 0:c945b4fe9a48 61 AdcDual(const AdcDual&);
MikamiUitOpen 0:c945b4fe9a48 62 // for inhibition of substitute operator
MikamiUitOpen 0:c945b4fe9a48 63 AdcDual& operator=(const AdcDual&);
MikamiUitOpen 0:c945b4fe9a48 64 };
MikamiUitOpen 0:c945b4fe9a48 65 }
MikamiUitOpen 1:6b9f2af6613d 66 #endif // F446_ADC_DUAL_HPP