F446_AD_DA_LinearPhase の使用例. AD された信号をそのまま DA に出力する. 標本化周波数:10 kHz Example of F446_AD_DA_LinearPhase. Output signal is same as input signal. Sampling frequency is 10 kHz.

Dependencies:   mbed F446_AD_DA_LinearPhase

Committer:
MikamiUitOpen
Date:
Wed Nov 28 12:46:36 2018 +0000
Revision:
1:4d42dd760b73
Parent:
0:ed4b35ea9367
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:ed4b35ea9367 1 //--------------------------------------------------------------------------
MikamiUitOpen 0:ed4b35ea9367 2 // NUCLEO-F446RE で アナログ信号の入出力の際に,出力の標本化周波数を,
MikamiUitOpen 0:ed4b35ea9367 3 // 入力の標本化周波数の4倍にするクラス F446_LinearPhase の使用例
MikamiUitOpen 0:ed4b35ea9367 4 //
MikamiUitOpen 0:ed4b35ea9367 5 // F446_LinearPhase クラスでは出力の補間フィルタとして直線位相 FIR フィルタを使用
MikamiUitOpen 0:ed4b35ea9367 6 //
MikamiUitOpen 0:ed4b35ea9367 7 // 処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する
MikamiUitOpen 0:ed4b35ea9367 8 //
MikamiUitOpen 1:4d42dd760b73 9 // 2018/11/28, Copyright (c) 2018 MIKAMI, Naoki
MikamiUitOpen 0:ed4b35ea9367 10 //--------------------------------------------------------------------------
MikamiUitOpen 0:ed4b35ea9367 11
MikamiUitOpen 0:ed4b35ea9367 12 #include "F446_LinearPhase.hpp"
MikamiUitOpen 0:ed4b35ea9367 13 #pragma diag_suppress 870 // マルチバイト文字使用の警告抑制のため
MikamiUitOpen 0:ed4b35ea9367 14 #include "coefficients.hpp" // 補間フィルタとしてデフォルト以外のものを使う場合
MikamiUitOpen 0:ed4b35ea9367 15
MikamiUitOpen 0:ed4b35ea9367 16 using namespace Mikami;
MikamiUitOpen 0:ed4b35ea9367 17
MikamiUitOpen 0:ed4b35ea9367 18 const int FS_ = 10000; // 入力の標本化周波数: 10 kHz
MikamiUitOpen 0:ed4b35ea9367 19
MikamiUitOpen 0:ed4b35ea9367 20 // 出力標本化周波数を4倍にするオブジェクト,デフォルトの補間用フィルタを使う場合
MikamiUitOpen 0:ed4b35ea9367 21 F446_LinearPhase myAdDa_;
MikamiUitOpen 0:ed4b35ea9367 22
MikamiUitOpen 0:ed4b35ea9367 23 // 第一引数を 0 にすると,出力の際に補間処理は行われない
MikamiUitOpen 0:ed4b35ea9367 24 //F446_LinearPhase myAdDa_(0);
MikamiUitOpen 0:ed4b35ea9367 25
MikamiUitOpen 0:ed4b35ea9367 26 // 出力標本化周波数を4倍にするオブジェクト,デフォルト以外の補間用フィルタを使う場合
MikamiUitOpen 0:ed4b35ea9367 27 //F446_LinearPhase myAdDa_(ORDER_, HK1_, HK2_, HK3_);
MikamiUitOpen 0:ed4b35ea9367 28
MikamiUitOpen 0:ed4b35ea9367 29 int main()
MikamiUitOpen 0:ed4b35ea9367 30 {
MikamiUitOpen 0:ed4b35ea9367 31 printf("\r\n開始します.\r\n");
MikamiUitOpen 0:ed4b35ea9367 32
MikamiUitOpen 0:ed4b35ea9367 33 myAdDa_.Start(FS_); // 標本化を開始する
MikamiUitOpen 0:ed4b35ea9367 34
MikamiUitOpen 0:ed4b35ea9367 35 while (true)
MikamiUitOpen 0:ed4b35ea9367 36 {
MikamiUitOpen 0:ed4b35ea9367 37 //------------------------------------------------------------
MikamiUitOpen 0:ed4b35ea9367 38 // ここにディジタルフィルタ等の処理を記述する
MikamiUitOpen 0:ed4b35ea9367 39 float xn = myAdDa_.Input(); // 入力
MikamiUitOpen 0:ed4b35ea9367 40 // wait_us(92); // 標本化周波数が 10 kHz で,
MikamiUitOpen 0:ed4b35ea9367 41 // デフォルトの補間用フィルタを使う場合,
MikamiUitOpen 0:ed4b35ea9367 42 // 92 μs 以下の実行時間の信号処理であれば OK
MikamiUitOpen 0:ed4b35ea9367 43 // wait_us(90); // 補間用フィルタとして 96 次のフィルタを使う場合.
MikamiUitOpen 0:ed4b35ea9367 44 // 90 μs 以下の実行時間の信号処理であれば OK
MikamiUitOpen 0:ed4b35ea9367 45 float yn = xn; // これは入力信号に何も処理しない例
MikamiUitOpen 0:ed4b35ea9367 46 myAdDa_.Output(yn); // 出力
MikamiUitOpen 0:ed4b35ea9367 47 //------------------------------------------------------------
MikamiUitOpen 0:ed4b35ea9367 48 }
MikamiUitOpen 0:ed4b35ea9367 49 }