STM32F4

新版FM音源プログラム (3)

BSP (Board Support Package) とは、その名の通り STMicro 製の Nucleo ポード類、Discovery ボード類、および各種の評価ボード類に実装されているペリフェラルをサポートするドライバ類のパッケージです。 これらは、以前の「Standard Peripheral Library」…

新版FM音源プログラム (2)

「ペリフェラル初期化 C ソースコード・ジェネレータ」である STM32CubeMX では、以下の開発環境によるビルドに対応しています。 ARM/Keil MDK-ARM IAR EW-ARM Attolic TrueSTUDIO AC6 SW4STM32 このうち、最初の 3 つは商用の開発環境で、STMicro 以外の他…

新版FM音源プログラム (1)

過去、いろいろなマイコンに対して FM 音源プログラムを移植して来ましたが、その中身自体は数年前に大きく書き直してからは基本的に変わっていませんでした。 8 ビット AVR 用を除けば、当初からフラッシュがたくさんあるマイコン用として、スピード重視で…

TM7705N を使ったトランジスタ特性の測定 (4)

前回までの測定で、同一 IC に対する VBE (の絶対値) がトランジスタの品種により違いがあることが分かりました。 そこで、NPN / PNP トランジスタの品種の組み合わせ方により、Arp 方式のアンチログ回路を単一電源動作させた場合の特性を改善する試みを行い…

TM7705N を使ったトランジスタ特性の測定 (3)

以下に示す品種の PNP トランジスタも測定してみました。 2SA1015-GR、2SA1015-Y (東芝製) 2SA1618-Y (東芝製、2 素子封入、コモン・エミッタ、2SA1015-Y ×2 相当) HN03B02FU (東芝製、PNP + NPN、 2SA1015-GR + 2SC1815-GR 相当) 2SA1049-GR (東芝製) 2N390…

TM7705N を使ったトランジスタ特性の測定 (2)

測定対象の NPN トランジスタとしては、以下に示す品種を選びました。 2SC1815-GR、2SC1815-Y (東芝製) 2SC2710-Y (東芝製, Ic_max = 800 mA) 2SC3113-B (東芝製, 高 hFE) TD62507 (東芝製, 5 素子独立トランジスタ・アレイ) 2SD2704 (Rohm 製、ミューティン…

TM7705N を使ったトランジスタ特性の測定 (1)

TM7705N を使ってトランジスタの特性を測定してみました。 各種の特性のなかでも測定の対象とするのは hFE-IC 特性と IC-VBE 特性との 2 種に限ることにしました。 原理的な図を下に示します。 実際の回路では単電源での動作となりますが、この説明では両電…

ADC 2 種 (PCM1808、TM7705N) の評価 (6)

Microchip 製のデュアル 12 ビット DAC、MCP4922 も測定してみました。 ディジタル・インターフェースは SPI で、電源電圧は 2.7 〜 5.5 V、2 ch 独立の外部 VREF 入力、DIP 14 ピン・パッケージです。 測定回路を下に示します。 TM7705N 側の回路は省略し、…

ADC 2 種 (PCM1808、TM7705N) の評価 (5)

TM7705N を使って、実際の DAC の特性を測ってみました。 測定対象としたのは Maxim MAX518BCPA で、I2C インターフェースのデュアル 8 ビット DAC です。 5 V 単一電源で動作する DIP 8 ピン・パッケージの IC で、電源電圧 (VDD) をリファレンス電圧として…

ADC 2 種 (PCM1808、TM7705N) の評価 (4)

TM7705N は 2 個購入して、そのうちの 1 個だけを測定していましたが、残りの 1 個について測定して見ると、セルフ・キャリブレーション後の残留オフセットが少なく、さらにディジタル・インターフェースの読み取りエラーの頻度は信号のドライブ能力に影響さ…

ADC 2 種 (PCM1808、TM7705N) の評価 (3)

ネット上で検索しても TM7705 のデータシートは中国語のものしか見つからず、詳細が読み取れなくて困っていたのですが、「7705」という型番、スペック、ピン・アサイン、データシートの構成などから、Analog Devices の AD7705 のコンパチ品であることが分か…

ADC 2 種 (PCM1808、TM7705N) の評価 (2)

STM32 シリーズの SPI/I2S モジュールを I2S モードで使用する場合、基本的には送信/受信いずれか一方だけの動作をする「半2重」モードに限られます。 送信/受信を同時に行う「全2重」モードで使用したい場合には、I2S モード専用、スレーブ・モード専用の…

ADC 2 種 (PCM1808、TM7705N) の評価 (1)

aitendo で販売している次の 2 種の A/D コンバータを Nucleo で動かしてみました。 PCM1808 (TI (旧BB) 製)、単価 100 円、ディジタル・オーディオ用途 (2 ch ステレオ、96 kHz サンプリングまで、HPF 付きで DC 不可)、24 ビット・デルタ・シグマ方式、14 …

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

STM32CubeMX の「バグ」と思われる現象について触れたいと思います。 ただし、この状態を解消するのは簡単な操作ですみます。 発生する条件/タイミングについては不明ですが、発生した場合には生成された C コードでフラッシュ・メモリの読み出しのウェイト…

ソフト 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 で、プロ…