FM音源プログラム TGSTMVL readme 2011/02/23 pcm1723 ●はじめに このプログラムは、 STMicroelectronics 製 STM32F100 マイコン・ボード STM32 Value Line Discovery 用の暫定版のFM音源プログラムです。 非商用利用のみ許可します。 内容的には、暫定第 2 版の「TGSTARM」プログラムと同一で、「STM32VL Discovery」 ボードに合わせて回路の一部を変更し、 Atollic TrueSTUDIO/STM32 Lite Version 1.4.0 開発環境でコンパイルできるように修正を加えました。 TrueSTUDIO/STM32 Lite の最新バージョンは、現在 2.0.1 ですが、最新バージョン では試していません。 ROM サイズは 45 Kバイト程度、RAM サイズは 7 Kバイト程度です。 オブジェクトの hex ファイルは、STMicro 製の「ST Visual Programmer」(STVP)を 利用して書き込みます。 あるいは、「Atollic TrueSTUDIO/STM32 Lite」でコンパイルし、作成された .elf ファイルを「デバッガ」を起動して書き込みます。 HEX のみのパッケージと、ソースリスト一式のパッケージがあります。 暫定版ですが、多くの部分は ADuC7026版や、V850版と同様なので、Web サイト http://www.geocities.jp/pcm1723/ のADuC7026版や、V850版の説明を参照してください。 ●機能の概要 含まれている音色データはフリーの「std.sb」から変換したものなので、上記 サイトの記述のように、「MA2 オーサリングツール」付属の音色データと差し 替えることをお勧めします。 ソースファイルの再コンパイルによらず、HEX ファイルの音色データ部分のみを 差し替える方法も用意してあります。 上記サイトの「音色データの差し替え/再コンパイルなしの差し替え」の項 http://www.geocities.jp/pcm1723/compile.htm#fmdata_4 を参照してください。 出来上がりのファイル名は、 Debug/TGSTMVLma.hex Debug/TGSTMVLma2.hex です。 デフォルトのサンプリング周波数は 16 kHz で、同時発音数は 8 です。 各 MIDI チャンネルとも、モノモード、つまり、1チャンネルあたり1音しか 発音できません。 暫定版なので LCD/キー入力機能がなく、同時発音数の切り替えは出来ません。 通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI 入力 (38.4 kbps) に対応して います。 プログラムを実行するとボード上のブルーの LED (PC8) が薄暗く点灯します。 CPU 負荷が小さい時は明るく、負荷が大きい時は暗くなります。 デューティーを測定できるテスターで PC8 端子を測定すると、CPU アイドル率の 大体の値が得られます。 アイドル率はデモ曲演奏時で 10 〜 20 % 程度です。 ●ハードウェア 回路図「TGSTMVL.pdf」を、HEX パッケージでは、この「readme.txt」ファイルと 同じフォルダ、ソース・パッケージでは「TGSTMVL\sch」フォルダに置いて あります。 オーディオ出力は内蔵 12 ビット DAC (DAC1)および、16 ビット・シリアル入力の ディジタル・オーディオ用 DAC の BU9480F に対応しています。 簡易的な処理なので、BU9480F 以外のDAC では音が出ない可能性があります。 内蔵 12 ビット DAC (DAC1) の出力は、PA4 端子 (P1 コネクタ、ピン 19) です。 BU9480F のピンと STM32 側の接続は次のようになります。 BU9480F STM32VL Discovery ---------------- ---------------------------------------- LRCK (ピン 5) PB1/TIM3_CH4 (P1 コネクタ、ピン 26) SDAT (ピン 6) PB15/SPI2_MOSI (P2 コネクタ、ピン 4) BCLK (ピン 7) PB13/SPI2_SCK (P2 コネクタ、ピン 6) 16 ビット・ステレオ DAC ですが、モノラル出力、つまり、左右のチャンネルからは 同一の音が出力されます。 入力は通常の MIDI 入力 (31.25 kbps) と、シリアル MIDI (38.4 kbps) に対応して います。 具体的なインターフェース回路は、Web サイトを参照してください。 インターフェース回路のマイコン側「RxD」出力を PA10/USART1_RX  (P3 コネクタ、ピン 8) につなぎます。 サウンドボート用のいわゆる MIDI ケーブルは +5V 用ですが、GRAVIS ULTRASOUND の MIDI 接続ボックスで試したところ、+3.3V 電源でも動作しました。 回路図の PA8 (P3 コネクタ、ピン 6) に接続する「SENS」信号は、MIDI/シリアル MIDI のボーレート切り替えのためで、 オープンでシリアル MIDI (38.4 kbps)、10 kΩ以下の抵抗を介した GND への接続で 通常の MIDI (31.25 kbps)を選択します。 シリアル MIDI だけを使う場合には、何も接続せず、オープンで構いません。 プログラムを実行すると、デモ曲を 3 曲自動演奏しますから、MIDI 入力はなくても 音は出ます。 MIDI データを受信するとグリーンの LED (PC9) が点滅します。 青色の USER ボタンを押すと、デモ曲の演奏を停止します。 ●パッケージ HEX パッケージと、ソース・パッケージを用意してあります。 いずれも、zip 形式で圧縮されていますので、Windows 自体の機能で解凍できます。 ●HEX パッケージの内容 licence.txt : ライセンス条件のファイル readme.txt : このファイル TGSTMVL.pdf : 回路図の pdf ファイル TGSTMVL.hex : HEX ファイル オブジェクトの HEX ファイルは、 TGSTMVL.hex です。 このファイルを書き込みます。 まず、STMicro 製の「ST Visual Programmer」(STVP) を起動し、「Configure」メニューで 開くダイアログで Hardware : ST-LINK Port : USB Programming mode : SWD Device : STM32F100xBxxB を選びます。 ここで、「Device」のサフィックスが「xBxxB」であることに注意してください。 リストのひとつ上にある「xB」を選ぶと、うまく書き込めません。 あとは、File / Open... を選んで開くダイアログで TGSTMVL.hex を選び、Erase / Current tab、Program / Current tab の実行で書き込めます。 ●ソース・パッケージの内容 パッケージを解凍すると、「TGSTMVL-20110223」フォルダの下に次のようなファイルが 展開されます。 licence.txt : ライセンス条件のファイル readme.txt : このファイル project.zip : プロジェクトのアーカイブ・ファイル Atollic TrueSTUDIO/STM32 のワークスペースを配布パッケージに含めると、ファイル サイズが大きくなってしまうので、ワークスペースは新規に作成するか、あるいは既存の ものを利用することを前提にしました。 そして、配布パッケージにはプロジェクトを「エクスポート」したもの (project.zip) を含めておき、ワークスペース上にプロジェクトを「インポート」することで、 プロジェクトを「復元」します。 「project.zip」は普通に「zip」コマンドで圧縮したものなので、Atollic TrueSTUDIO/STM32 を利用しない場合でも、単に「unzip」コマンドを使えば解凍できます。 「project.zip」を解凍してできるフォルダの内容は次のようになっています。 \TGSTMVL | +-- readme.txt : このファイル | +-- licence.txt : ライセンス条件のファイル | +-- \Debug : オブジェクトが格納されるフォルダ | | | +-- TGSTMVL.hex : HEX ファイル | +-- \gen_tab : テーブル定義ファイル作成用ツール | | | +-- Makefile : テーブル一括生成のためのメイクファイル | | | +-- *.c : C ソースファイル | | | +-- *.awk : gawk ソースファイル | +-- \src : ソースファイルフォルダ | | | +-- *.c : C ソースファイル | | | +-- *.h : ヘッダ・ファイル | +-- \firmware : ライブラリ関係ファイルのフォルダ | | | +-- \STM32F10x_StdPeriph_Driver : STMicro 提供のライブラリのフォルダ | | | | | +-- \inc : STMicro 提供のインクルードファイルのフォルダ | | | | | +-- *.h : 各種インクルードファイル | | | +-- \CMSIS : CMSIS 関係のファイルのフォルダ | | | +-- License.doc : CMSIS のライセンス条件のファイル | | | +-- \CoreSupport | | | | | +-- *.h | | | | | +-- *.c | | | +-- \DeviceSupport | | | +-- \ST | | | +-- \STM32F10x | | | +-- \Startup | | | | | +-- \TrueSTUDIO | | | | | +-- startup_stm32f10x_md_vl.s : スタートアップファイルのオブジェクト | +-- *.h | | | +-- *.c | +-- \sch : 回路図のフォルダ | | | +-- TGSTMVL.ce3 : bsch3v で書いた回路図 | | | +-- TGSTMVL.pdf : 回路図の pdf ファイル | +-- \smf : デモ曲の SMF | | | +-- arabesq1.mid : C.A.Debussy: アラベスク第一番 (部分) | | | +-- Chopin66.mid : F.F.Chopin: 幻想即興曲 (部分) | | | +-- invent13.mid : J.S.Bach: インベンション第 13 番 | +-- stm32_flash.ld : LD スクリプト ●コンパイル方法 開発環境は atollic 社の「Atollic TrueSTUDIO/STM32 Lite version 1.4.0」 を使用しています。 「Atollic TrueSTUDIO/STM32 Lite」のダウンロード/インストール方法および操作方法 については atollic 社の web サイトや、web の検索を利用して調べてください。 ファイル容量を節約するために、ソースパッケージではオブジェクトとしては HEX ファイルのみを付属させており、ELF ファイルは含まれていません。 一方、 Atollic TrueSTUDIO/STM32 Lite では HEX ファイルの生成機能はなく、直接に ELF ファイルからマイコンへの書き込みを行いますので、ソースを全くいじらない場合 でも、TrueSTUDIO/STM32 から ST-LINK で書き込む場合にはコンパイルを実行する必要が あります。 ソースファイルを解凍する場所は、どこでも構いません。 前述のように、 licence.txt : ライセンス条件のファイル readme.txt : このファイル project.zip : プロジェクトのアーカイブ・ファイル が解凍された状態にしておきます。 「project.zip」はプロジェクトの「インポート」時に解凍されるので、さらに解凍はせず、 そのままにしておきます。 TrueSTUDIO/STM32 を立ち上げ、「File」メニューの「Switch Workspace / other...」 と選択し、ワークスペースを置きたい場所を指定します。 既存のワークスペースでない場所を指定した場合には、「新規ワークスペース」として 扱われ、プロジェクトのインポート時に自動的にワークスペースの設定が行われます。 ワークスペースが切り替わって、TrueSTUDIO が再び立ち上がったら、「File / Import...」 メニューを選びます。 「Select an input source:」と書いてあるダイアログが開くので、 General / Existing Projects into Workspace を選んで「Next >」ボタンを押すと、「Import Projects」のダイアログが開きます。 ここで、上部にある「Select archive file:」のラジオ・ボタンを選択してから 「Browse...」ボタンを押し、前述の「project.zip」ファイルのある場所を選択します。 「Projects:」に「TGSTMVL」がチェック付きで表示されているのを確認し、「Finish」 ボタンを押します。 これでプロジェクトがワークスペースに取り込まれ、新規ワークスペースの場合には、 自動的にワークスペースの初期設定が行われます。 コンソール・ウィンドウにウォーニングが表示されますが、気にする必要はありません。 プロジェクトを取り込んだら、もう「project.zip」ファイルは削除してもかまいません。 あとは、「Project」メニューの「Clean...」を選択し、確認のダイアログで「OK」ボタン を押せば、コンパイルできます。 コンパイルが終了したら、「Run」メニューの「Debug」を選択してデバッガを立ち上げると プログラムが STM32VL Discovery の flash に書き込まれます。 新規ワークスペースの場合には、 The selection cannot be launched,and there are no recent launches. というエラーが表示されてデバッガが開始しないことがありますが、その場合には、 Run / Debug Configurations... を選んで開くダイアログで、「Embedded C/C++ Application」をダブル・クリックし、 「Project:」入力部の右端にある「Browse...」ボタンを押して開くダイアログで、 「TGSTMVL」を選択して「OK」ボタンを押します。 そして、「Debugger」タブを押して、「GDB Server Command Line Options」の「SWD」 ラジオ・ボタンを選択します。 あとは、「Debug」ボタンを押せば、デバッガが起動します。 デバッガが立ち上がった段階でプログラムはフラッシュに書き込まれており、あとは デバッガの「Run」メニューの「Resume」を選択すればプログラムの実行が始まります。