2019年11月16日土曜日

IchigoJamのI/Oを増やしてみる

IchigoJamは28ピンのLSIを使っているので、IO端子数が結構厳しいです。
そこで、これを増やす方法を考えました。

端子を増やすにはエキスパンダを使う。

エキスパンダって白黒のかわゆい希少動物ではなく、Expandするヤツです。
ふと目についたこれ。

タイトルは、「キャラクタLCDをシリアル接続するアダプタ」です。
キャラクタLCDは最低でも7ピン必要なのですが、マイコンで7本のピンが残っていないときシリアル接続するための基板です。LCD用ですが、中を見ると「PCF8574」が使われていてこれを調べると「汎用IOエキスパンダ」でした。つまり、汎用品を使ってLCD基板を作っています。
ならば、汎用エキスパンダにも使えるはずということで、試してみました。

IchigoBoyPocketにつないでいます。
4ピン部分をROMソケットにつなぎます。IchigoJamの配置とはSDAとSCKが逆なのでそのままでは刺せません。私は配線に変えてつなぎました。
16ピン側がLCDに行く線ですが、これのDB7~DB4,E,R/W,RSの7本が使えます。

ポイントは、

  • READするポートは1をWRITEしておく事
  • I2Cアドレスが2種類あること(#27、#3FでICの種類で変わります。)
  • IchigoJamのROMソケットとは信号が逆順だった。

アドレスが2種類あるので注意が必要です。各々7アドレス追加でき8個を同時につなぐことができます。
単純にここを1バイトI2CWすれば書き込むことができるし、1バイトREADすれば読み出せます。1ビットごとではなく8ビット同時です。
まずは読み出しサンプルプログラムです。行60で#FFをOUTしておきます。
10 'IO Expander
50 POKE#700,255
60 R = I2CW(#3F,#700,1)
100 for i = 0 to 255
110 poke#700, i
120 R = I2CR(#3f,#700,1)
125 ?BIN$(PEEK(#700))
130 NEXT
140 GOTO 100

次は書き込みサンプルプログラムです。

10 'IO Expander OUT
100 for i = 0 to 255
110 poke#700, i
120 R = I2CW(#3f,#700,1)
125 ?I
130 NEXT
140 GOTO 100
ここまでは、簡単ですね。
手元のアダプタでは次のような対応でした。
Jam    アダプタ
Bit7             DB7
Bit6             DB6
Bit5             DB5
Bit4             DB4
Bit3            なし。読むとゼロです。
Bit2    E
Bit1            R/W
Bit0            RS
注:読むときはOUT=1にすること。
注:アドレスは#27と#3Fがあるので動かないときは両方試すとよいかも。

これを使って電子工作してみましょう。

 追加でスイッチをつないだり、モーターをつないだりできますね。
電子工作するときに便利そうです。






0 件のコメント:

コメントを投稿