STM32F4
S/PDIF のブロック/フレーム/サブフレーム構造の図を下に示します。 図の左側が時間的に先に、右側が時間的に後に送信されます。 これは伝送すべきオーディオ・データと、それに付加する制御/情報ビットについて表したもので、実際に光ファイバなどを通じて…
S/PDIF では、後述するようなブロック/フレーム/サブフレーム構成と BMC (Biphase Mark Code) 変調により、48 kHz のサンプリング周波数に対しては、ビット・レート 128 × fs = 128 × 48 [kHz] = 6.144 [Mbps] のビット・ストリームとして送信されます。 こ…
ハードウェア S/PDIF 送信チップを使わずに、マイコン内蔵の SPI/I2S, DMA モジュールとソフトウェアのみで S/PDIF トランスミッタ (fs = 48 kHz) の機能を実現するプログラムを作りました。 現在のところ、対象のマイコンは Nucleo F401RE/F411RE で、プロ…
YMF297 を OPL3 モードで動作させると、1 オーディオ・フレームあたりのビット・クロック数が 68 に変化するので、DAC 出力のサンプリング周波数を 48 kHz に保つためには、YMF297 に供給するマスタークロック自体の周波数を変化させなければなりません。 そ…
古い MUSE-NTSC コンバータの基板から外してきた S/PDIF トランスミッタ (SONY CXD1211P) をつないで 48 kHz S/PDIF にデータを流せるようになりました。 OPNA モードでは LRCK のデューティーが 50 % ぴったりにはならないのですが、特に問題はなく、左右チ…
Nucleo F401RE と YMF297 との間の配線を完了させ、レジスタ・アクセスできるようにしました。 (リセット信号は 8 番ピンのみに接続しています) いろいろと探っていくうちに、OPN モードと OPL3 モードとの切り替え方法も判明しました。 N/L# (32 番ピン) は…
今回は、「FM音源ガチャ」で入手した YMF297 についての話題です。 このチップは、 YM2203(OPN),YM2608(OPNA),YMF288(OPN3) などの「OPN」系のモードと、 YMF262(OPL3),YMF289(OPL3-L) などの「OPL3」系のモードとの、 どちらかに切り替えて動作させること…
6 月 24 日付けの記事では、STM32F4-Discovery 用のFM音源プログラム TGSTM32F4 に手を入れて Nucleo-F401RE にも対応させるつもりでしたが、方針を変更して、Nucleo 用のプログラムは独立させることにしました。 周辺モジュールの操作部分は STM32Cube を…
STM32 の内蔵モジュールを利用するためのライブラリとして、これまで STMicroelectroics 社は「StdPeriph_Driver」を提供してきましたが、現在は後継の「STM32Cube」(総称) に移行が始まっており、「StdPeriph_Driver」は新規開発には推奨されないものとなっ…
久しぶりに秋葉原へ出かけて、 9.216 MHz 水晶振動子 (秋月) Nucleo-F401 (秋月) FM 音源チップ YMF297、YM2610 (FM 音源ガチャ) PIC32MX250F128B (秋月) などを買ってきました。 FM 音源チップや、PIC32MX については別の記事で触れることにして、今回は ST…
TGSTM32F4 版の機能が RX62N 版と同等 (V 1.2) となりました。 ステレオ・パンポット対応、サンプリング周波数 48 kHz でも同時発音数 16 を達成しています。 (→こちら) からアクセスできますが、ファイル本体は Yahoo ボックス上に置いてあります。 16 を超…
STM32F4-Discovery 用 FM 音源プログラム「TGSTM32F4」が、フリーの gcc ツールチェーンでコンパイルできるようになったので、ソース・パッケージを公開します。 (→こちら) からアクセスできますが、ファイル本体は Yahoo ボックス上に置いてあります。 フリ…
従来の STM32 用のソースを元にした STM32F4-Discovery 用 FM 音源プログラムができました。 (→こちら) からアクセスできますが、ファイル本体は Yahoo ボックス上に置いてあります。 今回は、HEX ファイルのみの公開としました。 と言うのは、使用している…
STM32F4-Discovery のユーザー・マニュアル「UM1472」が 2012 年 1 月 19 日付けで改定され、「リビジョン 2」となっていました。 rev. 2 では、総ページ数が 38 ページと、rev.1 に比べて 1 ページ増加しており、その追加されたページで、STM32F4 の OSC ク…
STM32F4-Discovery の外部接続用ヘッダ・コネクタ (P1、P2) に出ている信号で、ボード上のデバイスと接続されていない「未使用」のピンをまとめた図を作りました。 ポート名と信号名が併記されているのが、ボード上のデバイスと接続されているピンで、ポート…
STM32F4-Discovery の STM32F4 側の 8 MHz の水晶振動子 (X2) を取り外してソケットを実装し、水晶振動子を差し替えられるようにして 12.096 MHz での I2S の各種サンプリング周波数を測定してみました。 その結果、当然ですが、サンプリング周波数の相対誤…
HSE クロックの水晶振動子の周波数を 12.096 MHz に選ぶと、SYSCLK 168 MHz、USB クロック 48 MHz ジャストを維持したままで、I2S のサンプリング周波数の大部分を誤差ゼロで実現できることが分かりました。 (システム) PLL および PLLI2S のリファレンス周…
STmicroelectoronics のサイトに、STM32F4XX ファミリの (I2S クロックを含む) クロック設定のための ツールが用意されていることが分かりました。 Excel のマクロとして実現されていて、グラフィカルに表示されます。 ドキュメントとしては、アプリケーショ…
2 月 19 日付けの記事で、DAC 出力の左右非対称なリンギングは、アナログ部分の遅延特性によるものではないかと書きましたが、実際には、ディジタル・フィルタ部分で、あのような特性が生じていることが分かりました。 CS43L22 DAC のサンプリング周波数を 8…
STM32F4 の SPI/I2S モジュールには、オーバーサンプリング DAC 用のマスター・クロック (MCLK) を発生させる機能があります。 しかし、そのオーバーサンプリング比は 256 倍 (256 fs) に固定で、また、回路の制限により、SPI/I2S モジュールへのクロック (I…
前回のプログラムを実行して出力される、周波数 440 Hz の三角波と、のこぎり波の波形写真を下に示します。 DAC のオーバーサンプリングおよびフィルタリングによる帯域制限により、のこぎり波の立下り部分の両側に「リンギング」が生じますが、対称的ではな…
ボード上の外付けステレオ DAC (CS43L22) へ DMA を使用してオーディオ出力する簡単なテストプログラムが動くようになりました。 記事の最後にソースリストを示します。 単に、サンプリング周波数 48 kHz で周波数 440 Hz の音を、のこぎり波を左チャンネル…
秋月で少し前に入手した「STM32F4-Discovery」用の FM 音源プログラム「TGSTM32F4」を作りはじめました。 暫定版として、以前の CQSTARM / STBee / STBee mini / STM32VL Discovery 用のプログラムに一部分修正を加えたものが動作しました。 ボード上にはオ…