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

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

2 線式 ICSP 接続によるフラッシュ書き込みでは、JTAG のクロック 1 周期分のデータ転送を ICSP クロック 4 周期に対応させて転送しています。 LPC1114FN28/102 による ICSP 書き込みプログラムでは、ARM の IP と思われる SSP モジュールを 4 ビット SPI モ…

PIC32MX220F032B USB MIDI ホスト (14)

pic32mx USB MIDI ホスト・プログラムにロースピード・デバイス (1.5 Mbps) を接続する例として、もあ (morecat_lab) さん開発の USB-MIDI コンバータ・デバイス MICO (MIDI-In COnverter) / MOCO (MIDI-Out COnverter) USB-MIDI Converter もこ を試してみ…

PIC32MX220F032B USB MIDI ホスト (13)

pic32_usbhost プログラム (簡易ハブ・サポート版) のバグ修正版のソース・パッケージをいつもの Yahoo! ボックス上に置きました。(→こちら) ファイル名は pic32_usbhost_hub-20130505.zipです。

PIC32MX220F032B USB MIDI ホスト (12)

pic32_USBhost プログラム (簡易ハブ・サポートなし版/あり版両方とも) に USB ホスト --> USB デバイス方向の動作にバグが発覚しました。 USB デバイス --> USB ホスト側には問題はないので、キーボード・コントローラを接続して MIDI 出力を得るだけの使い…

PIC32MX220F032B USB MIDI ホスト (11)

USB ハブの最も重要な機能は、ホストに接続できる USB デバイスの数を増やすことです。 その意味では、USB ハブには 2 ポート以上が必要で、ホスト側のソフトウェアとしては、2 個以上の USB デバイスと USB ハブ自体との合計 3 個以上の USB デバイスを管理…

PIC32MX220F032B USB MIDI ホスト (10)

今回は Microchip 社の USB ホスト・スタックの概要について説明します。 USB ホスト・スタックを利用したプログラムは、下のような三層のレイヤー構造で構成されます。 アプリケーション USB クライアント (クラス)・ドライバ USB ホスト・ドライバ 最下層…

PIC32MX220F032B USB MIDI ホスト (9)

基本的に USB デバイス 1 個の接続のみに対応する Microchip の USB ホスト・スタックを使って、無理やり USB ハブに簡易的な対応をする方法について説明します。 まず、今回は USB ハブについての主に一般的な話です。 1 台のホストに 2 台のハブと 3 個の…

PIC32MX220F032B USB MIDI ホスト (8)

簡易ハブ・サポート版の「pic32_usbhost_hub」プログラムのソース・パッケージを Yahoo! ボックス上に置きました。(→こちら) ファイル名は pic32_usbhost_hub-20130417.zipです。 この版では C32 コンパイラが必要になります。 XC32 コンパイラでコンパイル…

PIC32MX220F032B USB MIDI ホスト (7)

Microchip 社の USB ホスト・スタックは「ハブ」をサポートしておらず、複数デバイスの接続には対応していません。 それを無理やりな方法で、ハブのポートひとつだけを有効として、ハブ自体は単なる「電線」として機能させ、制限付きですが何とかハブ越しの…

PIC32MX220F032B USB MIDI ホスト (6)

ヒープ・サイズ修正版の「pic32_usbhost」プログラムのソース・パッケージを Yahoo! ボックス上に置きました。(→こちら)

PIC32MX220F032B USB MIDI ホスト (5)

「pic32_usbhost」プログラムに「バグ」というか「設定ミス」が発覚しました。 それは、「ヒープ・サイズ」の設定が小さすぎるために、接続するデバイスによっては正しく動作しないということです。 オリジナルのデモ・プログラムでは、ヒープ・サイズの設定…

PIC32MX220F032B USB MIDI ホスト (4)

「pic32_usbhost」プログラムのソース・パッケージを公開しました。 Yahoo! ボックス上に置いてあります。(→こちら)

PIC32MX220F032B USB MIDI ホスト (3)

PIC32MX220F032B USB MIDI ホスト・プログラムのソース公開に向けて作業しています。 といっても、ソース全体ではなく、Microchip のオリジナルのデモ・プログラムに対する「差分」という形で「パッチ」を公開する予定です。 2012 年 10 月 25 日版のライブ…

PIC32MX220F032B USB MIDI ホスト (2)

自作の USB-MIDI コンバータ・デバイスを入力方向、つまり、 MIDI IN → USB MIDI デバイス → USB ケーブル → USB ホスト 方向のデータの流れに対応させて USB MIDI ホスト・プログラムをテストしたところ、「バグ」というか、「仕様」というか、不具合が見つ…

PIC32MX220F032B USB MIDI ホスト (1)

PIC32MX220F032B による USB MIDI ホスト・プログラムの USB MIDI デバイス → USB MIDI ホスト の方向の確認はまだですが、 USB MIDI ホスト → USB MIDI デバイス の方向のデータの流れについては、システム・エクスクルーシブ・メッセージのバグと、ランニ…

PIC32MX220F032B ベースボード (3)

今回作成したベースボードの LPC1114FN28/102 (ICSP プログラマ) 部分と PIC32MX220F032B との接続部分の回路図を下に示します。 前回の回路と違うのは、 USB デバイス/ホスト接続のための回路 ICSP プログラマ部分との切り離しに対応 Pinguino MX220 の回路…

PIC32MX220F032B ベースボード (2)

Microchip 社の PIC18/PIC24/PIC32 用 USB ライブラリの USB MIDI デバイスのデモ・プログラムと、USB MIDI ホストのデモ・プログラムを PIC32MX220F032B 用に修正して動作させることができました。 「単価 220 円のマイコンによる USB MIDI ホスト」の実現…

PIC32MX220F032B ベースボード (1)

PIC32MX220F032B には USB OTG モジュールが内蔵されていて、USB デバイスにも USB ホストにもなれます。 しかし USB ホストとして機能するためには接続する USB デバイスに対して電力を供給する能力が必要とされます。 そこで、USB 関係の実験のために外部…

PIC32MX220F032B (10) -- AC97 コーデックを接続する (7)

今回は、また別の AC97 コーデック (Analog Devices Inc. 製 AD1881) との接続を試しています。 AD1881 は AC97 コーデックとしては、かなり初期の製品で、ADC/DAC ともに 16 ビット分解能のものを 2 ch 内蔵するだけです。 その他の特長としては、 スレーブ…

PIC32MX220F032B (9) -- AC97 コーデックを接続する (6)

別の AC97 コーデック (SigmaTel 製 STAC9708) との接続を試してみました。 これは古い 5.1 ch 出力オーディオ PCI カードから取り外してきたものです。 STAC9708 には 18 ビット分解能の DAC が 4 ch 内蔵されており、オーディオ・カードでは 2ch DAC 内蔵…

PIC32MX220F032B (8) -- AC97 コーデックを接続する (5)

Realtek 製 AC97 コーデック ALC650 の DAC 入力の HPF について調べてみました。 ALC650 は DAC 6 ch と SPDIF 出力 2 ch とを備えています。 ADC はステレオ 2 ch のみですが、その変換出力のディジタル・データを (フロント) ステレオ出力に「ループバッ…

PIC32MX220F032B (7) -- AC97 コーデックを接続する (4)

AC97 コーデック (Realtek (旧Avance Logic) 製 ALC650) を実装し、AD 入力、DA 出力ともに正常に行えることを確認しました。 しかし、DAC 側には HPF (ローカット・フィルタ) が入っていて、DC が出力できないという残念な事実も判明しました。 ALC650 には…

PIC32MX220F032B (6) -- AC97 コーデックを接続する (3)

AC97 コーデックとインターフェースする信号の波形写真を示します。 まだコーデック自体は実装しておらず、ソフトウェアの方もアプリケーションの入出力部分は実装していません。 ダブル・バッファ構成の DMA バッファおよび割り込みハンドラで 1/2 転送完了…

PIC32MX220F032B (5) -- AC97 コーデックを接続する (2)

PIC32MX220F032B には DMA コントローラが 4 ch 内蔵されています。 ひとつの DMA コントローラを入出力に兼用できないので、AC97 コーデックの ADC 入力と DAC 出力とを同時に利用する場合には DMA コントローラを 2 ch 使用することになります。 DMA 用の…

PIC32MX220F032B (4) -- AC97 コーデックを接続する (1)

PIC32MX に AC97 コーデックを接続する実験をしています。 と言っても、現在使用している基板上に実装スペースがないので、実際にはまだ接続しておらず、信号をオシロで観察しながらプログラムを書いている状況です。 当初 DMA や割り込みがうまく起動せず悩…

PIC32MX220F032B (3) -- SPI/I2S クロックの検討 (3)

PIC32MX220F032B に接続した (ノンオーバーサンプリング) ディジタル・オーディオ DAC に約 440 Hz の正弦波を出力するプログラムを下に示します。 正弦波は DDA (Digital Differential Analyzer) アルゴリズムで発生させており、左右のチャンネルに 90° 位…

PIC32MX220F032B (2) -- SPI/I2S クロックの検討 (2)

USB モジュール内蔵の PIC32MX2XX シリーズで、ディジタル・オーディオ用の 48 kHz / 44.1 kHz サンプリング周波数に対応するビット・クロックを発生させるブロック図を下に再掲します。 このブロック図の上側の USB PLL の系統で 48 kHz 用クロックを発生さ…

PIC32MX220F032B (1) -- SPI/I2S クロックの検討 (1)

PIC32MX のフラッシュに書き込む「プログラマ」ができたので、PIC32MX 上で走る自前の「プログラム」を書き始めました。 例によって、ディジタル・オーディオ関係の応用として、DAC や MMC/SD カード・スロット などを接続することを考えています。 検討した…