FIR filter of symmetric coefficiemts for ST Nucleo F401RE.

Dependencies:   UIT_ADDA mbed

Files at this revision

API Documentation at this revision

Comitter:
MikamiUitOpen
Date:
Tue Oct 21 08:41:14 2014 +0000
Child:
1:93d2771b8797
Commit message:
1

Changed in this revision

Coefficients_200_LPF_Sym.hpp Show annotated file Show diff for this revision Revisions of this file
UIT_ADDA.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /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