CW Decoder (Morse code decoder) 1st release version. mbed = 131 revision (Not latest) is used. Only run on DISCO-F746NG mbed board.

Dependencies:   BSP_DISCO_F746NG F746_GUI F746_SAI_IO LCD_DISCO_F746NG TS_DISCO_F746NG UIT_FFT_Real mbed

Base on F746_Spectrogram program created by 不韋 呂-san.
/users/MikamiUitOpen/code/F746_Spectrogram/
Thanks 不韋 呂-san to use fundamental parts such as FFT, SAI, GUI and other useful subroutines.
You do NOT need any modification for mbed hardware and NO additional circuits.
The mbed board read CW tone from your receiver speaker via MEMES microphone (on board) and show it on the screen.

Committer:
kenjiArai
Date:
Sun Feb 05 07:49:54 2017 +0000
Revision:
0:e608fc311e4e
CW Decoder (Morse code decoder) 1st release version. mbed = 131 revision (Not latest) is used. Only run on DISCO-F746NG mbed board.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:e608fc311e4e 1 //-------------------------------------------------------
kenjiArai 0:e608fc311e4e 2 // Base abstract class for spectrum analysis (Header)
kenjiArai 0:e608fc311e4e 3 //
kenjiArai 0:e608fc311e4e 4 // 2016/07/23, Copyright (c) 2016 MIKAMI, Naoki
kenjiArai 0:e608fc311e4e 5 //-------------------------------------------------------
kenjiArai 0:e608fc311e4e 6
kenjiArai 0:e608fc311e4e 7 #ifndef BASE_ANALYZER_HPP
kenjiArai 0:e608fc311e4e 8 #define BASE_ANALYZER_HPP
kenjiArai 0:e608fc311e4e 9
kenjiArai 0:e608fc311e4e 10 #include "Array.hpp"
kenjiArai 0:e608fc311e4e 11 #include "fftReal.hpp"
kenjiArai 0:e608fc311e4e 12 #include "Hamming.hpp"
kenjiArai 0:e608fc311e4e 13
kenjiArai 0:e608fc311e4e 14 namespace Mikami
kenjiArai 0:e608fc311e4e 15 {
kenjiArai 0:e608fc311e4e 16 class AnalyzerBase
kenjiArai 0:e608fc311e4e 17 {
kenjiArai 0:e608fc311e4e 18 public:
kenjiArai 0:e608fc311e4e 19 // nData: Number of data to be analyzed
kenjiArai 0:e608fc311e4e 20 // nFft: Number of FFT points
kenjiArai 0:e608fc311e4e 21 // nUse: FFT, cepstrum: window width + zero padding
kenjiArai 0:e608fc311e4e 22 // Linear prediction: window width
kenjiArai 0:e608fc311e4e 23 AnalyzerBase(int nData, int nFft, int nUse);
kenjiArai 0:e608fc311e4e 24 virtual ~AnalyzerBase() {}
kenjiArai 0:e608fc311e4e 25 void Execute(const float xn[], float db[]);
kenjiArai 0:e608fc311e4e 26
kenjiArai 0:e608fc311e4e 27 protected:
kenjiArai 0:e608fc311e4e 28 const int N_DATA_;
kenjiArai 0:e608fc311e4e 29 const int N_FFT_;
kenjiArai 0:e608fc311e4e 30
kenjiArai 0:e608fc311e4e 31 FftReal fft_;
kenjiArai 0:e608fc311e4e 32
kenjiArai 0:e608fc311e4e 33 float Norm(Complex x)
kenjiArai 0:e608fc311e4e 34 { return x.real()*x.real() + x.imag()*x.imag(); }
kenjiArai 0:e608fc311e4e 35
kenjiArai 0:e608fc311e4e 36 private:
kenjiArai 0:e608fc311e4e 37 HammingWindow wHm_;
kenjiArai 0:e608fc311e4e 38
kenjiArai 0:e608fc311e4e 39 Array<float> xData_; // data to be analyzed
kenjiArai 0:e608fc311e4e 40 Array<float> wData_; // windowd data
kenjiArai 0:e608fc311e4e 41
kenjiArai 0:e608fc311e4e 42 virtual void Analyze(const float wData[], float db[]) = 0;
kenjiArai 0:e608fc311e4e 43
kenjiArai 0:e608fc311e4e 44 // disallow copy constructor and assignment operator
kenjiArai 0:e608fc311e4e 45 AnalyzerBase(const AnalyzerBase& );
kenjiArai 0:e608fc311e4e 46 AnalyzerBase& operator=(const AnalyzerBase& );
kenjiArai 0:e608fc311e4e 47 };
kenjiArai 0:e608fc311e4e 48 }
kenjiArai 0:e608fc311e4e 49 #endif // BASE_ANALYZER_HPP
kenjiArai 0:e608fc311e4e 50