CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Committer:
MikamiUitOpen
Date:
Mon Mar 12 05:10:31 2018 +0000
Revision:
2:dd48e1e59daa
Parent:
1:501a83a5ee9d
3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:ab7a35d87173 1 //-----------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 2 // ディジタルフィルタ実験のためのプラットフォーム
MikamiUitOpen 0:ab7a35d87173 3 // 信号処理の対象とする信号は Arduino 互換ヘッダピンの A0 に入力する
MikamiUitOpen 0:ab7a35d87173 4 // ---- 入出力信号の波形表示付き ----
MikamiUitOpen 0:ab7a35d87173 5 //
MikamiUitOpen 0:ab7a35d87173 6 // このプログラムでは,例として定数乗算器を実装している
MikamiUitOpen 0:ab7a35d87173 7 //
MikamiUitOpen 2:dd48e1e59daa 8 // 使用しているライブラリのリビジョン:
MikamiUitOpen 2:dd48e1e59daa 9 // F746_GUI Rev.33
MikamiUitOpen 2:dd48e1e59daa 10 // F746_SAI_IO Rev.12
MikamiUitOpen 2:dd48e1e59daa 11 // mbed Rev.161
MikamiUitOpen 0:ab7a35d87173 12 //
MikamiUitOpen 2:dd48e1e59daa 13 // 2018/03/12, Copyright (c) 2018 MIKAMI, Naoki
MikamiUitOpen 0:ab7a35d87173 14 //-----------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 15
MikamiUitOpen 0:ab7a35d87173 16 #include "SAI_InOut.hpp"
MikamiUitOpen 0:ab7a35d87173 17 #include "LcdPanel.hpp"
MikamiUitOpen 0:ab7a35d87173 18 #include "MyFunctions.hpp" // ST32F746 内蔵の ADC を使うため
MikamiUitOpen 0:ab7a35d87173 19
MikamiUitOpen 0:ab7a35d87173 20 //-----------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 21 // 実行するフィルタの応じて以下のインクルードファイルを変更する
MikamiUitOpen 0:ab7a35d87173 22 #include "Multiplier.hpp" // 入力を定数倍して出力する処理
MikamiUitOpen 0:ab7a35d87173 23 //-----------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 24
MikamiUitOpen 0:ab7a35d87173 25 const int FS_ = I2S_AUDIOFREQ_48K; // 標本化周波数:48 kHz
MikamiUitOpen 0:ab7a35d87173 26 AdcDual_Intr adc_(FS_); // 内蔵 ADC 用
MikamiUitOpen 0:ab7a35d87173 27
MikamiUitOpen 0:ab7a35d87173 28 int main()
MikamiUitOpen 0:ab7a35d87173 29 {
MikamiUitOpen 0:ab7a35d87173 30 // オーディオ信号出力用
MikamiUitOpen 0:ab7a35d87173 31 SaiIO mySai(SaiIO::OUTPUT, 2048, FS_);
MikamiUitOpen 0:ab7a35d87173 32
MikamiUitOpen 0:ab7a35d87173 33 // LCD パネル表示用
MikamiUitOpen 0:ab7a35d87173 34 LcdPanel myPanel;
MikamiUitOpen 0:ab7a35d87173 35
MikamiUitOpen 0:ab7a35d87173 36 //-----------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 37 // ここでディジタルフィルタのオブジェクト生成や初期化などを行う
MikamiUitOpen 0:ab7a35d87173 38 Multiplier df(-0.5f); // 定数乗算の処理
MikamiUitOpen 0:ab7a35d87173 39 //-----------------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 40
MikamiUitOpen 0:ab7a35d87173 41 // 内蔵 ADC を使うための初期化
MikamiUitOpen 0:ab7a35d87173 42 AdcInitialize(mySai.GetLength());
MikamiUitOpen 0:ab7a35d87173 43
MikamiUitOpen 0:ab7a35d87173 44 mySai.PlayOut(); // オーディオ信号出力開始
MikamiUitOpen 0:ab7a35d87173 45 while (true) // 無限ループ
MikamiUitOpen 0:ab7a35d87173 46 {
MikamiUitOpen 0:ab7a35d87173 47 // 出力バッファへの転送完了と ADC バッファが満杯で以下の処理を行う
MikamiUitOpen 0:ab7a35d87173 48 if (mySai.IsXferred() && IsAdcBufferFull())
MikamiUitOpen 0:ab7a35d87173 49 {
MikamiUitOpen 0:ab7a35d87173 50 for (int n=0; n<mySai.GetLength(); n++)
MikamiUitOpen 0:ab7a35d87173 51 {
MikamiUitOpen 0:ab7a35d87173 52 int16_t sn, dummy;
MikamiUitOpen 0:ab7a35d87173 53 GetSignal(sn, dummy); // A0 から入力された信号を取得する
MikamiUitOpen 0:ab7a35d87173 54
MikamiUitOpen 0:ab7a35d87173 55 int16_t xn = sn << 3;
MikamiUitOpen 0:ab7a35d87173 56 //------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 57 // ディジタルフィルタなどの信号処理の実行
MikamiUitOpen 0:ab7a35d87173 58 int16_t yn = df.Execute(xn); // ディジタルフィルタの処理
MikamiUitOpen 0:ab7a35d87173 59 //------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 60 mySai.Output(xn, yn); // xn:入力(左チャンネル)
MikamiUitOpen 0:ab7a35d87173 61 // yn:出力(右チャンネル)
MikamiUitOpen 0:ab7a35d87173 62 myPanel.Store(xn, yn, n); // 表示用として格納
MikamiUitOpen 0:ab7a35d87173 63 }
MikamiUitOpen 0:ab7a35d87173 64 myPanel.Display(); // 入出力信号の波形表示
MikamiUitOpen 0:ab7a35d87173 65 }
MikamiUitOpen 0:ab7a35d87173 66 myPanel.Update();
MikamiUitOpen 0:ab7a35d87173 67 }
MikamiUitOpen 0:ab7a35d87173 68 }