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
Revision 1:cd42ecc1e174, committed 2018-11-28
- Comitter:
- MikamiUitOpen
- Date:
- Wed Nov 28 12:45:18 2018 +0000
- Parent:
- 0:ad30ac2b412b
- Commit message:
- 2
Changed in this revision
F446_DAC.cpp | Show annotated file Show diff for this revision Revisions of this file |
F446_DAC.hpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r ad30ac2b412b -r cd42ecc1e174 F446_DAC.cpp --- a/F446_DAC.cpp Tue Jul 03 01:29:13 2018 +0000 +++ b/F446_DAC.cpp Wed Nov 28 12:45:18 2018 +0000 @@ -5,7 +5,7 @@ // DAC_OUT1: A2 (PA_4) // DAC_OUT2: D13 (PA_5) // -// 2018/04/16, Copyright (c) 2018 MIKAMI, Naoki +// 2018/11/28, Copyright (c) 2018 MIKAMI, Naoki //-------------------------------------------------------- #include "F446_DAC.hpp" @@ -21,26 +21,14 @@ } if (pin == A2) { - DAC->CR = DAC_CR_EN1 | DAC_CR_TEN1 | DAC_CR_TSEL1; + DAC->CR = DAC_CR_EN1; fpWriteDac = &DacF446::WriteDac1; } else { - DAC->CR = DAC_CR_EN2 | DAC_CR_TEN2 | DAC_CR_TSEL2; + DAC->CR = DAC_CR_EN2; fpWriteDac = &DacF446::WriteDac2; } } +} - // DAC の CH1 へ出力する - void DacF446::WriteDac1(uint16_t val) - { - DAC->DHR12R1 = val; - DAC->SWTRIGR = DAC_SWTRIGR_SWTRIG1; - } - // DAC の CH2 へ出力する - void DacF446::WriteDac2(uint16_t val) - { - DAC->DHR12R2 = val; - DAC->SWTRIGR = DAC_SWTRIGR_SWTRIG2; - } -}
diff -r ad30ac2b412b -r cd42ecc1e174 F446_DAC.hpp --- a/F446_DAC.hpp Tue Jul 03 01:29:13 2018 +0000 +++ b/F446_DAC.hpp Wed Nov 28 12:45:18 2018 +0000 @@ -7,7 +7,7 @@ // D13 (PA_5): このポートはマイコンボードの LED もドライブするので // このポートは使わない方がよい // -// 2018/05/16, Copyright (c) 2018 MIKAMI, Naoki +// 2018/11/28, Copyright (c) 2018 MIKAMI, Naoki //-------------------------------------------------------- #include "mbed.h" @@ -32,7 +32,7 @@ // -1.0f <= data <= 1.0f void Write(float data) { WriteDac(ToUint16(data)); } - // 0 <= data1<= 4095 + // 0 <= data <= 4095 void Write(uint16_t data) { WriteDac(__USAT(data, BIT_WIDTH_)); } private: @@ -42,8 +42,8 @@ AnalogOut da_; // DAC の片方のチェンネルへ出力する - void WriteDac1(uint16_t val); // CH1 へ - void WriteDac2(uint16_t val); // CH2 へ + void WriteDac1(uint16_t val) { DAC->DHR12R1 = val; } // CH1 へ + void WriteDac2(uint16_t val) { DAC->DHR12R2 = val; } // CH2 へ void WriteDac(uint16_t val) { (this->*fpWriteDac)(val); } @@ -58,3 +58,4 @@ }; } #endif // F446_DAC_SINGLE_HPP +