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

main.cpp

Committer:
MikamiUitOpen
Date:
2018-07-03
Revision:
0:ed4b35ea9367
Child:
1:4d42dd760b73

File content as of revision 0:ed4b35ea9367:

//--------------------------------------------------------------------------
//  NUCLEO-F446RE で アナログ信号の入出力の際に,出力の標本化周波数を,
//  入力の標本化周波数の4倍にするクラス F446_LinearPhase の使用例
//
//  F446_LinearPhase クラスでは出力の補間フィルタとして直線位相 FIR フィルタを使用
//
//  処理の内容:AD 変換器からの入力をそのまま DA 変換器に出力する
//
//  2018/07/03, Copyright (c) 2018 MIKAMI, Naoki
//--------------------------------------------------------------------------

#include "F446_LinearPhase.hpp"
#pragma diag_suppress 870   // マルチバイト文字使用の警告抑制のため
#include "coefficients.hpp" // 補間フィルタとしてデフォルト以外のものを使う場合

using namespace Mikami;

const int FS_ = 10000;      // 入力の標本化周波数: 10 kHz

// 出力標本化周波数を4倍にするオブジェクト,デフォルトの補間用フィルタを使う場合
F446_LinearPhase myAdDa_;

// 第一引数を 0 にすると,出力の際に補間処理は行われない
//F446_LinearPhase myAdDa_(0);

// 出力標本化周波数を4倍にするオブジェクト,デフォルト以外の補間用フィルタを使う場合
//F446_LinearPhase myAdDa_(ORDER_, HK1_, HK2_, HK3_);
   
int main()
{
    printf("\r\n開始します.\r\n");

    myAdDa_.Start(FS_);         // 標本化を開始する

    while (true)
    {
        //------------------------------------------------------------
        // ここにディジタルフィルタ等の処理を記述する
        float xn = myAdDa_.Input(); // 入力
//        wait_us(92);                // 標本化周波数が 10 kHz で,
                                    // デフォルトの補間用フィルタを使う場合,
                                    // 92 μs 以下の実行時間の信号処理であれば OK
//        wait_us(90);                // 補間用フィルタとして 96 次のフィルタを使う場合.
                                    // 90 μs 以下の実行時間の信号処理であれば OK
        float yn = xn;              // これは入力信号に何も処理しない例
        myAdDa_.Output(yn);         // 出力
        //------------------------------------------------------------
    }
}