Nucleo-F446RE 内蔵の AD/DA を使うためのライブラリ.DA からの出力は,標本化周波数の4倍のレートで行う.出力の補間フィルタには直線位相の FIR フィルタを使用. このライブラリを登録した際のプログラム: Demo_F446_AD_DA_MultirateLinearPhase. Library for built-in ADC and DAC in Nucleo-F446RE. Sampling rate for DAC is four times of that for ADC. Interpolation filter for output is linear-phase FIR filter.
Dependents: Demo_F446_AD_DA_MultirateLinearPhase
F446_DAC.hpp@0:ad30ac2b412b, 2018-07-03 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Jul 03 01:29:13 2018 +0000
- Revision:
- 0:ad30ac2b412b
- Child:
- 1:cd42ecc1e174
1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:ad30ac2b412b | 1 | //-------------------------------------------------------- |
MikamiUitOpen | 0:ad30ac2b412b | 2 | // Class for buit-in single DAC on STM32F446 ---- Header |
MikamiUitOpen | 0:ad30ac2b412b | 3 | // |
MikamiUitOpen | 0:ad30ac2b412b | 4 | // STM32F446 内蔵の DAC 用のクラス(ヘッダ) |
MikamiUitOpen | 0:ad30ac2b412b | 5 | // 選択可能な入力端子: |
MikamiUitOpen | 0:ad30ac2b412b | 6 | // A2 (PA_4): ---- デフォルト |
MikamiUitOpen | 0:ad30ac2b412b | 7 | // D13 (PA_5): このポートはマイコンボードの LED もドライブするので |
MikamiUitOpen | 0:ad30ac2b412b | 8 | // このポートは使わない方がよい |
MikamiUitOpen | 0:ad30ac2b412b | 9 | // |
MikamiUitOpen | 0:ad30ac2b412b | 10 | // 2018/05/16, Copyright (c) 2018 MIKAMI, Naoki |
MikamiUitOpen | 0:ad30ac2b412b | 11 | //-------------------------------------------------------- |
MikamiUitOpen | 0:ad30ac2b412b | 12 | |
MikamiUitOpen | 0:ad30ac2b412b | 13 | #include "mbed.h" |
MikamiUitOpen | 0:ad30ac2b412b | 14 | |
MikamiUitOpen | 0:ad30ac2b412b | 15 | #ifndef STM32F446xx |
MikamiUitOpen | 0:ad30ac2b412b | 16 | #error Not NUCLEO-F446RE. |
MikamiUitOpen | 0:ad30ac2b412b | 17 | #endif |
MikamiUitOpen | 0:ad30ac2b412b | 18 | |
MikamiUitOpen | 0:ad30ac2b412b | 19 | #ifndef F446_DAC_SINGLE_HPP |
MikamiUitOpen | 0:ad30ac2b412b | 20 | #define F446_DAC_SINGLE_HPP |
MikamiUitOpen | 0:ad30ac2b412b | 21 | |
MikamiUitOpen | 0:ad30ac2b412b | 22 | namespace Mikami |
MikamiUitOpen | 0:ad30ac2b412b | 23 | { |
MikamiUitOpen | 0:ad30ac2b412b | 24 | class DacF446 |
MikamiUitOpen | 0:ad30ac2b412b | 25 | { |
MikamiUitOpen | 0:ad30ac2b412b | 26 | public: |
MikamiUitOpen | 0:ad30ac2b412b | 27 | // Constructor |
MikamiUitOpen | 0:ad30ac2b412b | 28 | explicit DacF446(PinName pin = A2); |
MikamiUitOpen | 0:ad30ac2b412b | 29 | |
MikamiUitOpen | 0:ad30ac2b412b | 30 | virtual ~DacF446() {} |
MikamiUitOpen | 0:ad30ac2b412b | 31 | |
MikamiUitOpen | 0:ad30ac2b412b | 32 | // -1.0f <= data <= 1.0f |
MikamiUitOpen | 0:ad30ac2b412b | 33 | void Write(float data) { WriteDac(ToUint16(data)); } |
MikamiUitOpen | 0:ad30ac2b412b | 34 | |
MikamiUitOpen | 0:ad30ac2b412b | 35 | // 0 <= data1<= 4095 |
MikamiUitOpen | 0:ad30ac2b412b | 36 | void Write(uint16_t data) { WriteDac(__USAT(data, BIT_WIDTH_)); } |
MikamiUitOpen | 0:ad30ac2b412b | 37 | |
MikamiUitOpen | 0:ad30ac2b412b | 38 | private: |
MikamiUitOpen | 0:ad30ac2b412b | 39 | void (DacF446::*fpWriteDac)(uint16_t); |
MikamiUitOpen | 0:ad30ac2b412b | 40 | |
MikamiUitOpen | 0:ad30ac2b412b | 41 | static const int BIT_WIDTH_ = 12; |
MikamiUitOpen | 0:ad30ac2b412b | 42 | AnalogOut da_; |
MikamiUitOpen | 0:ad30ac2b412b | 43 | |
MikamiUitOpen | 0:ad30ac2b412b | 44 | // DAC の片方のチェンネルへ出力する |
MikamiUitOpen | 0:ad30ac2b412b | 45 | void WriteDac1(uint16_t val); // CH1 へ |
MikamiUitOpen | 0:ad30ac2b412b | 46 | void WriteDac2(uint16_t val); // CH2 へ |
MikamiUitOpen | 0:ad30ac2b412b | 47 | |
MikamiUitOpen | 0:ad30ac2b412b | 48 | void WriteDac(uint16_t val) { (this->*fpWriteDac)(val); } |
MikamiUitOpen | 0:ad30ac2b412b | 49 | |
MikamiUitOpen | 0:ad30ac2b412b | 50 | // 飽和処理を行い uint16_t 型のデータを戻り値とする |
MikamiUitOpen | 0:ad30ac2b412b | 51 | uint16_t ToUint16(float val) |
MikamiUitOpen | 0:ad30ac2b412b | 52 | { return __USAT((val + 1.0f)*2048.0f, BIT_WIDTH_); } |
MikamiUitOpen | 0:ad30ac2b412b | 53 | |
MikamiUitOpen | 0:ad30ac2b412b | 54 | // for inhibition of copy constructor |
MikamiUitOpen | 0:ad30ac2b412b | 55 | DacF446(const DacF446&); |
MikamiUitOpen | 0:ad30ac2b412b | 56 | // for inhibition of substitute operator |
MikamiUitOpen | 0:ad30ac2b412b | 57 | DacF446& operator=(const DacF446&); |
MikamiUitOpen | 0:ad30ac2b412b | 58 | }; |
MikamiUitOpen | 0:ad30ac2b412b | 59 | } |
MikamiUitOpen | 0:ad30ac2b412b | 60 | #endif // F446_DAC_SINGLE_HPP |