次に必要なものの準備だ。"Audio playback and recording using the STM32F4DISCOVERY"というテストプログラムは、STM32F4-DiscoveryのAudioジャックを使い、

  • 内蔵するFlashに音声ソースを入れておき、それを繰り返し再生する(MEDIA_IntFLASH)
  • まず録音モードとして動き、外付けのUSBメモリに音声を録音、ついで再生モードとしてこの録音した音声を再生(MEDIA_USB_KEY)

という2種類のテストが行える。MEDIA_IntFLASHは本体(と、PCと接続するためのUSBケーブル)、それに適当なイヤホンが1個あればいいのだが、MEDIA_USB_KEYの方は外部にUSBメモリを接続する必要がある。USBメモリそのものは何でもいいのだが、問題はこのUSBメモリをイヤホンジャックの隣にあるMicro Aのコネクタに装着する必要があることだ(Photo01)。当たり前だが、Micro Aに直接ささるUSBメモリなんぞ見たことが無いので、何かしら変換ケーブルが必要である。

Photo01: ちょっと判りにくいが、イヤホンジャックの横にMicro Aコネクタがある。

アプリケーションノートを見るとさらっと"USB 'micro A male to B female' cable"を用意しろとか書いてあるのだが、まぁ普通はあまり持ち合わせがないだろう。何かしら変換アダプタを作っても良かったのだが、Amazonだとたとえばこれが\630とかで出ており、即日入手できるので素直にオーダーしてしまった(Photo02)。ちなみに、既にMicro A-USB Aのケーブルを持っている人なら、この変換アダプタを使ってUSBメモリを繋ぐ、という方法もある(Photo03)。こちらは\399と更に安く上がった。

Photo02: エレコムのMPA-EMA015BK。今後もこのMicro Aに色々繋ぐことを考えると、この際買ってもいいだろうという気になった。安かったし。

Photo03: 変換名人のUSB中継A(メス)-A(メス) USBAB-AB。これに適当なMicro A-USB Aのケーブルを組み合わせても利用できた。

さてでは実際にこれをやってみよう。まずIAR Embedded Workbench for ARM(EWARM)を起動後(Photo04)、「ファイル」→「開く」→「ワークスペース」を選び(Photo05)、前回展開したZIPファイルの中の、

STM32F4-Discovery_FW_V1.1.0\Project\Audio_playback_and_record\EWARM

というディレクトリの下にあるAudio_playback_and_record.ewwを指定する(Photo06)。

Photo04: インフォメーションセンターはデフォルトで表示される設定だが、

Photo05: EWARM用語では「ワークスペース」である。

Photo06: 筆者はF:\Programs\STM32F4の下にZIPファイルを展開した感じでこんな具合に。Audio_playback_and_recordの下には4種類の開発環境向けのプロジェクトが用意されているので、もしIAR Embedded WorkbenchではなくAtollic TrueSTUDIO STM32を使っているのであればTrueSTUDIOというディレクトリの下にプロジェクトファイルが置かれている。

ファイルが間違っていたりしなければ、正常にワークスペースが読み込まれるはずなので、「プロジェクト」→「すべてを再ビルド」を指定して全ファイルをビルドしなおす(Photo07)。正常に済めば、こんな表示になる筈だ(Photo08)。この状態で、ファームウェア(STM32F4-Discovery_Audio_IntFLASH.out)が完成である。

Photo07: 本当は単にビルドだけでいいのだけれど、念のために再ビルド。

Photo08: リンクが終わり、Error/Warningがなければ問題なし。

次はこれをダウンロードして起動である。「ツール」→「ダウンロードしてデバッグ」を指定するか、もしくは画面右上の、緑の三角形のアイコンをクリックすると、ファームウェアのダウンロードが始まる(Photo09)。このときにはLEDが赤/緑の点滅で知らせてくれる(Movie01)。

Photo09: 転送速度はあまり速くない(24KB/sec程度)こともあり、ちょっと待たされる印象。

動画
Movie01:

ダウンロードが終わったら、デバッガが立ち上がる(Photo10)。ここで「デバッグ」→「実行」を選択して、ファームウェアを実行させる(Photo11)。問題なくビルド/ダウンロードされていれば、ここで延々と同じフレーズの音声がイヤホンから流れてくる筈だ。

Photo10: 今回は紙面の都合上横幅を800pixelにしてウィンドウを構成しているが、実際にはワークススペース、ソースコード、逆アセンブルリスト、レジスタ値など色々なウィンドウを開く事になるので、WQXGA一杯ぐらいの幅がほしいところ。

Photo11: F5キー、あるいはツールバーの実行ボタン(「→→→」というアイコン)を押しても良い。

次に、MEDIA_USB_KEYの方にトライしてみよう。今度はMicroAコネクタに変換ケーブル経由でUSBメモリをさしておく。容量は何でもいいと思う(とりあえず筆者は余っていた4GBのものを挿してみた)が、一応FAT32にフォーマットしてあるものを使った。

さてファームウェアのビルドだが、ソースそのものは全く一緒で、別に再ロードする必要はない。「プロジェクト」から「ビルド構成の編集」メニューを選び(Photo12)、MEDIA_USB_KEYを選んでOKを押す(Photo13)。その後は再び再ビルドを掛け(Photo14)、ダウンロード&デバッグを行って実行を掛けるという、同じ手順の繰り返しである。

Photo12: 最初はソースコードに#defineで定義を入れるのかと思ったが、EWARMはもう少し賢かった。

Photo13: 初期値は"MEDIA_IntFLASH"が選択されている。

Photo14: こちらではWarningが1件出るが、とりあえず無視して良い。

実行すると、まずはボード中央でオレンジのLEDの点滅が始まる(Movie02)。この段階でイヤホンに向かって何かしゃべり、ついでボード中央のUSERボタン(青いボタン)を押すと、今度は青いLEDの点滅に切り替わる(Movie03)。こうすると、先ほどイヤホンに向かって喋った音声がイヤホンから再生されてくるのがわかる筈だ。もう一度USERボタンを押すと、再び録音に切り替わる事になる。

動画
Movie02:

動画
Movie03:

ちなみにこの段階でのファームウェアサイズは29108Bytes。32KBにはまだ若干のゆとりがある。このプログラム程度の複雑さなら32KB以内に収まる、という目安としても手ごろなサンプルである。

(続く)