Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Demo_F446_AD_DA_Single F446ZE-mbed-devfiles
F446_DAC_Single.hpp@0:2a5690e56a16, 2017-02-21 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Tue Feb 21 00:40:10 2017 +0000
- Revision:
- 0:2a5690e56a16
1
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MikamiUitOpen | 0:2a5690e56a16 | 1 | //-------------------------------------------------------- |
| MikamiUitOpen | 0:2a5690e56a16 | 2 | // Class for buit-in single DAC on STM32F446 ---- Header |
| MikamiUitOpen | 0:2a5690e56a16 | 3 | // TIM3 is used for clock to external SCF |
| MikamiUitOpen | 0:2a5690e56a16 | 4 | // |
| MikamiUitOpen | 0:2a5690e56a16 | 5 | // STM32F446 内蔵の DAC 用のクラス(ヘッダ) |
| MikamiUitOpen | 0:2a5690e56a16 | 6 | // TIM3 を外付けの SCF のクロックとして使用 |
| MikamiUitOpen | 0:2a5690e56a16 | 7 | // A2 (PA_4): 左 ---- デフォルト |
| MikamiUitOpen | 0:2a5690e56a16 | 8 | // D13 (PA_5): 右 |
| MikamiUitOpen | 0:2a5690e56a16 | 9 | // |
| MikamiUitOpen | 0:2a5690e56a16 | 10 | // 2017/02/21, Copyright (c) 2017 MIKAMI, Naoki |
| MikamiUitOpen | 0:2a5690e56a16 | 11 | //-------------------------------------------------------- |
| MikamiUitOpen | 0:2a5690e56a16 | 12 | |
| MikamiUitOpen | 0:2a5690e56a16 | 13 | #include "mbed.h" |
| MikamiUitOpen | 0:2a5690e56a16 | 14 | |
| MikamiUitOpen | 0:2a5690e56a16 | 15 | #ifndef STM32F446xx |
| MikamiUitOpen | 0:2a5690e56a16 | 16 | #error Select NUCLEO-F446RE. |
| MikamiUitOpen | 0:2a5690e56a16 | 17 | #endif |
| MikamiUitOpen | 0:2a5690e56a16 | 18 | |
| MikamiUitOpen | 0:2a5690e56a16 | 19 | #ifndef F446_DAC_SINGLE_HPP |
| MikamiUitOpen | 0:2a5690e56a16 | 20 | #define F446_DAC_SINGLE_HPP |
| MikamiUitOpen | 0:2a5690e56a16 | 21 | |
| MikamiUitOpen | 0:2a5690e56a16 | 22 | namespace Mikami |
| MikamiUitOpen | 0:2a5690e56a16 | 23 | { |
| MikamiUitOpen | 0:2a5690e56a16 | 24 | class DacSingle |
| MikamiUitOpen | 0:2a5690e56a16 | 25 | { |
| MikamiUitOpen | 0:2a5690e56a16 | 26 | public: |
| MikamiUitOpen | 0:2a5690e56a16 | 27 | // Constructor |
| MikamiUitOpen | 0:2a5690e56a16 | 28 | DacSingle(PinName pin = A2); |
| MikamiUitOpen | 0:2a5690e56a16 | 29 | |
| MikamiUitOpen | 0:2a5690e56a16 | 30 | virtual ~DacSingle() {} |
| MikamiUitOpen | 0:2a5690e56a16 | 31 | |
| MikamiUitOpen | 0:2a5690e56a16 | 32 | // -1.0f <= data <= 1.0f |
| MikamiUitOpen | 0:2a5690e56a16 | 33 | void Write(float data) { WriteDac(ToUint16(data)); } |
| MikamiUitOpen | 0:2a5690e56a16 | 34 | |
| MikamiUitOpen | 0:2a5690e56a16 | 35 | // 0 <= data1<= 4095 |
| MikamiUitOpen | 0:2a5690e56a16 | 36 | void Write(uint16_t data) { WriteDac(__USAT(data, BIT_WIDTH_)); } |
| MikamiUitOpen | 0:2a5690e56a16 | 37 | |
| MikamiUitOpen | 0:2a5690e56a16 | 38 | // Set TIM3 for clock of switched-capacitor filter |
| MikamiUitOpen | 0:2a5690e56a16 | 39 | void ScfClock(uint32_t clock); |
| MikamiUitOpen | 0:2a5690e56a16 | 40 | |
| MikamiUitOpen | 0:2a5690e56a16 | 41 | private: |
| MikamiUitOpen | 0:2a5690e56a16 | 42 | void (DacSingle::*fpWriteDac)(uint16_t); |
| MikamiUitOpen | 0:2a5690e56a16 | 43 | |
| MikamiUitOpen | 0:2a5690e56a16 | 44 | static const int BIT_WIDTH_ = 12; |
| MikamiUitOpen | 0:2a5690e56a16 | 45 | AnalogOut da_; |
| MikamiUitOpen | 0:2a5690e56a16 | 46 | |
| MikamiUitOpen | 0:2a5690e56a16 | 47 | // Write single-channel data |
| MikamiUitOpen | 0:2a5690e56a16 | 48 | void WriteDac1(uint16_t val); |
| MikamiUitOpen | 0:2a5690e56a16 | 49 | void WriteDac2(uint16_t val); |
| MikamiUitOpen | 0:2a5690e56a16 | 50 | |
| MikamiUitOpen | 0:2a5690e56a16 | 51 | void WriteDac(uint16_t val) { (this->*fpWriteDac)(val); } |
| MikamiUitOpen | 0:2a5690e56a16 | 52 | |
| MikamiUitOpen | 0:2a5690e56a16 | 53 | // Saturate float to an unsigned 16-bit value |
| MikamiUitOpen | 0:2a5690e56a16 | 54 | uint16_t ToUint16(float val) |
| MikamiUitOpen | 0:2a5690e56a16 | 55 | { return __USAT((val + 1.0f)*2047.0f, BIT_WIDTH_); } |
| MikamiUitOpen | 0:2a5690e56a16 | 56 | |
| MikamiUitOpen | 0:2a5690e56a16 | 57 | // for inhibition of copy constructor |
| MikamiUitOpen | 0:2a5690e56a16 | 58 | DacSingle(const DacSingle&); |
| MikamiUitOpen | 0:2a5690e56a16 | 59 | // for inhibition of substitute operator |
| MikamiUitOpen | 0:2a5690e56a16 | 60 | DacSingle& operator=(const DacSingle&); |
| MikamiUitOpen | 0:2a5690e56a16 | 61 | }; |
| MikamiUitOpen | 0:2a5690e56a16 | 62 | } |
| MikamiUitOpen | 0:2a5690e56a16 | 63 | #endif // F446_DAC_SINGLEL_HPP |