ファンクション・ジェネレータ

Dependencies:   mbed SerialTxRxIntr MyTicker7 Array_Matrix

Committer:
MikamiUitOpen
Date:
Sat Oct 17 10:05:58 2020 +0000
Revision:
0:17c762b41fc7
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:17c762b41fc7 1 //-------------------------------------------------------------
MikamiUitOpen 0:17c762b41fc7 2 // STM32F446 内蔵の DAC 用のクラス(ヘッダ)
MikamiUitOpen 0:17c762b41fc7 3 // 選択可能な入力端子:
MikamiUitOpen 0:17c762b41fc7 4 // A2 (PA_4): ---- デフォルト
MikamiUitOpen 0:17c762b41fc7 5 // D13 (PA_5): このポートはマイコンボードの LED も
MikamiUitOpen 0:17c762b41fc7 6 // ドライブするので使わない方がよい
MikamiUitOpen 0:17c762b41fc7 7 //
MikamiUitOpen 0:17c762b41fc7 8 // 2020/10/17, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:17c762b41fc7 9 //-------------------------------------------------------------
MikamiUitOpen 0:17c762b41fc7 10
MikamiUitOpen 0:17c762b41fc7 11 #include "mbed.h"
MikamiUitOpen 0:17c762b41fc7 12
MikamiUitOpen 0:17c762b41fc7 13 #ifndef STM32F446xx
MikamiUitOpen 0:17c762b41fc7 14 #error Not NUCLEO-F446RE.
MikamiUitOpen 0:17c762b41fc7 15 #endif
MikamiUitOpen 0:17c762b41fc7 16
MikamiUitOpen 0:17c762b41fc7 17 #ifndef F446_DAC_SINGLE_HPP
MikamiUitOpen 0:17c762b41fc7 18 #define F446_DAC_SINGLE_HPP
MikamiUitOpen 0:17c762b41fc7 19
MikamiUitOpen 0:17c762b41fc7 20 namespace Mikami
MikamiUitOpen 0:17c762b41fc7 21 {
MikamiUitOpen 0:17c762b41fc7 22 class DacF446
MikamiUitOpen 0:17c762b41fc7 23 {
MikamiUitOpen 0:17c762b41fc7 24 public:
MikamiUitOpen 0:17c762b41fc7 25 // コンストラクタ
MikamiUitOpen 0:17c762b41fc7 26 explicit DacF446(PinName pin = A2);
MikamiUitOpen 0:17c762b41fc7 27
MikamiUitOpen 0:17c762b41fc7 28 virtual ~DacF446() {}
MikamiUitOpen 0:17c762b41fc7 29
MikamiUitOpen 0:17c762b41fc7 30 // -1.0f <= data <= 1.0f
MikamiUitOpen 0:17c762b41fc7 31 void Write(float data) { WriteDac(ToUint16(data)); }
MikamiUitOpen 0:17c762b41fc7 32
MikamiUitOpen 0:17c762b41fc7 33 // 0 <= data <= 4095
MikamiUitOpen 0:17c762b41fc7 34 void Write(uint16_t data) { WriteDac(__USAT(data, BIT_WIDTH_)); }
MikamiUitOpen 0:17c762b41fc7 35
MikamiUitOpen 0:17c762b41fc7 36 private:
MikamiUitOpen 0:17c762b41fc7 37 void (DacF446::*fpWriteDac)(uint16_t);
MikamiUitOpen 0:17c762b41fc7 38
MikamiUitOpen 0:17c762b41fc7 39 static const int BIT_WIDTH_ = 12;
MikamiUitOpen 0:17c762b41fc7 40 AnalogOut da_;
MikamiUitOpen 0:17c762b41fc7 41
MikamiUitOpen 0:17c762b41fc7 42 // DAC の片方のチェンネルへ出力する
MikamiUitOpen 0:17c762b41fc7 43 void WriteDac1(uint16_t val) { DAC->DHR12R1 = val; } // CH1 へ
MikamiUitOpen 0:17c762b41fc7 44 void WriteDac2(uint16_t val) { DAC->DHR12R2 = val; } // CH2 へ
MikamiUitOpen 0:17c762b41fc7 45
MikamiUitOpen 0:17c762b41fc7 46 void WriteDac(uint16_t val) { (this->*fpWriteDac)(val); }
MikamiUitOpen 0:17c762b41fc7 47
MikamiUitOpen 0:17c762b41fc7 48 // 飽和処理を行い uint16_t 型のデータを戻り値とする
MikamiUitOpen 0:17c762b41fc7 49 uint16_t ToUint16(float val)
MikamiUitOpen 0:17c762b41fc7 50 { return __USAT((val + 1.0f)*2048.0f, BIT_WIDTH_); }
MikamiUitOpen 0:17c762b41fc7 51
MikamiUitOpen 0:17c762b41fc7 52 // コピー・コンストラクタ,代入演算子の禁止のため
MikamiUitOpen 0:17c762b41fc7 53 DacF446(const DacF446&);
MikamiUitOpen 0:17c762b41fc7 54 DacF446& operator=(const DacF446&);
MikamiUitOpen 0:17c762b41fc7 55 };
MikamiUitOpen 0:17c762b41fc7 56 }
MikamiUitOpen 0:17c762b41fc7 57 #endif // F446_DAC_SINGLE_HPP