マイコン工作実験日記

Microcontroller を用いての工作、実験記録

USBスピーカからのFM再生

2009-06-30 23:10:12 | MP3プレーヤ
FMチューナからの音声出力をCodec経由でI2Sで受けて、USBスピーカから出力できるようにしました。



USBスピーカへの出力はすでにpcmsender_taskとして用意してあるので、新たにI2S入力から受信したFM音声データをpcmsender_taskに渡すタスク(tuner_task)を作ってやっただけです。



player usbで出力先としてUSBスピーカを選択しておき、fm startコマンドにより、tuner_taskが起動されることでUSBスピーカからの出力ができます。pcmsender_taskは I2Sへの出力もできるので、結果的にI2Sで受けたFM音声データをI2Sへ送り戻すことでヘッドフォンから再生することも可能です。しかしながら、I2S受信も割り込み処理で受けているので、送受ともに割り込みで受けることになります。実際に試してみると、割り込み処理負荷が増えた結果、データのとりこぼしが発生してしまいます。割り込みでFIFOのデータを送受するのではなく、DMAを使ってデータの送受をした方が良さそうです。

また、現在はtuner_taskはplayer_taskの配下にはないので、操作を間違えるとtuner_taskとmp3decoder_taskの両方を走らせることもできてしまいます。player_taskで一元的に管理して、操作性も良くするような改善が必要だと考えています。