メインシーケンス作成のためデータハンドリング内容と定数を整理
1.オーディオデータ遷移
1)オーディオデータバッファとDAC PWMデータ遷移
|
関数 |
バッファ |
クロック |
処理 |
ホスト |
ー |
ー |
ホスト |
1msec毎に1 PACKETオーディオデータを送信 |
デバイス |
USBD_AUDIO_DataOut() |
&haudio->buffer |
データを順次バッファに保存 |
|
AUDIO_AudioCmd_FS() |
pbuf |
TransferComplete_CallBack_FS() によりバッファデータを伴いAUDIO_CMD_PLAY を発行 |
||
main() |
pwm_buf |
デバイス |
データをデコードして保存するAUDIO_OUT_PACKET_NUM 相当の時間が経過したらTransferComplete_CallBack_FS() を呼ぶ |
2)再生スタートタイミング詳細(実測値)
・再生スタート時 AUDIO_CMD_START と AUDIO_CMD_PLAY 間は実測20.9usec
・AUDIO_CMD_START と AUDIO_CMD_PLAY 間で使える処理時間は 6.84usec(0.67 + 6.17)
・cmd値をUSB割込処理外のmain関数等に持ち出して処理するとUSB割込後の処理となる
これは割込フラグが初期セットされているため発生する
2.オーディオデータ関連定数
1)定数一覧
シンボル |
設定値 |
単位 |
内容 |
USBD_AUDIO_FREQ |
48000 |
Hz |
サンプリング周波数 |
AUDIO_OUT_PACKET |
192 |
byte/PACKET |
1パケットのバイト数 ((USBD_AUDIO_FREQ * 2U * 2U) / 1000U) |
AUDIO_OUT_PACKET_NUM |
80U |
PACKET/buff |
バッファ収容パケット数 |
AUDIO_TOTAL_BUF_SIZE |
15360 |
byte/buff |
AUDIO_OUT_PACKET * AUDIO_OUT_PACKET_NUM |
size |
ー |
half word/buff |
バッファ収容データ(16bit)数 AUDIO_AudioCmd_FS() 引数 |
2)タイマー類設定値一覧
所属 |
項目 |
設定値 |
設定コード・計算式 |
SYSTEM |
システムクロック SYSTEM_FREQ |
96MHz |
ー |
TIM2 |
Period (TIM2_P_BASE) |
2000-1 |
SYSTEM_FREQ/USBD_AUDIO_FREQ – 1 = TIM2_P_BASE - 1 |
TIM1 |
Period (TIM1_P_BASE) |
3840-1 |
AUDIO_TOTAL_BUF_SIZE/4 – 1 = TIM1_P_BASE - 1 |
Compare Pulse |
1920-1 |
AUDIO_TOTAL_BUF_SIZE/4/2 – 1 = TIM1_P_BASE/2- 1 |
|
DMA PWM |
バッファサイズ AUDIO_DMA_BUF_SIZE |
7680 |
AUDIO_TOTAL_BUF_SIZE/4 * 2 = TIM1_P_BASE * 2 |
保存開始 |
1920 |
AUDIO_TOTAL_BUF_SIZE/4 * 2 / 4 = AUDIO_DMA_BUF_SIZE / 4 |
(3)定数実装コード <main.h>