Realtime spectrum analyzer. Using FFT, linear prediction, or cepstrum smoothing. Version using MEMS microphone and CODEC, named "F746_RealtimeSpectrumAnalyzer_MEMS_Mic" is registered. リアルタイム スペクトル解析器.解析の手法:FFT,線形予測法,ケプストラムによる平滑化の3種類.このプログラムの説明は,CQ出版社のインターフェース誌,2016年4月号に掲載.外付けのマイクまたは他の信号源等を A0 に接続する.線形予測法,ケプストラムは,スペクトル解析の対象を音声信号に想定してパラメータを設定している.MEMS マイクと CODEC を使ったバージョンを "F746_RealtimeSpectrumAnalyzer_MEMS_Mic" として登録.

Dependencies:   BSP_DISCO_F746NG BUTTON_GROUP LCD_DISCO_F746NG TS_DISCO_F746NG UIT_FFT_Real mbed

Committer:
MikamiUitOpen
Date:
Fri Dec 18 10:09:31 2015 +0000
Revision:
6:b27ef8d98edc
Parent:
4:99d4d5ea06a2
Child:
7:6598a9b70e5a
7

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 6:b27ef8d98edc 1 //------------------------------------------------
MikamiUitOpen 2:095b360e0f54 2 // Class for sampling input signal (Header)
MikamiUitOpen 0:5c237fdcba23 3 //
MikamiUitOpen 6:b27ef8d98edc 4 // 2015/12/18, Copyright (c) 2015 MIKAMI, Naoki
MikamiUitOpen 6:b27ef8d98edc 5 //------------------------------------------------
MikamiUitOpen 0:5c237fdcba23 6
MikamiUitOpen 0:5c237fdcba23 7 #ifndef F746_SAMPLER_HPP
MikamiUitOpen 0:5c237fdcba23 8 #define F746_SAMPLER_HPP
MikamiUitOpen 0:5c237fdcba23 9
MikamiUitOpen 0:5c237fdcba23 10 #include "mbed.h"
MikamiUitOpen 0:5c237fdcba23 11
MikamiUitOpen 0:5c237fdcba23 12 namespace Mikami
MikamiUitOpen 0:5c237fdcba23 13 {
MikamiUitOpen 0:5c237fdcba23 14 class Sampler
MikamiUitOpen 0:5c237fdcba23 15 {
MikamiUitOpen 0:5c237fdcba23 16 public:
MikamiUitOpen 6:b27ef8d98edc 17 Sampler(PinName pin, int fs, int nData,
MikamiUitOpen 6:b27ef8d98edc 18 int16_t* const buffer);
MikamiUitOpen 2:095b360e0f54 19
MikamiUitOpen 2:095b360e0f54 20 void IntrEnable();
MikamiUitOpen 0:5c237fdcba23 21
MikamiUitOpen 0:5c237fdcba23 22 bool Filled() { return filled_; }
MikamiUitOpen 0:5c237fdcba23 23
MikamiUitOpen 0:5c237fdcba23 24 void Restart() { filled_ = false; }
MikamiUitOpen 0:5c237fdcba23 25
MikamiUitOpen 2:095b360e0f54 26 void InvertEnable(bool onOff)
MikamiUitOpen 2:095b360e0f54 27 { sw_ = onOff ? 1 : 0; }
MikamiUitOpen 0:5c237fdcba23 28
MikamiUitOpen 0:5c237fdcba23 29 private:
MikamiUitOpen 2:095b360e0f54 30 const int TS_; // sampling period
MikamiUitOpen 0:5c237fdcba23 31 const int N_DATA_; // number of 1 frame data
MikamiUitOpen 0:5c237fdcba23 32
MikamiUitOpen 0:5c237fdcba23 33 AnalogIn aIn_; // Object of ADC
MikamiUitOpen 2:095b360e0f54 34 Ticker timer_; // Object of Ticker
MikamiUitOpen 0:5c237fdcba23 35
MikamiUitOpen 0:5c237fdcba23 36 bool trigger_;
MikamiUitOpen 0:5c237fdcba23 37 bool filled_;
MikamiUitOpen 0:5c237fdcba23 38 int count_;
MikamiUitOpen 0:5c237fdcba23 39 int16_t xnM1_;
MikamiUitOpen 2:095b360e0f54 40 int sw_;
MikamiUitOpen 6:b27ef8d98edc 41 int16_t* const buffer_; // for sampled data
MikamiUitOpen 2:095b360e0f54 42
MikamiUitOpen 2:095b360e0f54 43 // For input
MikamiUitOpen 2:095b360e0f54 44 int16_t (Sampler::*Rd[2])();
MikamiUitOpen 2:095b360e0f54 45 int16_t ReadNorm() { return aIn_.read_u16() - 32767; }
MikamiUitOpen 2:095b360e0f54 46 int16_t ReadInv() { return 32767 - aIn_.read_u16(); }
MikamiUitOpen 2:095b360e0f54 47
MikamiUitOpen 2:095b360e0f54 48 void Set(bool tf);
MikamiUitOpen 2:095b360e0f54 49
MikamiUitOpen 2:095b360e0f54 50 // Interrupt service routine for Ticker
MikamiUitOpen 2:095b360e0f54 51 void Isr();
MikamiUitOpen 6:b27ef8d98edc 52
MikamiUitOpen 6:b27ef8d98edc 53 // disallow copy constructor and assignment operator
MikamiUitOpen 6:b27ef8d98edc 54 Sampler(const Sampler& );
MikamiUitOpen 6:b27ef8d98edc 55 Sampler& operator=(const Sampler& );
MikamiUitOpen 0:5c237fdcba23 56 };
MikamiUitOpen 0:5c237fdcba23 57 }
MikamiUitOpen 0:5c237fdcba23 58 #endif // F746_SAMPLER_HPP