2014-01-01から1年間の記事一覧

USB-MIDI (5)

AudioControl インターフェース・サブクラスのディスクリプタのクラス固有 (Class Specific) 部分には、USB から制御可能な要素および要素間の接続の「トポロジー」を抽象化して記述することになっており、エレメントごとに記述方法が規格化されています。 …

USB-MIDI (4)

「レイテンシ」の観点から結論を先に言うと、USB 2.0 ハイスピード・ハブを介して接続した方が、USB 1.1 FS ネイティブなポートに接続した場合よりもレイテンシが小さくなります。 後述するような条件では、HS ハブ経由では最短 250 μs (2 マイクロフレーム)…

USB-MIDI (3)

USB の規格では MIDI データの取り扱い方法が標準のクラスとして定められていて、その規約に従っているデバイスならばユーザがドライバをインストールする必要はなく、自動的に OS の標準のドライバがロードされ動作します。 MIDI データは独立のクラスでは…

USB-MIDI (2)

LPC11U35 には USART は 1 系統しかなく、実際に同時に 2 つの MIDI OUT を得ることはできないので、UART を 2 系統持つ (無印) EZ-USB (旧 Anchor Chips / 現 Cypress 製 AN2131SC) でケーブル・ナンバー対応の出力振り分け処理を追加したプログラムを作成…

USB-MIDI (1)

第 14 回アナログシンセ・ビルダーズ・サミットで USB-MIDI についてプレゼンを行ったのですが、10 分の持ち時間を大幅に超過したあげく内容も十分に説明できなかったので、ブログ上に解説の記事を書いていこうと思っています。 USB 規格上は出力エンドポイ…

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 トランスミッタ (18)

ソフト S/PDIF トランスミッタ・プログラムを PIC32MX 用にも作りました。 DDA によるサイン波発生プログラム部分を含む CPU 負荷率は約 14 % で、 STM32F401: 6 [%] × 84 [MHz] = 5.04 [MHz] STM32F407: 3 [%] × 168 [MHz] = 5.04 [MHz] PIC32MX : 14 [%] ×…

ICSP 接続で PIC32MX のフラッシュに書き込む (15)

約半年前 (2014 年 4 月) から単価 360 円で秋月で販売されている PIC32MX250F128B (フラッシュ 128 KB / SRAM 32 KB) に LPC1114FN28/102 使用の ICSP ライタで書き込めることを確認しました。 PIC32MX220F032B 用の USB MIDI ホスト・プログラムの HEX フ…

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

今回はソフトウェアから離れて、普通のディスクリート LED を使って S/PDIF 光送信モジュールを自作する話です。 LED が 6.144 Mbps のレートで点滅するわけで、「6.144 Mbps の LED チカチカ」と呼べるかも知れません。 S/PDIF 光送信モジュールを自作する…

ソフト 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 変調の説明の図では、左側のビットが先に送信され、右側のビットが後に送信されるような配置で記されています。 実際にはオーディオ・データとの対応や…