03.PCM5102A向けのプログラム修正



PCM5102Aのオーディオデータフォーマットの仕様に整合するようにソフトウェアのプログラムを修正します。

準備

02.ソフトウェアプロジェクトの作成」を実施していない場合は、実施します。

PCM5102AのI2Sのオーディオデータフォーマットの仕様

PCM5102Aは、業界標準のオーディオデータフォーマットの「Standard I2S」および「left-justified」をサポートしています。
データフォーマットは、FMTピンを使用して選択します。
FMTピンがLOWは「Standard I2S」です。FMTピンがHIGHは「left-justified」です。
(「PCM5102のデータシート」の「PCM Audio Data Formats and Timing」より)

FMTピンは、はんだジャンパーH4Lによって、LOWになっています。このとき、オーディオデータフォーマットは、「Standard I2S」です。
(「01.ハードウェア組み立て」の「接続表」参照)

タイミングチャート
(「PCM5102のデータシート」の「PCM Audio Data Formats and Timing」より)

ソフトウェアのプログラムのオーディオデータフォーマットの仕様

ESP-IDFのI2S APIは、通信フォーマットの「Philips Format」「MSB Format」「PCM Short Format」をサポートしています。
(「Inter-IC Sound (I2S) - ESP32 - — ESP-IDF Programming Guide latest documentation」の「I2S Communication Mode」より)

タイミングチャート
(「Inter-IC Sound (I2S) - ESP32 - — ESP-IDF Programming Guide latest documentation」の「I2S Communication Mode」より)

仕様に整合するようにソフトウェアのプログラムを修正

タイミングチャートから、PCM5102AのI2Sのオーディオデータフォーマット「Standard I2S」は、I2S APIの通信フォーマット「Philips Format」です。

ソフトウェアのプログラムのオーディオデータフォーマットの設定は、「bt_app_av.c」ファイルの「bt_i2s_driver_install 関数」と「bt_av_hdl_a2d_evt 関数」の「slot_cfg」によって、行います。

bt_app_av.c のオーディオデータフォーマットの設定に関するコード (修正前)


「I2S_STD_MSB_SLOT_DEFAULT_CONFIG」というコードがあります。

「I2S_STD_MSB_SLOT_DEFAULT_CONFIG」の定義は、「$HOME/esp/esp-idf/components/driver/i2s/include/driver/i2s_std.h」にあります。すぐ上には、「I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG」の定義があります。

参考)i2s_std.h の「I2S_STD_MSB_SLOT_DEFAULT_CONFIG」「I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG」の定義のコード


仕様に整合するように「bt_app_av.c」ファイルの「bt_i2s_driver_install 関数」と「bt_av_hdl_a2d_evt 関数」の「slot_cfg」の
「I2S_STD_MSB_SLOT_DEFAULT_CONFIG」

「I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG」
に書き換えます。
bt_app_av.c のオーディオデータフォーマットの設定に関するコード (修正後)

ビルド

以下のコマンドを実行し、プロジェクトのプログラムをビルドします。



完了するまで、しばらく待ちます。

フラッシュ

ビルド結果を、マイコンに書き込むフラッシュのコマンドは以下の書式です。



シリアル通信デバイス名が「/dev/ttyUSB0」の場合は、以下のコマンドを実行します。



完了するまで、しばらく待ちます。

動作確認

フラッシュが完了すると、マイコンに書き込まれたプログラムが起動します。

Bluetooth機能が搭載されているデバイス(スマートフォンやパソコン)から、作成した「Bluetooth Audio Receiver」にBluetooth接続します。
作成した「Bluetooth Audio Receiver」のデバイス名は「ESP_SPEAKER」です。

作成した「Bluetooth Audio Receiver」のイヤホンジャックに接続したイヤホンやスピーカーから、接続元のデバイスで再生したオーディオを聴くことができます。

PCM5102Aを通して再生されるオーディオが適切なものになりましたが、「02.ソフトウェアプロジェクトの作成」のときと音質の変化は感じられませんでした。

(10秒ごとにオーディオ送信側のボリュームが少しずつ上がっていく動作をすることがあります。「04.ボリューム変更シミュレーション機能の無効化」にて対策します)

関連ページ

前項目:02.ソフトウェアプロジェクトの作成

次項目:04.ボリューム変更シミュレーション機能の無効化