Nucleo

ソフト S/PDIF トランスミッタ (15)

今回は補足的な内容について述べます。 まず、STM32CubeMX には次の開発環境、 IAR EWARM 6.70 Keil/ARM MDK-ARM 4.73 Atollic TrueSTUDIO 4.3.1 用のプロジェクト・ファイルを生成する機能があり、自動生成した C コードを指定した開発環境ですぐコンパイル…

ソフト S/PDIF トランスミッタ (14)

STM32CubeMX で (STM32F4xx 用の) C 初期化コードを生成すると、次のファイル、 stm32f4xx_hal_conf.h stm32f4xx_it.h main.c stm32f4xx_hal_msp.c stm32f4xx_it.c が作られます。 このうち、「.c」ファイルにはユーザが記述を追加できる領域があり、「お約…

ソフト S/PDIF トランスミッタ (13)

今回は STM32CubeMX のプロジェクト・ファイル (.ioc ファイル) を掲載し、ソース・プログラムの本体は次回の記事に掲載します。 後に示すリストを「コピー・アンド・ペースト」してプロジェクト・ファイルを作成し、STM32CubeMX に読み込ませ、C コードを生…

PT8211-S の測定

aitendo で販売されている、高性能ではないけれど安価 (単価 50 円) な 16 ビット・ノン・オーバーサンプリング・オーディオ DAC「PT8211-S」の特性を測定してみました。 パッケージは 8 ピン SOP (1.27 mm ピッチ) で BU9480F と同じですが、当然ピン・コン…

ソフト S/PDIF トランスミッタ (12)

今回はデータの「生成」側と「消費」側との「同期」の方法についての話です。 次のような不具合、 送信中のデータを新しいデータで上書きしてしまう (オーバーラン・エラー) 送信データが必要なタイミングまでに新しいデータが間に合わない (アンダーラン・…

ソフト S/PDIF トランスミッタ (11)

Nucleo ばかりでなく、同じ STM32F4xx ファミリのチップ (STM32F407VGT) を使った「STM32F4-Discovery」ボード用のプログラムも作ってみました。 STM32CubeMX アプリで STM32F4-Discovery ボード用のコンフィギュレーションでプロジェクトを作成し、デフォル…

ソフト S/PDIF トランスミッタ (10)

今回はオーディオ・データの BMC エンコード・プログラムの本体についてです。 DMA 機能を持つ Cortex-M0 プロセッサとして、手持ちの Nuvoton NUC120LE3AN についてもプログラムを作ってみたところ、Cortex-M3/M4 用と同じプログラム記述では効率がよくなか…

ソフト S/PDIF トランスミッタ (9)

今回はオーディオ・データの BMC エンコードと変換テーブルの作成についてです。 16 ビット・オーディオ・データを上位 8 ビットと下位 8 ビットとに分割し、それぞれを BMC 符号化して 2 つの 16 ビット・パターンを得ます。 このエンコードを 1 ビットずつ…

ソフト S/PDIF トランスミッタ (8)

秋葉原へ出かけて、 FM 音源チップ YMF276-M (FM 音源ガチャ) STM32 Nucleo-F411RE (マルツ) を買ってきました。 YMF276-M については別の記事で触れることにして、今回は Nucleo F411RE について書きます。 Nucleo シリーズの F411RE 以外のボードについて…

ソフト S/PDIF トランスミッタ (7)

前回の話に関する補足です。 1 ブロックの内容を繰り返し送信する場合、 1 ブロックは 192 オーディオ・サンプルで構成されるので fs = 48 kHz では、4 ms 周期 (周波数 250 Hz) で同じ波形が繰り返されることになります。 ここで、送信バッファの 1 ブロッ…

ソフト S/PDIF トランスミッタ (6)

今回から、やっとソフトウェアの話に入ります。 まず、ブロック/フレーム/サブフレームの組み立てや BMC 変調の説明の図では、左側のビットが先に送信され、右側のビットが後に送信されるような配置で記されています。 実際にはオーディオ・データとの対応や…

ソフト S/PDIF トランスミッタ (5)

前回の BMC 変調までの話で S/PDIF の光送信モジュールへ出力する「信号波形」に対する「ビットマップ」が準備できたことになります。 あとは、メモリに展開されたこのビットマップを実際の連続したシリアル・ビット列に変換するのは SPI/I2S モジュールおよ…

ソフト S/PDIF トランスミッタ (4)

オーディオ・データに前回説明したような制御/情報ビットを加え、サブフレーム/フレーム/ブロック構造を実現した段階では、サンプリング周波数 fs の 2 ch オーディオ・データに対し 1 フレームあたり 64 ビットで構成されるので、ビット・レートとしては (6…

ソフト S/PDIF トランスミッタ (3)

S/PDIF のブロック/フレーム/サブフレーム構造の図を下に示します。 図の左側が時間的に先に、右側が時間的に後に送信されます。 これは伝送すべきオーディオ・データと、それに付加する制御/情報ビットについて表したもので、実際に光ファイバなどを通じて…

ソフト S/PDIF トランスミッタ (2)

S/PDIF では、後述するようなブロック/フレーム/サブフレーム構成と BMC (Biphase Mark Code) 変調により、48 kHz のサンプリング周波数に対しては、ビット・レート 128 × fs = 128 × 48 [kHz] = 6.144 [Mbps] のビット・ストリームとして送信されます。 こ…

ソフト S/PDIF トランスミッタ (1)

ハードウェア S/PDIF 送信チップを使わずに、マイコン内蔵の SPI/I2S, DMA モジュールとソフトウェアのみで S/PDIF トランスミッタ (fs = 48 kHz) の機能を実現するプログラムを作りました。 現在のところ、対象のマイコンは Nucleo F401RE/F411RE で、プロ…

FPGA 版 FM 音源 (39) -- YMF297 (OPN3/OPL3) 測定 (4)

YMF297 を OPL3 モードで動作させると、1 オーディオ・フレームあたりのビット・クロック数が 68 に変化するので、DAC 出力のサンプリング周波数を 48 kHz に保つためには、YMF297 に供給するマスタークロック自体の周波数を変化させなければなりません。 そ…

FPGA 版 FM 音源 (38) -- YMF297 (OPN3/OPL3) 測定 (3)

古い MUSE-NTSC コンバータの基板から外してきた S/PDIF トランスミッタ (SONY CXD1211P) をつないで 48 kHz S/PDIF にデータを流せるようになりました。 OPNA モードでは LRCK のデューティーが 50 % ぴったりにはならないのですが、特に問題はなく、左右チ…

FPGA 版 FM 音源 (37) -- YMF297 (OPN3/OPL3) 測定 (2)

Nucleo F401RE と YMF297 との間の配線を完了させ、レジスタ・アクセスできるようにしました。 (リセット信号は 8 番ピンのみに接続しています) いろいろと探っていくうちに、OPN モードと OPL3 モードとの切り替え方法も判明しました。 N/L# (32 番ピン) は…

FPGA 版 FM 音源 (36) -- YMF297 (OPN3/OPL3) 測定 (1)

今回は、「FM音源ガチャ」で入手した YMF297 についての話題です。 このチップは、 YM2203(OPN),YM2608(OPNA),YMF288(OPN3) などの「OPN」系のモードと、 YMF262(OPL3),YMF289(OPL3-L) などの「OPL3」系のモードとの、 どちらかに切り替えて動作させること…

Nucleo-F401RE 用FM音源プログラム -- TGF401RE (1)

6 月 24 日付けの記事では、STM32F4-Discovery 用のFM音源プログラム TGSTM32F4 に手を入れて Nucleo-F401RE にも対応させるつもりでしたが、方針を変更して、Nucleo 用のプログラムは独立させることにしました。 周辺モジュールの操作部分は STM32Cube を…

STM32F4-Discovery/Nucleo-F401RE 用FM音源プログラム -- TGSTM32F4 (15)

STM32 の内蔵モジュールを利用するためのライブラリとして、これまで STMicroelectroics 社は「StdPeriph_Driver」を提供してきましたが、現在は後継の「STM32Cube」(総称) に移行が始まっており、「StdPeriph_Driver」は新規開発には推奨されないものとなっ…

STM32F4-Discovery/Nucleo-F401RE 用FM音源プログラム -- TGSTM32F4 (14)

久しぶりに秋葉原へ出かけて、 9.216 MHz 水晶振動子 (秋月) Nucleo-F401 (秋月) FM 音源チップ YMF297、YM2610 (FM 音源ガチャ) PIC32MX250F128B (秋月) などを買ってきました。 FM 音源チップや、PIC32MX については別の記事で触れることにして、今回は ST…