I2C通信が行えるようにZ8S180にパラレル-I2C変換用IC PCA9564Dを接続したいと思います。

なお、PCA9564Dは以前、Z8S180を購入した時に一緒にDigkeyから購入していたものです。

PCA9564Dは、8bitバスをI2Cに変換することができ、Z80のような8bitデータバスには容易に接続できます。

今回は、内部レジスターのI/O空間と重ならないように、アドレスバスをデコードしています。
デコード用のICとして定番の74HC138を使用しました。
アドレスA0-A1は直接PCA9564Dに接続され、内部レジスタのアドレス指定となります。
アドレスA2-A4は74HC138でデコードされますが、デコード出力Y0をPCA9564Dのチップ選択(CE)端子に接続していますので
A2-A4がオール"L”の時のみ選択されます。
A5及びA6はそれぞれE1、E2に接続されますが、両方との”L"の時のみデコード出力が有効になります。
A7はE3に接続されていますが、”H”の時のみデコード出力が有効になります。
アドレスとして
 A7 A6 A5 A4 A3 A2 A1 A0
 1 0  0 0 0 0  X X
で 0x80~0x83がPCA9564DのI/O空間アドレスとなります。(I/O空間上位8bitは無視しています)

I2Cの電源は回路図上では3.3Vです。三端子レギュレータで5Vから3.3Vを作っています。
また、I2Cのプルアップ抵抗がありませんので、接続するI2C回路側で行う必要があります。

回路は下記のようになります。
PCA9564Dの電源電圧が5Vになっていました。 3.3Vに訂正します(2017/3/5) I/Oは5Vトレラントです。

おすすめの記事