CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020
Dependencies: mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
main.cpp
00001 //----------------------------------------------------------- 00002 // ディジタルフィルタ実験のためのプラットフォーム 00003 // 信号処理の対象とする信号は Arduino 互換ヘッダピンの A0 に入力する 00004 // ---- 入出力信号の波形表示付き ---- 00005 // 00006 // このプログラムでは,例として定数乗算器を実装している 00007 // 00008 // 使用しているライブラリのリビジョン: 00009 // F746_GUI Rev.33 00010 // F746_SAI_IO Rev.12 00011 // mbed Rev.161 00012 // 00013 // 2018/03/12, Copyright (c) 2018 MIKAMI, Naoki 00014 //----------------------------------------------------------- 00015 00016 #include "SAI_InOut.hpp" 00017 #include "LcdPanel.hpp" 00018 #include "MyFunctions.hpp" // ST32F746 内蔵の ADC を使うため 00019 00020 //----------------------------------------------------------------- 00021 // 実行するフィルタの応じて以下のインクルードファイルを変更する 00022 #include "Multiplier.hpp" // 入力を定数倍して出力する処理 00023 //----------------------------------------------------------------- 00024 00025 const int FS_ = I2S_AUDIOFREQ_48K; // 標本化周波数:48 kHz 00026 AdcDual_Intr adc_(FS_); // 内蔵 ADC 用 00027 00028 int main() 00029 { 00030 // オーディオ信号出力用 00031 SaiIO mySai(SaiIO::OUTPUT, 2048, FS_); 00032 00033 // LCD パネル表示用 00034 LcdPanel myPanel; 00035 00036 //----------------------------------------------------------------- 00037 // ここでディジタルフィルタのオブジェクト生成や初期化などを行う 00038 Multiplier df(-0.5f); // 定数乗算の処理 00039 //----------------------------------------------------------------- 00040 00041 // 内蔵 ADC を使うための初期化 00042 AdcInitialize(mySai.GetLength()); 00043 00044 mySai.PlayOut(); // オーディオ信号出力開始 00045 while (true) // 無限ループ 00046 { 00047 // 出力バッファへの転送完了と ADC バッファが満杯で以下の処理を行う 00048 if (mySai.IsXferred() && IsAdcBufferFull()) 00049 { 00050 for (int n=0; n<mySai.GetLength(); n++) 00051 { 00052 int16_t sn, dummy; 00053 GetSignal(sn, dummy); // A0 から入力された信号を取得する 00054 00055 int16_t xn = sn << 3; 00056 //------------------------------------------------------ 00057 // ディジタルフィルタなどの信号処理の実行 00058 int16_t yn = df.Execute(xn); // ディジタルフィルタの処理 00059 //------------------------------------------------------ 00060 mySai.Output(xn, yn); // xn:入力(左チャンネル) 00061 // yn:出力(右チャンネル) 00062 myPanel.Store(xn, yn, n); // 表示用として格納 00063 } 00064 myPanel.Display(); // 入出力信号の波形表示 00065 } 00066 myPanel.Update(); 00067 } 00068 }
Generated on Sun Jul 17 2022 01:09:34 by 1.7.2