CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラム.雛形として使う. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   F746_GUI F746_SAI_IO mbed

Committer:
MikamiUitOpen
Date:
Fri Sep 29 12:50:44 2017 +0000
Revision:
0:b6d17af0f47a
Child:
1:d9fdd52ea43a
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:b6d17af0f47a 1 //-----------------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 2 // ディジタルフィルタ実験のためのプラットフォーム(標本化周波数:48 kHz)
MikamiUitOpen 0:b6d17af0f47a 3 // ---- 入出力信号の波形表示付き ----
MikamiUitOpen 0:b6d17af0f47a 4 //
MikamiUitOpen 0:b6d17af0f47a 5 // このプログラムでは,例として定数乗算器を実装している
MikamiUitOpen 0:b6d17af0f47a 6 //
MikamiUitOpen 0:b6d17af0f47a 7 // 使用しているライブラリのリビジョン:
MikamiUitOpen 0:b6d17af0f47a 8 // mbed Rev.151
MikamiUitOpen 0:b6d17af0f47a 9 // BSP_DISCO_F746NG Rev.9
MikamiUitOpen 0:b6d17af0f47a 10 //
MikamiUitOpen 0:b6d17af0f47a 11 // 2017/09/29, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:b6d17af0f47a 12 //-----------------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 13
MikamiUitOpen 0:b6d17af0f47a 14 #include "SAI_InOut.hpp"
MikamiUitOpen 0:b6d17af0f47a 15 #include "LcdPanelFrq.hpp"
MikamiUitOpen 0:b6d17af0f47a 16
MikamiUitOpen 0:b6d17af0f47a 17 //-----------------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 18 // 実行するフィルタに応じて以下のインクルードファイルを変更する
MikamiUitOpen 0:b6d17af0f47a 19 #include "Multiplier.hpp" // 入力を定数倍して出力する処理
MikamiUitOpen 0:b6d17af0f47a 20 //-----------------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 21
MikamiUitOpen 0:b6d17af0f47a 22 int main()
MikamiUitOpen 0:b6d17af0f47a 23 {
MikamiUitOpen 0:b6d17af0f47a 24 const int FS = I2S_AUDIOFREQ_48K; // 標本化周波数:48 kHz
MikamiUitOpen 0:b6d17af0f47a 25 // オーディオ信号出力用
MikamiUitOpen 0:b6d17af0f47a 26 SaiIO mySai(SaiIO::OUTPUT, 2048, FS);
MikamiUitOpen 0:b6d17af0f47a 27
MikamiUitOpen 0:b6d17af0f47a 28 // LCD パネル表示用
MikamiUitOpen 0:b6d17af0f47a 29 LcdPanel myPanel(1.0f/(float)FS);
MikamiUitOpen 0:b6d17af0f47a 30
MikamiUitOpen 0:b6d17af0f47a 31 //-----------------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 32 // ここでディジタルフィルタのオブジェクト生成や初期化などを行う
MikamiUitOpen 0:b6d17af0f47a 33 Multiplier df(-0.5f); // 定数乗算の処理
MikamiUitOpen 0:b6d17af0f47a 34 //-----------------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 35
MikamiUitOpen 0:b6d17af0f47a 36 mySai.PlayOut(); // オーディオ信号出力開始
MikamiUitOpen 0:b6d17af0f47a 37
MikamiUitOpen 0:b6d17af0f47a 38 const float MAX_AMP = 10000.0f;
MikamiUitOpen 0:b6d17af0f47a 39 float phi = 0;
MikamiUitOpen 0:b6d17af0f47a 40
MikamiUitOpen 0:b6d17af0f47a 41 while (true) // 無限ループ
MikamiUitOpen 0:b6d17af0f47a 42 {
MikamiUitOpen 0:b6d17af0f47a 43 // 出力バッファへの転送が完了したら以下の処理を行う
MikamiUitOpen 0:b6d17af0f47a 44 if (mySai.IsXferred())
MikamiUitOpen 0:b6d17af0f47a 45 {
MikamiUitOpen 0:b6d17af0f47a 46 for (int n=0; n<mySai.GetLength(); n++)
MikamiUitOpen 0:b6d17af0f47a 47 {
MikamiUitOpen 0:b6d17af0f47a 48 // 入力信号の生成
MikamiUitOpen 0:b6d17af0f47a 49 float sn = sinf(phi); // 入力信号となる正弦波を発生
MikamiUitOpen 0:b6d17af0f47a 50
MikamiUitOpen 0:b6d17af0f47a 51 int16_t xn = (int16_t)(MAX_AMP*sn);
MikamiUitOpen 0:b6d17af0f47a 52 //------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 53 // ディジタルフィルタなどの信号処理の実行
MikamiUitOpen 0:b6d17af0f47a 54 int16_t yn = df.Execute(xn);
MikamiUitOpen 0:b6d17af0f47a 55 //------------------------------------------------------
MikamiUitOpen 0:b6d17af0f47a 56 mySai.Output(xn, yn); // xn:入力(左チャンネル)
MikamiUitOpen 0:b6d17af0f47a 57 // yn:出力(右チャンネル)
MikamiUitOpen 0:b6d17af0f47a 58
MikamiUitOpen 0:b6d17af0f47a 59 phi = myPanel.GetPhi(); // phi の更新
MikamiUitOpen 0:b6d17af0f47a 60 myPanel.Store(xn, yn, n); // 表示用として格納
MikamiUitOpen 0:b6d17af0f47a 61 }
MikamiUitOpen 0:b6d17af0f47a 62
MikamiUitOpen 0:b6d17af0f47a 63 myPanel.Display(); // 入出力信号の波形表示
MikamiUitOpen 0:b6d17af0f47a 64 }
MikamiUitOpen 0:b6d17af0f47a 65 myPanel.Update(); // パネルの状態を読み取り必要なパラメータなどを更新する
MikamiUitOpen 0:b6d17af0f47a 66 }
MikamiUitOpen 0:b6d17af0f47a 67 }