afw.h

説明を見る。
00001 /** \file afw.h
00002  *  \brief フレームワーク宣言ファイル
00003  *  \author アナログ・デバイセズ株式会社
00004  *  \version 1.0
00005  *  \date    2006.Sep.8
00006  *
00007  * 各種パラメータの宣言ファイル。パラメータのうち、afw::SAMPLE_PER_INTRはユーザーが変更して
00008  * もよい。メインルーチンからはafw::initとafw::startAudioを呼び出してオーディオ処理を開始する。
00009  */
00010 #pragma once
00011 
00012 /** オーディオ・フレームワーク
00013 *
00014 * ADSP-BF537 EZ-KIT Lite上で動作するオーディオフレームワーク関連の関数および変数を含む名前空間。
00015 * プログラマは以下の関数を呼んでオーディオ処理を開始する。
00016 * - afw::init
00017 * - afw::startAudio
00018 */
00019 //--------------------------------------------------------------------------//
00020 // Header files                                                             //
00021 //--------------------------------------------------------------------------//
00022 //#include <sys\exception.h>
00023 #include <signal.h>
00024 #include <cdefBF537.h>
00025 #include <shortfract>
00026 
00027 namespace afw{
00028 
00029     //--------------------------------------------------------------------------//
00030     // Symbolic constants                                                       //
00031     //--------------------------------------------------------------------------//
00032     /** 左チャンネル指定定数
00033       *
00034       * audioRxBufferおよび、audioTxBufferにアクセスする際、最下位の添え字を指定
00035       * するときに使う。
00036       *
00037       */
00038     const int LEFT_CH = 0;
00039     /** 右チャンネル指定定数
00040       *
00041       * audioRxBufferおよび、audioTxBufferにアクセスする際、最下位の添え字を指定
00042       * するときに使う。
00043       *
00044       */
00045     const int RIGHT_CH = 1;
00046 
00047     /** バッファ数宣言定数
00048       *
00049       * DMA用のバッファ領域を格納する際に、割り込みいくつ分のバッファを用意するかを宣言する。
00050       * 具体的にいえば、トリプルバッファなので3を宣言する。過去3回の割り込み分のデータをバッファに
00051       * 格納できるということである。
00052       *
00053       */
00054     const int INTR_PER_BUFFER  = 3; // 変更してはならない。トリプルバッファのために3つの領域を確保
00055 
00056     /** サンプルあたりチャンネル数の宣言
00057       *
00058       * サンプルあたり何チャンネルのデータを伝送するか宣言する。I2Sはステレオなので、この値は2である。
00059       * この値はユーザーが変更してはならない。
00060       *
00061       */
00062     const int CH_PER_SAMPLE  = 2;   // 変更してはならない。I2Sはサンプルあたり2チャンネルのデータを持つ
00063 
00064     /** 割り込みあたりのサンプル数
00065       *
00066       * 何サンプルのデータを受信したら割り込みをかけるかを指定する。この値を大きくするほど
00067       * 効率がよくなるが、遅延も増大し、また、必要なメモリ量も増える。したがって、これらの
00068       * バランスを考えながらユーザーが値を決めることになる。
00069       */
00070     const int SAMPLE_PER_INTR = 8;  // 変更可能。何サンプルごとに割り込みをかけるか指定する。
00071 
00072     /** オーディオ・コーデックのリセット時間
00073       *
00074       * EZ-KIT Lite BF537では、オーディオ・コーデックのリセット信号がADSP-BF537のPF12に
00075       * 接続されている。コーデックの使用に先立って、この信号をアサートしなければならない。
00076       *
00077       * このマクロは、リセット信号をアサートする時間を与える。時間はループの繰り返し
00078       * 回数なので、あまり精度は高くない。注意深い値が必要である。
00079       */
00080     const int CODEC_RESET_PULS_WIDTH  = 0x10000;
00081 
00082     /** SPORT0のワード長
00083       *
00084       * SPORT0設定時に使うワード長である。EZ-KIT BF537に搭載されているコーデックは
00085       * I2S回線のデータを24bit使うので、ここでは24を用意している。
00086       */
00087     const int SPORT0_SLEN_24 = 0x0017;
00088 
00089 
00090     //--------------------------------------------------------------------------//
00091     // 大域変数                                                                 //
00092     //--------------------------------------------------------------------------//
00093 
00094     /** SPORT0 DMA 送信バッファ
00095       *
00096       * DMAが利用するバッファ。トリプル・バッファ構成をとるので、
00097       * 3D配列の最上位の添え字は、そのバッファ切り替えに使う。2番めの添え字は
00098       * 割り込み内のサンプル位置、3番目の添え字はサンプル内のチャンネル位置を
00099       * 与える。
00100       */
00101     extern volatile int txBuffer[][SAMPLE_PER_INTR][CH_PER_SAMPLE];
00102     /** SPORT0 DMA 受信バッファ
00103       *
00104       * DMAが利用するバッファ。トリプル・バッファ構成をとるので、
00105       * 3D配列の最上位の添え字は、そのバッファ切り替えに使う。2番めの添え字は
00106       * 割り込み内のサンプル位置、3番目の添え字はサンプル内のチャンネル位置を
00107       * 与える。
00108       */
00109     extern volatile int rxBuffer[][SAMPLE_PER_INTR][CH_PER_SAMPLE];
00110 
00111     //--------------------------------------------------------------------------//
00112     // 関数プロトタイプ                                                         //
00113     //--------------------------------------------------------------------------//
00114 
00115     void init(void);
00116     void startAudio(void);
00117 
00118     void rxISR( int signal );
00119 
00120         // processdata.cpp
00121     void initProcessData();
00122     void processData( 
00123                      const shortfract leftIn[], 
00124                      const shortfract rightIn[], 
00125                      shortfract leftOut[], 
00126                      shortfract rightOut[],
00127                      int count
00128                     );
00129 };
00130 

TalkThroughに対してMon Oct 30 17:10:05 2006に生成されました。  doxygen 1.5.0