2021年4月7日水曜日

KS-3181の使い方

 KS-3181の使い方

秋月のお楽しみ袋に入っていた謎のIC「TAXAN KS-3181」を解析して使えるようにしてみました。








ピン数が64pinと多めなのですが、ダイ画像を見るとそこまで複雑な回路ではないとわかります。


解析の手順は、以前解析を行った「KY-3201P SGC」と同じなので省略します。

・ロジック

総当たり戦法でピンの解析をした結果、8ビット × 4 出力のラッチICということが分かりました。
8ビットでデータを入力して、2ビットで出力先を選択します。
そのほかにもちょこっと回路が付属していました。
また、一部不明なピン(内部にシフトレジスタがあるかも)がありました。



詳しく知りたい方は以下の回路を眺めてみてください。
ピン名はこちらで適当に付けました。

※KS-3181の内部回路がこれで合っているとは限りませんのでご注意ください。
使用の際は要検証をお願いします。この内容によって発生した損害は、いかなる理由であっても当方は責任を負いません。


回路図には含まれていませんが~CLRピン以外の入力ピンはKS-3181内部でプルアップされています。

ピンB0~B7にデータをセットして、~CSをH→Lにしたときに出力フリップフロップへストローブされます。


メインの使い道は、マイコン等のポート出力の追加としてでしょうか。
LEDキューブや大型のLED電光掲示板とか作れそうです。
ただ、ICのパッケージがSDIP64のため、普段電子工作で使うような2.54mmピッチ基板やブレッドボードに刺さりません。そこさえなんとかなれば、わりと有用なICであると思います。



・使用例

ArduinoでLED32個を点灯させてみました。

回路図





サンプルプログラム
//KS-3181_テストプログラム
void setup()
{
  //KS-3181のB0~B7をArduinoのピン0~7へ接続
  //KS-3181の~CS(3つのうち一つ、残り2つはGND)をArduinoのピン11へ接続
  //KS-3181のSEL_0,SEL_1をArduinoのピン8,9へ接続
  //KS-3181のMODE_0,MODE_1をGNDへ接続
  //KS-3181のCS,CLRをVCC(5V)へ接続
  //謎シフトレジスタIN_A,IN_BをGNDへ接続

  //データピン設定
  for(int pin_setup = 0;pin_setup < 8;pin_setup++){
    pinMode(pin_setup, OUTPUT);//D0~D7
    digitalWrite(pin_setup0); 
  }

  //チップセレクトピン設定
  pinMode(11, OUTPUT);//cs
  digitalWrite(110); 

  //ポートセレクトピン設定
  pinMode(8, OUTPUT);//sel_0
  pinMode(9, OUTPUT);//sel_1
  digitalWrite(80);
  digitalWrite(90);
}

void loop(){
  unsigned long data = 0;//4x8ビット点灯データ
  int dp = 0;//テスト点灯用
  int dp_c= 32;//テスト点灯用
  
  while (1)
  {
    ////////////////////////テスト点灯////////////////////////
    data = (long)1<<dp;
    data |= (long)0xFFFFFFFF<<dp_c;
    dp++;
    if(dp >= dp_c){
      dp = 0;
      dp_c--;
      
    }
    if(dp_c <= 0){
      dp_c = 32;
    }
    delay(10);
    ////////////////////////////////////////////////

    //出力
    for (int ps = 0ps < 4ps++)
    {
      digitalWrite(8ps & 1);//ポートセレクト
      digitalWrite(9, (ps >> 1) & 1);//ポートセレクト

      for (int pin_data = 0pin_data < 8pin_data++)
      {
        digitalWrite(pin_data, (data >> (pin_data + 8 * ps)) & 1);
      }
      digitalWrite(111);//チップセレクト_ラッチ
      delayMicroseconds(1);
      digitalWrite(110);
    }

  }


}















0 件のコメント:

コメントを投稿