I2S制御関数群. More...
#include "i2s_subsystem.h"
#include "kernel_cfg.h"
#include <LPC17xx.h>
#include <kernel.h>
#include <t_syslog.h>
Data Structures | |
struct | LLI |
DMA用のリンクリストの構成要素型. More... | |
struct | I2S_AUDIO_DATA |
I2S用データ. More... | |
Functions | |
void | i2s_init () |
I2S 初期化ルーチン. | |
void | i2s_start () |
I2S 開始。DMA初期化後に行う. | |
void | i2s_dma_init () |
DMA初期化. | |
AUDIOSAMPLE * | i2s_getTxBuf () |
現在ソフトウェアが使えるI2S TXバッファをかえす。 | |
AUDIOSAMPLE * | i2s_getRxBuf () |
現在ソフトウェアが使えるI2S RXバッファをかえす。 | |
void | i2s_dma_intr_handler () |
I2S DMA 割り込みハンドラの初期化を行う. | |
void | audio_task (intptr_t exinf) |
オーディオDMAに同期して動くタスク | |
Variables | |
static struct I2S_AUDIO_DATA | audio_data |
I2S用データ. |
I2S制御関数群.
void audio_task | ( | intptr_t | exinf | ) |
オーディオDMAに同期して動くタスク
exinf | コンフィギュレータがタスクに引き渡す変数。このタスクは無視する。 |
dma_intr_handler からのSEM_I2SDMA セマフォ・シグナルを受けて しかるべきデータ・バッファを特定し、信号処理を行う。
なお、このタスクはシステム起動時にはインアクティブである。 main_task から明示的にアクティベートして始めて動作を開始する。
void i2s_dma_init | ( | ) |
DMA初期化.
I2Sに関連づけされたDMAを初期化する。同時に、LLIを初期化して、ピンポンバッファをすぐに使えるような 状態にする。受信DMAは各バッファの受信完了ごとにDMA割り込みをおこす。送信では起こさない。プログラムは これに同期してタスクと協調動作をする。
DMA受信割り込みは dma_intr_handler で処理を行う。
void i2s_dma_intr_handler | ( | ) |
I2S DMA 割り込みハンドラの初期化を行う.
LPC1768のDMA割り込みステータスをチェックし、I2S DMA 受信TC割り込みが発生していたら、その割り込みに対処する。
AUDIOSAMPLE* i2s_getRxBuf | ( | ) |
現在ソフトウェアが使えるI2S RXバッファをかえす。
DMAが使用していないバッファをかえす。DMAと同期したプログラムを書く場合には必ず このルーチンを使用してプログラムが使ってもよいバッファを決定する。
AUDIOSAMPLE* i2s_getTxBuf | ( | ) |
現在ソフトウェアが使えるI2S TXバッファをかえす。
DMAが使用していないバッファをかえす。DMAと同期したプログラムを書く場合には必ず このルーチンを使用してプログラムが使ってもよいバッファを決定する。
void i2s_init | ( | ) |
void i2s_start | ( | ) |
I2S 開始。DMA初期化後に行う.
i2s_init ルーチンと i2s_dma_init ルーチンによって準備を終えた後、 このルーチンを呼び出してi2sによる転送を始める。
struct I2S_AUDIO_DATA audio_data [static] |
I2S用データ.
DMAのLLIやバッファなどはすべてこの変数にパッケージしている。こうすることで、グローバル空間に名前が散らかることを阻止できる。