Nucleo-F446RE 内蔵の AD/DA を使うためのライブラリ.DA からの出力は,標本化周波数の4倍のレートで行う. このライブラリを登録した際のプログラム: Demo_F446_AD_DA_Multirate. Library for built-in ADC and DAC in Nucleo-F446RE. Sampling rate for DAC is four times of that for ADC.
Dependents: F446_UpSampling_GraphicEqualizer F446_UpSampling_ReverbSystem F446_UpSampling_FrqShifter_Weaver Demo_F446_AD_DA_Multirate ... more
Diff: F446_Multirate.hpp
- Revision:
- 3:285cebe5823c
- Parent:
- 2:b55ae17ffd92
- Child:
- 4:c853feefa216
--- a/F446_Multirate.hpp Sat May 19 04:37:02 2018 +0000 +++ b/F446_Multirate.hpp Wed May 30 09:09:04 2018 +0000 @@ -5,7 +5,7 @@ // 入力端子: A0 (PA_0) // 出力端子: A2 (PA_4) // -// 2018/05/19, Copyright (c) 2018 MIKAMI, Naoki +// 2018/05/30, Copyright (c) 2018 MIKAMI, Naoki //--------------------------------------------------- #include "mbed.h" @@ -22,7 +22,10 @@ { public: // コンストラクタ - F446_Multirate(); + // コンストラクタの引数を与えない場合はデフォルトのフィルタを使用 + // order = 0 にすると,補間フィルタなしの状態になる + F446_Multirate(int order = -1, const Biquad::Coefs ck[] = NULL, + float g0 = 1); virtual ~F446_Multirate() { @@ -46,7 +49,6 @@ static const int MASK_FACTOR_ = FACTOR_ - 1; static const int MASK_BUF_ = 2*FACTOR_ - 1; - IirCascade *interpolator_; // 補間用フィルタのポインタ static AdcF446 *adc_; // AD変換器のオブジェクトのポインタ static DacF446 dac_; // DA変換器のオブジェクト @@ -56,6 +58,11 @@ static float xn_; // AD変換器から入力されたデータ static __IO bool okIn_; // AD変換されたデータが使える場合に true となる + // 補間用フィルタ用のメンバ + static const Biquad::Coefs HK_[]; // biquad 部の係数 + static const float G0_; // 利得定数 + IirCascade *interpolator_; // 補間用フィルタのポインタ + // 引数を 0 ~ (アップサンプリング倍率-1) の間でカウントアップ static inline int ModCounter(int &index) {