
FIR filter of symmetric coefficiemts for ST Nucleo F401RE.
Revision 0:4912234b4155, committed 2014-10-21
- Comitter:
- MikamiUitOpen
- Date:
- Tue Oct 21 08:41:14 2014 +0000
- Child:
- 1:93d2771b8797
- Commit message:
- 1
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Coefficients_200_LPF_Sym.hpp Tue Oct 21 08:41:14 2014 +0000 @@ -0,0 +1,35 @@ +//-------------------------------------------------------------- +// Coefficients of FIR filter, Order = 200, Symmetry +//-------------------------------------------------------------- + +// 帯域 1 帯域 2 +// 下側帯域端周波数 (kHz) 0.000000 0.520000 +// 上側帯域端周波数 (kHz) 0.400000 6.000000 +// 利得 1.000000 0.000000 +// 重み 1.000000 1.000000 +// 偏差 0.009151 0.009151 +// 偏差 [dB] 0.079123 -40.770626 +const int ORDER_ = 200; +const float hm_[ORDER_/2+1] = { + 8.737486E-04f, -4.702546E-03f, -1.541793E-03f, -9.995923E-04f, -8.693481E-04f, + -7.640150E-04f, -6.175116E-04f, -4.222001E-04f, -1.843878E-04f, 8.514955E-05f, + 3.717739E-04f, 6.591430E-04f, 9.287700E-04f, 1.162777E-03f, 1.343207E-03f, + 1.454924E-03f, 1.485436E-03f, 1.426549E-03f, 1.275564E-03f, 1.034081E-03f, + 7.113729E-04f, 3.207026E-04f, -1.184049E-04f, -5.820689E-04f, -1.043886E-03f, + -1.474774E-03f, -1.845981E-03f, -2.130800E-03f, -2.305274E-03f, -2.350849E-03f, + -2.256316E-03f, -2.017512E-03f, -1.639172E-03f, -1.135177E-03f, -5.278316E-04f, + 1.529100E-04f, 8.704013E-04f, 1.582816E-03f, 2.246636E-03f, 2.818382E-03f, + 3.256978E-03f, 3.526820E-03f, 3.600292E-03f, 3.460352E-03f, 3.101292E-03f, + 2.530025E-03f, 1.767277E-03f, 8.468413E-04f, -1.860825E-04f, -1.276460E-03f, + -2.362405E-03f, -3.377987E-03f, -4.257154E-03f, -4.937810E-03f, -5.365365E-03f, + -5.496871E-03f, -5.304383E-03f, -4.777034E-03f, -3.923301E-03f, -2.771558E-03f, + -1.370071E-03f, 2.151927E-04f, 1.902516E-03f, 3.598218E-03f, 5.201730E-03f, + 6.610402E-03f, 7.725334E-03f, 8.457645E-03f, 8.733574E-03f, 8.500346E-03f, + 7.730436E-03f, 6.424523E-03f, 4.614161E-03f, 2.362306E-03f, -2.383453E-04f, + -3.066443E-03f, -5.978197E-03f, -8.811950E-03f, -1.139591E-02f, -1.355420E-02f, + -1.511503E-02f, -1.592111E-02f, -1.583842E-02f, -1.476211E-02f, -1.262112E-02f, + -9.386146E-03f, -5.074806E-03f, 2.520472E-04f, 6.489579E-03f, 1.348666E-02f, + 2.105590E-02f, 2.898240E-02f, 3.702012E-02f, 4.491842E-02f, 5.241606E-02f, + 5.926273E-02f, 6.522454E-02f, 7.009386E-02f, 7.370102E-02f, 7.591748E-02f, + 7.666554E-02f}; +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/UIT_ADDA.lib Tue Oct 21 08:41:14 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/MikamiUitOpen/code/UIT_ADDA/#6e0ed5adfe47
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Oct 21 08:41:14 2014 +0000 @@ -0,0 +1,44 @@ +//-------------------------------------------------------------- +// FIR フィルタ,係数の対称性を利用する構造 +// Analog Input : A0 +// Analog Output: MCP4922 using SPI +// 2014/10/21, Copyright (c) 2014 MIKAMI, Naoki +//-------------------------------------------------------------- + +#include "mbed.h" + +#include "ADC_Interrupt.hpp" // for ADC using interrupt +#include "DAC_MCP4922.hpp" // for DAC MCP4922 +#include "ScfClockTim3.hpp" // for clock supplied to SCF +#include "Coefficients_200_LPF_Sym.hpp" + +using namespace Mikami; + +const int FS_ = 12000; // Sampling frequency: 12 kHz +ADC_Base adc_(A0, FS_); // for AD +DAC_MCP4922 myDac_(DAC_MCP4922::DAC_A); // for DA + +int main() +{ + ScfClockTim3(500000); // cutoff frequency: 5 kHz + + float xn[ORDER_+1]; + for (int n=0; n<=ORDER_; n++) + xn[n] = 0; + + while (true) + { + xn[0] = adc_.Read(); // Read from A0 + //----------------------------------------------- + + float yn = hm_[ORDER_/2]*xn[ORDER_/2]; + for (int k=0; k<ORDER_/2; k++) + yn = yn + hm_[k]*(xn[k] + xn[ORDER_-k]); + + for (int k=ORDER_; k>0; k--) + xn[k] = xn[k-1]; // move input signals + + //----------------------------------------------- + myDac_.Write(yn); // Write to DAC + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Tue Oct 21 08:41:14 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1 \ No newline at end of file