雑多な小物たち
[Menu]
EDID EEPROM ボード
[目的]
PC などのモニターコネクタに挿すことで、そこにモニターが繋がっているように偽装する
[見た目]
[基板配布サイト]
[ハードウェア構造]
モニターインターフェイスに含まれる I2C バスに EEPROM を接続している。また、モニタの接続を検出させるために、プルアップした端子を提供している
また、上記の[目的]を実現するためには以下の項目を満たす必要がある
- I2C EEPROM はスレーブアドレスが 0x50 である
- I2C EEPROM は、I2C でアクセスする際のアドレスフィールドが 8ビットである
[使用方法]
- 上記回路図に示すようなハードウェアを用意する。実装する部品は部品表を参照する
- 別途 EEPROM に希望の EDID 情報を書き込んでおき、ハードウェアに載せる
- MCP2221A を使って書き込む方法が、コストが安く済んでおすすめである。PIC、ATMEL その他のマイコンを使って書き込むのも、既に環境が手元にあるならおすすめ。(特に変わったことは必要ないと思う)
- 書き込み回路の用意や、書き込みソフトウェアの用意が手間な人は、拙作の MC2221A ボードを利用するのも良いと思う
- linux だと EDID の eeprom をコマンドで読み書きできるらしいので、linux マシンに本品を挿して書き込むことができそう(未検証)→https://ngkz.github.io/2019/01/edid-repair/
- モニターインターフェイスに接続する
EEPROM に書き込む EDID を用意するには、以下のツール、サイトが有用である
[動作確認環境]
- YAMAHA RX-V479 (AVアンプ) + 本品 を window10 PC に接続
[ちょっと細かい対応範囲]
ハードウェア構造により、以下の制約がある
- モニターインターフェイス内に I2C バスの端子が出ているもののみ対応可能 (VGA→wikipedia、DVI→wikipedia(DDC と表記のあるピン)、HDMI→wikipedia)
- Vesa の定める DDC の EDID に部分的に対応している。E-DDC には非対応である
- segment register に非対応であり(== E-DDC に非対応である)、EDID extension を最大で1つしか保持できない。そのため、対応する EDID のサイズは最大で 256bytes である
- EEPROM はスレーブアドレス 0x50 のものを一つしか接続できない構造のため、EDID と DisplayID を同時に提供することはできない
- 構造的には 256bytes の DisplayID にも対応できるはずだが、DisplayID の仕様を知らないので未検証である
- スレーブアドレス 0x50 へのアクセスに対してのみ応答するので、その他のスレーブアドレスを使った通信(例えば HDCP など)には対応しない
[なんとなく豆知識]
- Display port は I2C バスを含んでいない。代わりに AUX channel を使って EDID や DisplayID の情報を流すらしい。やり取りするバイト(ビット?)データとしては I2C プロトコルに従ってるっぽいけど、電気信号はおそらく違うだろう。(display port の規格を知らないので分からない)
MCP2221A ボード
[目的]
主たる目的は、EDID EEPROM ボードに使う I2C EEPROM に、用意したデータを書き込むこと。及びデータを読み出すこと
二次的な目的として、MCP2221A が提供する I2C、GPIO、シリアルに各種デバイスを繋いでソフトウェアでテスト動作等をすること
[見た目]
[ハードウェア構造]
MCP2221A 周りの回路に特別なところはない。3.3V レギュレータを載せ、ジャンパで切り替えることで、MCP2221A 及び EEPROM に供給する電圧を 5V と 3.3V で切り替えることができる。また、I2C バスは 4.7KΩでプルアップされている。データシートによると MCP2221A の I2C の最大速度は 400Kbps なので、この値くらいがちょうどよいと判断した
MCP2221A は、DIP と、表面実装品を 600mil の変換基板に載せたものと、どちらも使える。[見た目]の完成品は、SOP を変換基板に実装したものを載せている
また、I2C EEPROM を載せるための 8pin ソケットと、MCP2221A の GPIO、シリアル、I2C 及び、5V 及び 3.3V 等を取り出すことのできるパターンが用意されている。
[基板配布サイト]
[使用方法]
利用可能なソフトウェア : mcp2221_i2ceeprom.py (拙作の python スクリプト)
- 上記回路図に示すようなハードウェアを用意する。実装する部品は部品表を参照する。この時、以下の点に注意すること
- 3.3V レギュレータの実装向きには注意する (写真)
- 部品 J6 には、供給したい電圧に応じてジャンパをつける。基板のシルクを参考に間違えずにつけること。 (5V設定 / 3.3V設定)
# I2C EEPROM に書き込むだけの使用なら、常に 5V の設定で問題ないと思う
- J6 に、シルクの情報に従って 2つのジャンパを取り付ける。(5V設定 / 3.3V設定)これにより、MCP2221A と EEPROM の電源電圧が決まり(5V あるいは 3.3V)、MCP2221A の GPIO, シリアル、I2C の信号電圧も決まる。J3 の VDD ピンへの電圧供給も決まる。ジャンパ設定にかかわらず 5V 及び 3.3V を得たいときは、J2 から取る。
- 書き込み、読み込み対象の EEPROM を 8pin ソケットに載せる
- USB ケーブルで PC に接続し、拙作の mcp2221_i2ceeprom.py を使用する。利用方法はリンク先のドキュメントを読むこと
[動作確認環境]
使用した I2C EEPROM は以下のもの
その他の I2C EEPROM にも対応できるよう mcp2221_i2ceeprom.py を作成しているが、上記の EEPROM 以外は未検証である
検証プラットホームは Windows10 の PC、python 3.11.1、hidapi 0.12.0.post2、mcp2221_i2ceeprom.py である
ハードウェア的には USB2.0 (12Mbps) のホスト機能を持つ環境から利用できると思う