ハイレゾ高音質携帯オーディオプレーヤ マニュアル
1: このプレーヤについて
高性能なイヤフォン、ヘッドフォンと高性能な小型DAC、アンプの組み合わせは、近年普及してきましたが、携帯して利用することは難しいのが現状です。一方携帯 オーディオプレーヤは、音質の面で満足のいくものとは言い難いものばかりです。更にハイレゾオーディオのモバイルリスニングとなると、最近ようやく幾つか製品が出 始めはしましたが高価で入手法も限られ、手が届きにくい状況にあります。 本機は、24 ビット 96kHz ハイレゾ音楽が再生可能なオーディオプレーヤです。リチウムイオン/ポリマーバッテリ 2 直列電源により、従来の携帯オーディオプレーヤで難 しかった8~7V 電圧での OP アンプ駆動を実現しました。通常一般の携帯オーディオプレーヤでは望むべくも無い大容量コンデンサとあわせて、従来の携帯オーディ オプレーヤとは比較にならない高音質を実現しました。 再生楽曲フォーマットは(現在のところ)WAV と MP3 をサポートし、MicroSD メモリカードをアクセスして曲を再生します。操作は(現在のところ)曲のスキップ及び巻き戻 しスキップ、操作のロックが可能です。 本プレーヤはバッテリ充電回路を内蔵しており、12V の AC アダプタを使って充電が可能です。 回路図及びプログラムソースは全てが入手可能です。基板上には外部アンプを接続するためのライン出力、UART、I2C、LED 出力用のポートが用意されており、拡 張が可能です。 更に詳細なドキュメントが以下のサイトにありますのでご参照下さい。 http://www.wikihouse.com/madnoda/2: 必要な部品
以下の部品が必要です。 J1 基板実装2.1 型 DC ジャック 秋月 40 円 U$1 RD925G 10kA カーブ 二連ボリューム マルツ 180 円 R43,R45 2.2kΩ 抵抗 0603 千石 10 個 50 円 以下は例です IC3 LT1364 OP アンプ マルツ 640 円 IC4 NJM4580D OP アンプ 秋月 4 個 200 円 MUSES8820 OP アンプ 秋月 400 円 C10 100uF 電解コンデンサ 千石など C31,C32 220uF 電解コンデンサ 千石など U$2,U$5,U$6 タクトスイッチなど 秋月など 10 円 JP2 超小型双極両投スイッチ 千石/秋月 70 円 JP4 超小型双極両投スイッチ 千石/秋月 70 円 JP5 フォンジャックに接続 以下の部品は必要に応じて追加してください。 Q2 32.768kHz 水晶発振子TC26H 型 秋月 4 個 100 円IC3 は LT1364 相当のスルーレートを持つものを推奨します。IC4 は R43,R45 を 2.2k から 100k に交換すると JFET 入力の OP アンプ、例えば MUSES8920 なども使 えます。 P7 ポートからライン出力を取り出したい方は、C21,C22 に 10uF の無極性コンデンサを実装してください。 JP4 は電源スイッチ(正確にはバッテリ/USB 電源切り替えスイッチ)、JP2 はプログラム書き換えの際に操作するものです。 バッテリ接続コネクタJP3 のピン間にある抵抗を除去することで、バッテリにサーミスタを付与することができます。サーミスタからの入力は JP3 の 2 番ピンに入れてくだ さい。
3: 動作について
MicroSD カードは Class10 のものを使用してください。アクセス速度は高レート WAV ファイル再生時に特に重要になります。フォーマットは FAT16 及び FAT32 に対応 しており、買ったままのものが使用可能です。各ファイルシステムで許容されているファイル名なら使用に問題はありません。楽曲の再生はデータファイルがMicroSD カードに書き込まれた順になります。現在カード容量は32GBytes まで対応しています。
バッテリー充電には12V(1A 以上)の AC アダプタ、2.1φ 径のプラグのものを使用してください。秋月で売っているものなら大丈夫です。充電開始で LED が点灯します。 急速充電が終了するとLED は消灯し、自動的にトリクル充電(小電流補充電)モードに入ります。いつまでも充電が終わらない場合、充電に失敗している場合があります。 サーミスタを使っている場合は、サーミスタ電圧をチェックしてみてください。
ボタン操作はU$6 が次曲頭出し、U$5 が後方曲頭出し、U$2 が ON で操作ロックです。
USB マスストレージクラス対応、FLAC 対応、ファイルリスト再生対応は将来の予定に入ってはいますが、自分でやって成果を公開すると、きっとみんなに喜ばれるで しょう。 その他DSD 対応やディスプレイ対応、操作系改良など、できることは色々とありますので、是非挑戦してみてください。
4:実装に関しての注意
JP3 はバッテリ接続コネクタポートです。小丸の付いているほうが 1 番ピンです。1 番にバッテリのプラス、3 番にマイナスを接続します。2 番ピンはサーミスタ接続用で す。サーミスタは10kΩ のものが対応します。サーミスタを使用しない場合は、このコネクタピン間の抵抗を除去しないでください。 実のところサーミスタを付けての充電 はまだ成功したことがありません。 JP5 はフォンジャックポートです。小丸の付いているほうが 1 番ピンです。1 番が L、2 番が R、3 番が GND です。例えばマルツで売っている MJ074N 3.5mm パネル付 けステレオミニジャックを使う場合、ジャック端子にある番号1 番を 1 番、2 番を 2 番、3 番を 3 番に接続してください。 JP7 は無増幅のライン出力ポートです。他のヘッドフォンアンプ等を使用される場合に使うことができます。その場合 C21、C22 に無極性コンデンサ 10uF を付けてくだ さい。 IC3 の OP アンプによっては、R28,R29,R30,R31 の値は変更してください。IC4 を JFET 入力の OP アンプ、例えば MUSES8920 にする場合は、R43.R45 を 2.2kΩ から 100kΩ へと変更してください。
下面図
5:プログラムの入手と書き込み
このプレーヤにはプログラムが既に書き込まれています。 更にプログラムのアップデートやバグフィックスに対応していますが、その為にはプログラムを書き込む環境を整えなければいけません。5.1
ではそれを説明します。 プログラムは用意されたものを書き込む方法と、自分でプログラムのソースコードとコンパイル環境を整え、自作する方法の2
つがあります。まずは前者を 試してください。これも5.1
で説明しています。後者は5.2
、5.3
で説明します。自作することによって自由に機能を追加、改変することができるようになります。5.1:プログラムの書き込み
Windows ユーザは以下の URL より書き込み用のツール DfuSe をダウンロード、インストールしてください。 STSW-STM32080:DfuSe USB device firmware upgrade STMicroelectronics extension
http://www.st.com/web/jp/catalog/tools/PF257916
下部の"サンプル&購入"の Download ボタンを押してください。 書き込みに使うツールはDfuSe Demonstration です。
プレーヤ基板をUSB ケーブルで PC と接続し、電源スイッチと Program スイッチを入れてください。ドライバのインストールが始めれば、マイコンとその周辺回路の半田 づけはうまくいっています。ドライバのインストールが終わったら、DfuSe を起動します。
プレーヤ基板はOS から、STM Device in DFU mode として認識されます。DfuSe のウィンドゥ左上にも同様の表示がある筈です。次いで下部中央の Choose..ボタンを 押して、書き込むファイルを選択します。 書き込むファイルは、以下のURL よりダウンロードしてください。 http://www.wikihouse.com/madnoda/ 選択したら、DfuSe の画面さっきのボタンのすぐ右、Upgrade のボタンを押してください。書き込みと、正しく書けたかを検査するベリファイが行われます。正常終了で書 き込みは成功、終了です。電源スイッチを落とし、Program スイッチを動作側にしてください。 Unix(linux,Mac)ユーザは、dfu-util を使います。 http://dfu-util.gnumonks.org/ サイトの指示に従って環境を構築してください。書き込むファイルは同じです。
5.2:プログラムソースの入手とコンパイル
プログラムのコンパイルにはGCC コンパイラを使用します。Windows ユーザはまず Cygwin 開発環境を整えてください。Windows ユーザも Cygwin 環境を使うことで、 以下の説明もUnix ユーザと同様に実行できます。
5.2.1:Cygwin の導入
Cygwin 導入には、 http://cygwin.com/ でSetup.exe をダウンロードし、実行することで好きなモジュールごとに選んでインストールすることになります。また Setup.exe を使うことで最新版へのアップデートも可 能となります。Setup.exe を実行し、[install from internet]を選択すると、インストールするディレクトルを聞かれます。ここはできるだけデフォルトの[C:\cygwin]のままで。 Install For は[All Users],Default Text file Type は[Unix]に。
インストールは、まず選択したパッケージファイルを指定したテンポラリディレクトリに展開してから行われます。Local Packege Directory はその指定です。 Select Your Internet Connection は[Direct connection]で。
Choose A Downloads site で、ダウンロード先を選択します。 Select Packages で、好きなパッケージを選んでインストールします。 Bin?は実行可能なバイナリ、Src?はソースコードを意味します。 この時点で、Cygwin システムとして必要最小限のパッケージが選択されています。 開発環境としてあと必要なのは、 +All +Base <= Bin?全てを選択する +Devel <= 以下のものの Bin?,Src?双方を選択する
gcc binutils flex bison libgmp3-dev libmpc-dev libmpfr-dev libncurses5-dev +InterPreters <= gawk,m4,perl の Bin?を選択
あとは好きなものを。CVS,Subversion,git は選択べきです。 +Devel で選択する GCC は 4.*系列を選びましょう。ソースも忘れずに。
インストールが終了すると、デスクトップにCygwin のアイコンが出来るのでダブルクリックして起動します。 見かけはDOS コマンドプロンプトに似ていますが、Unix 環境です。ためしに ls や cat を実行してみてください。
5.2.2:Newlib の導入
newlib は組み込み用の C/C++ライブラリです。
newlib はさっきの Cygwin のサイトからジャンプしたサイトからダウンロードできます。サイト左端のリンクリスト一番下の[sources.redhat.com] http://sources.redhat.com/
再び左端の[Prejects]
http://sources.redhat.com/projects.html 下のほうの[newlib]
http://sources.redhat.com/newlib/ <=最初からここへ行くも良し
左端の[Download]から Source snapshot をとって来ます。一番下の文章中の[newlib ftp directory]というリンクの先から、一番新しいものをダウンロードしてきます。 *もちろん、CVS で落とすのも OK
ダウンロードしたファイルは C:/Cygwin/usr/src にコピーします。
解凍はCygwin 環境で行います。まず cd /usr/src で、ダウンロードしたファイルの位置に飛びます。Cygwin の中では、C:\Cygwin が / つまりルートディレクトリとなり ます。
tar -zxvf newlib-1.14.0.tar.gz これで解凍されます。
5.2.3:binutils の準備
/usr/src には、ソースコードのダウンロードを選択したパッケージが、既に展開されていると思います。 その中にcd し、次のようなコマンドを実行します
./configure --target=arm-m4-eabi --prefix=/opt/stm32-tools/ --enable-interwork --enable-multilib --disable-nls --disable-libssp configure コマンドは環境に応じてコンパイルの下準備をします。
-target オプションは ARM アーキテクチャの elf バイナリ版を作るということを意味しています。elf についてはここでは触れません。
-prefix オプションは、クロスコンパイル環境をどこに構築するかを示します。ここでは/usr/cross を推奨します。先にディレクトリを作っておきましょう。 mkdir /usr/cross -disable-nls は多言語対応オプションを外すことを意味しています。 次に、 make を実行します。無事終了したら(しばらくかかります)、 make install を実行します。
5.2.4:GCC の準備
/usr/src/gcc-4.*.* へ cd します。 まず、newlib へのシンボリックリンクを張ります。まぁ、ショートカットみたいなもんです。 ln -s ../newlib-1.19.0/newlib . コンパイル先ディレクトリを掘ります。 mkdir dist cd dist コンフィギュレーションを行います。../configure --target=arm-m4-eabi --prefix=/opt/stm32-tools/ --enable-interwork --enable-multilib -with-gmp=/usr/local -with-mpfr=/usr/local -with-mpc=/uar/local --enable-languages="c" --with-newlib --with-headers=../../newlib-1.19.0/newlib/libc/include/ --disable-libssp --disable-nls --with-system-zlib
……長いです。うまくいったら、 dist/Makefile の program_transform_name = -e s,^,arm-m4-eabi-, を、 program_transform_name = -e s,^,/usr/cross/bin/arm-m4-eabi-, と書き換えます。そして、 make make install 次いでnewlib をコンパイルします。 cd ../.. cd newlib-1.19.0/
./configure --target=arm-m4-eabi --prefix=/opt/stm32-tools/ --enable-interwork --enable-multilib --disable-libssp --disable-nls -with-gmp=/usr/local -with-mpfr=/usr/local -with-mpc=/uar/local
make -j`getconf _NPROCESSORS_ONLN` CFLAGS_FOR_TARGET="-mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16" all make install
make に長いオプションが付きます。 cd ..
cd gcc-4.6.2/dist
make -j`getconf _NPROCESSORS_ONLN` CFLAGS_FOR_TARGET="-mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16" CXXFLAGS="-mcpu=cortex-m4 -mthumb -mfloat-abi=softfp -mfpu=fpv4-sp-d16" all
make install
もう一度GCC のディレクトリに戻ってコンパイルします。 これでGCC が使用可能となります。
5.2.5:プログラムソースの準備
バージョン管理ツールGit を使い、Github サイトから以下のようなコマンドでプログラムソースを取得してください。 git clone https://github.com/madnoda/stm32f4-digitalaudioplayer stm32f4-digitalaudioplayer
以後もデバッグ、アップデートの度にプログラムソースは更新されますので、最新版(や過去のバージョン)を Git を使って取得してください。
5.2.6:必要なライブラリソースの準備
以下のようなライブラリが必要になります。 STM32F4 のライブラリ
STSW-STM32065 STM32F4 DSP and standard peripherals library を以下の URL より入手してください。 http://www.st-japan.co.jp/web/jp/catalog/tools/PF257901
MAD:MPEG Audio Decoder
libbmad-0.15.1b.tar.gz を以下の URL より入手してください。 http://sourceforge.net/projects/mad/files/libmad/
ねむいさんのブログより以下のライブラリを入手してください。 TFT/OLED Control Sample with ChaN's FatFs(SDIO&MMC Driver) http://nemuisan.blog.bai.ne.jp/?cid=7947
プログラムソースのディレクトリと同じ場所に解凍してください。
5.3:プログラムのコンパイル
プログラムソースの位置はgcc やライブラリにパスが通っている必要があります。パスが通っていなければ、makefile で直接指定してください。 例: TCHAIN = arm-m4-eabi ⇒TCHAIN = /usr/cross/bin/arm-m4-eabi
取得したライブラリのバージョンがmakefile に書かれているものと食い違っている場合があります。実際に取得したライブラリのバージョンにあわせて makefile は書き換 えて下さい。
コンパイルに成功すると様々なファイルが生成されますが、使用するのはmain.s19 です。これを DfuSe ツールの中の DFU File manager で拡張子 dfu のファイルに変 換し、5.1 で説明した手順でこれをボード上のマイコンに書き込みます。
6: 回路図、寸法図
この寸法図はケース製作等の参考と してください。