Transform real signal to analytic signal using Hilbert transform filter for ST Nucleo F401RE.

Dependencies:   UIT_ADDA mbed

Committer:
MikamiUitOpen
Date:
Thu Oct 23 00:37:00 2014 +0000
Revision:
0:3d6eb7cd2ee1
Child:
2:24161f77d925
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:3d6eb7cd2ee1 1 //--------------------------------------------------------------
MikamiUitOpen 0:3d6eb7cd2ee1 2 // Analytic signal generator
MikamiUitOpen 0:3d6eb7cd2ee1 3 // 2014/10/23, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:3d6eb7cd2ee1 4 //--------------------------------------------------------------
MikamiUitOpen 0:3d6eb7cd2ee1 5
MikamiUitOpen 0:3d6eb7cd2ee1 6 #include "mbed.h"
MikamiUitOpen 0:3d6eb7cd2ee1 7
MikamiUitOpen 0:3d6eb7cd2ee1 8 #include "ADC_Base.hpp" // for ADC not using interrupt
MikamiUitOpen 0:3d6eb7cd2ee1 9 #include "DAC_MCP4922Dual.hpp" // for DAC MCP4922
MikamiUitOpen 0:3d6eb7cd2ee1 10 #include "ScfClockTim3.hpp" // for clock supplied to SCF
MikamiUitOpen 0:3d6eb7cd2ee1 11
MikamiUitOpen 0:3d6eb7cd2ee1 12 #include "HilbertTransform.hpp" // Hilbert transform filter
MikamiUitOpen 0:3d6eb7cd2ee1 13 #include "coefsHilbert114.hpp" // Coeffisients of Hilbert transform filter
MikamiUitOpen 0:3d6eb7cd2ee1 14 #include "DC_Cut_Coefficients.hpp" // Coeffisients of DC-cut filter
MikamiUitOpen 0:3d6eb7cd2ee1 15 #include "Biquad.hpp" // For DC-cut filter
MikamiUitOpen 0:3d6eb7cd2ee1 16
MikamiUitOpen 0:3d6eb7cd2ee1 17 using namespace Mikami;
MikamiUitOpen 0:3d6eb7cd2ee1 18
MikamiUitOpen 0:3d6eb7cd2ee1 19 const int FS_ = 12000; // 12 kHz
MikamiUitOpen 0:3d6eb7cd2ee1 20 ADC_Base adc_(A0, FS_);
MikamiUitOpen 0:3d6eb7cd2ee1 21 DAC_MCP4922Dual myDac_;
MikamiUitOpen 0:3d6eb7cd2ee1 22
MikamiUitOpen 0:3d6eb7cd2ee1 23 Hilbert<ORDER_> ht_(hm_);
MikamiUitOpen 0:3d6eb7cd2ee1 24 Biquad DcCut_(c1_); // DC cut filter
MikamiUitOpen 0:3d6eb7cd2ee1 25
MikamiUitOpen 0:3d6eb7cd2ee1 26 int main()
MikamiUitOpen 0:3d6eb7cd2ee1 27 {
MikamiUitOpen 0:3d6eb7cd2ee1 28 while (true)
MikamiUitOpen 0:3d6eb7cd2ee1 29 {
MikamiUitOpen 0:3d6eb7cd2ee1 30 float xn = adc_.Read(); // Read from A0
MikamiUitOpen 0:3d6eb7cd2ee1 31 //-----------------------------------------------
MikamiUitOpen 0:3d6eb7cd2ee1 32
MikamiUitOpen 0:3d6eb7cd2ee1 33 xn = DcCut_.Execute(g0_*xn); // DC cut filter
MikamiUitOpen 0:3d6eb7cd2ee1 34 float yIn, yQn;
MikamiUitOpen 0:3d6eb7cd2ee1 35 ht_.Execute(xn, yIn, yQn); // Hilbert transform filter
MikamiUitOpen 0:3d6eb7cd2ee1 36
MikamiUitOpen 0:3d6eb7cd2ee1 37 //-----------------------------------------------
MikamiUitOpen 0:3d6eb7cd2ee1 38 myDac_.Write(yIn, yQn); // Write to DAC
MikamiUitOpen 0:3d6eb7cd2ee1 39 }
MikamiUitOpen 0:3d6eb7cd2ee1 40 }