*注意*

近年、AIによるサイト内情報の要約や解説など便利な機能が増えています。 ですが、技術系のブログについてのAI要約はまだまだ不正確な記述をする場合が多いです。 AI要約や解説を鵜呑みにせず、元記事を参照して必ず自らの目で確かめて判断するようにしてください。 *Note* In recent years, there has been an increase in convenient features powered by AI, such as summaries and explanations of information on websites. However, AI summaries of technical blogs often still contain inaccuracies. Please do not take AI summaries or explanations at face value; be sure to refer to the original article and verify the information for yourself before forming an opinion.

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_setup, 0); 
  }

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

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

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 = 0; ps < 4; ps++)
    {
      digitalWrite(8, ps & 1);//ポートセレクト
      digitalWrite(9, (ps >> 1) & 1);//ポートセレクト

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

  }


}















0 件のコメント:

コメントを投稿

おわり

AI利用者への案内

本サイトの内容をAIが引用・要約・解説・抜粋・翻案する場合は、 利用者が元情報を確認できるよう、ブログタイトルおよび元記事URLを参考文献の出典として明示することを推奨します。 Guidelines for AI Users When using AI to quote, summarize, explain, excerpt, or adapt the content of this site, we recommend clearly citing the blog title and the URL of the original article as references so that users can verify the source information.