STM32F446 の内蔵 ADC, DAC を 2 チャンネルで使うためのライブラリ.このライブラリを登録した際のプログラム: Demo_DSP_ADDA_Dual. Library for build-in ADC and DAC in STM32F446 using with dual channels.
Dependents: F446_DSP_Oscilloscope Demo_DSP_ADDA_Dual TrG_Oscilloscope
DSP_DacDual.hpp@3:a3148d75c1ea, 2021-06-29 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Jun 29 00:58:39 2021 +0000
- Revision:
- 3:a3148d75c1ea
- Parent:
- 0:c02c700a8ecf
4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:c02c700a8ecf | 1 | //-------------------------------------------------------- |
MikamiUitOpen | 0:c02c700a8ecf | 2 | // STM32F446 内蔵の DAC 用のクラス(ヘッダ) |
MikamiUitOpen | 0:c02c700a8ecf | 3 | // A2 (PA_4): 左 |
MikamiUitOpen | 0:c02c700a8ecf | 4 | // D13 (PA_5): 右 |
MikamiUitOpen | 0:c02c700a8ecf | 5 | // |
MikamiUitOpen | 0:c02c700a8ecf | 6 | // 2020/09/22, Copyright (c) 2020 MIKAMI, Naoki |
MikamiUitOpen | 0:c02c700a8ecf | 7 | //-------------------------------------------------------- |
MikamiUitOpen | 0:c02c700a8ecf | 8 | |
MikamiUitOpen | 0:c02c700a8ecf | 9 | #include "mbed.h" |
MikamiUitOpen | 0:c02c700a8ecf | 10 | #include "PeripheralPins.h" // pin_function() で使用 |
MikamiUitOpen | 0:c02c700a8ecf | 11 | // PeripheralPins.c が含まれるディレクトリ: |
MikamiUitOpen | 0:c02c700a8ecf | 12 | // mbed-dev\targets\TARGET_STM\TARGET_STM32F4\ |
MikamiUitOpen | 0:c02c700a8ecf | 13 | // TARGET_STM32F446xE\TARGET_NUCLEO_F446RE |
MikamiUitOpen | 0:c02c700a8ecf | 14 | |
MikamiUitOpen | 0:c02c700a8ecf | 15 | #ifndef STM32F446xx |
MikamiUitOpen | 0:c02c700a8ecf | 16 | #error Select NUCLEO-F446RE. |
MikamiUitOpen | 0:c02c700a8ecf | 17 | #endif |
MikamiUitOpen | 0:c02c700a8ecf | 18 | |
MikamiUitOpen | 0:c02c700a8ecf | 19 | #ifndef F446_DAC_DUAL_HPP |
MikamiUitOpen | 0:c02c700a8ecf | 20 | #define F446_DAC_DUAL_HPP |
MikamiUitOpen | 0:c02c700a8ecf | 21 | |
MikamiUitOpen | 0:c02c700a8ecf | 22 | namespace Mikami |
MikamiUitOpen | 0:c02c700a8ecf | 23 | { |
MikamiUitOpen | 0:c02c700a8ecf | 24 | class DspDacDual |
MikamiUitOpen | 0:c02c700a8ecf | 25 | { |
MikamiUitOpen | 0:c02c700a8ecf | 26 | public: |
MikamiUitOpen | 0:c02c700a8ecf | 27 | // コンストラクタ |
MikamiUitOpen | 0:c02c700a8ecf | 28 | DspDacDual(); |
MikamiUitOpen | 0:c02c700a8ecf | 29 | |
MikamiUitOpen | 0:c02c700a8ecf | 30 | virtual ~DspDacDual() {} |
MikamiUitOpen | 0:c02c700a8ecf | 31 | |
MikamiUitOpen | 0:c02c700a8ecf | 32 | // -1.0f <= data1, data2 <= 1.0f |
MikamiUitOpen | 0:c02c700a8ecf | 33 | void Write(float data1, float data2) |
MikamiUitOpen | 0:c02c700a8ecf | 34 | { WriteDac(ToUint16(data1), ToUint16(data2)); } |
MikamiUitOpen | 0:c02c700a8ecf | 35 | |
MikamiUitOpen | 0:c02c700a8ecf | 36 | // 0 <= data1, data2 <= 4095 |
MikamiUitOpen | 0:c02c700a8ecf | 37 | void Write(uint16_t data1, uint16_t data2) |
MikamiUitOpen | 0:c02c700a8ecf | 38 | { WriteDac(__USAT(data1, BIT_WIDTH_), |
MikamiUitOpen | 0:c02c700a8ecf | 39 | __USAT(data2, BIT_WIDTH_)); } |
MikamiUitOpen | 0:c02c700a8ecf | 40 | |
MikamiUitOpen | 0:c02c700a8ecf | 41 | private: |
MikamiUitOpen | 0:c02c700a8ecf | 42 | static const int BIT_WIDTH_ = 12; |
MikamiUitOpen | 0:c02c700a8ecf | 43 | DAC_TypeDef* const DAC_; // DA 変換器に対応する構造体のポインタ |
MikamiUitOpen | 0:c02c700a8ecf | 44 | |
MikamiUitOpen | 0:c02c700a8ecf | 45 | // float 型のデータを uint16_t 型に変換,飽和処理付き |
MikamiUitOpen | 0:c02c700a8ecf | 46 | uint16_t ToUint16(float val) |
MikamiUitOpen | 0:c02c700a8ecf | 47 | { return __USAT((val + 1.0f)*2047.0f, BIT_WIDTH_); } |
MikamiUitOpen | 0:c02c700a8ecf | 48 | |
MikamiUitOpen | 0:c02c700a8ecf | 49 | // 2チャンネル分を同時に DAC に書き込む |
MikamiUitOpen | 0:c02c700a8ecf | 50 | void WriteDac(uint16_t val1, uint16_t val2) |
MikamiUitOpen | 0:c02c700a8ecf | 51 | { DAC->DHR12RD = __PKHBT(val1, val2, 16); } |
MikamiUitOpen | 0:c02c700a8ecf | 52 | |
MikamiUitOpen | 0:c02c700a8ecf | 53 | // コピー・コンストラクタ,代入演算子の禁止のため |
MikamiUitOpen | 0:c02c700a8ecf | 54 | DspDacDual(const DspDacDual&); |
MikamiUitOpen | 0:c02c700a8ecf | 55 | DspDacDual& operator=(const DspDacDual&); |
MikamiUitOpen | 0:c02c700a8ecf | 56 | }; |
MikamiUitOpen | 0:c02c700a8ecf | 57 | } |
MikamiUitOpen | 0:c02c700a8ecf | 58 | #endif // F446_DAC_DUAL_HPP |