CQ-STARM/STbee/STBee Mini 用FM音源プログラム

デザインウェーブマガジン誌 2008 年 5 月号付属の CQ-STARM 基板用のFM音源プログラム「TGSTARM」を作ってから 2 年あまりが過ぎました。
C コンパイラとして Keil 社および IAR 社の無償コードサイズ制限版を使ったために、あまり機能を追加することができずに、「暫定版」としてリリースしただけで、ずっと放置していました。
最近になってストロベリーリナックスから発売された STM32 マイコンボードの「STBee」と「STBee Mini」には CQ-STARM 基板と同じ STM32F103 ファミリのマイコンチップが搭載されているので、多少の変更で CQ-STARM 基板用のFM音源プログラムが STBee や STBee Mini で動くのではないかと考えました。
ストロベリーリナックスの web サイトの「STBee スタートアップガイド」では、C コンパイラとして CodeSourcery 製の gcc ベースの「Sourcery G++ Lite for ARM EABI」を使う例が示されているので、それに従い、「TGSTARM」プログラムに修正を加えて、3 種のボードそれぞれに対応したプログラムを作りました。 (→こちら)
「STBee」および「STBee Mini」は所有していないので、動作確認はしていないのですが、8 MHz の外部クリスタルを使っている CQ-STARM 基板で、STBee 用プログラム (12 MHz 外部クリスタル使用) を動かしてサンプリング周波数が 2/3 倍になることは確かめてあります。
STBee Mini ではピン数が限られているので、それに合わせて回路の一部を変更しました。
元の「TGSTARM」ではコンパイラのコードサイズ制限のために、ペリフェラルの初期化に STMicro 製の標準ライブラリを使わず、「自前」でポートを直接叩いていましたが、「TGSTCQ/TGSTBEE/TGSTBM」でも、現状ではコンパイラ変更による修正にとどめ、ライブラリは使用していません。
コンパイラを変えることでスピードが遅くなることを心配していましたが、以前とほとんど同じレベルの、サンプリング周波数 18 kHz、同時発音数 16 の条件で CPU 負荷率約 80 % を実現できています。
現状でのプログラム・サイズは ROM 約 39 Kバイト、RAM 約 17 Kバイトです。
コードサイズ制限がなくなったので、今後は標準ライブラリを利用したり、機能を追加することが可能になりました。