JJ1KGLのブログ

工作をしたときなど、不定期にアップします。

ArduinoでMCP23S17を使ってみる その1(備忘録)


書き込み

MCP23S17というのはSPI接続のIOエキスパンダ 8ピン×2ポート=16の入出力ピンを拡張できる
SPI通信もIOエキスパンダも初めて触るので、ネット記事・YouTube・ChatGPT・データシートに訊きながら試行錯誤する
Arduinoとの接続は6本 V+、GND、MISO、MOSI、SCK、CS

#include <SPI.h>
void setup(){
SPI.transfer(0x00)
}
void loop(){ 
}

これだけでArduinoからMCP23S17に「0x00」のデータが送信された
しかし何も起こらない。MCP23S17は「0x00」をどうすればいいか分からないから

正しい使い方はデータシートのP15に書いてある
SPIの書き込み動作

  1. CS(チップセレクト)をLOWにして通信開始
  2. 書き込みコマンド(≒制御バイト≒オペコード)を送信する
    ・A2、A1、Aの部分はハードウェアアドレスピン(15~17ピン)で設定したアドレス ただし、初期設定では設定自体が無効になっているので000で読み替えればよい
    ・R/Wの部分は書き込みか読み取りかの指定 今回は書き込みなので1
    ・結局のところ「0b01000000」が書き込みコマンドとなる
  3. アドレスを送信する
  4. データを送信する
  5. CSをHIGHにして通信終了

これをArduinoのプログラムにするとこうなる

#include <SPI.h>
#define CHIP_SELECT 10
#define OPECODE_W 0b01000000

void setup(){
  pinMode(CHIP_SELECT, OUTPUT);
  digitalWrite(CHIP_SELECT, HIGH);

  digitalWrite(CHIP_SELECT, LOW);
  SPI.transfer(OPECODE_W);
  SPI.transfer(0x00);
  SPI.transfer(0b00000000);
  digitalWrite(CHIP_SELECT, HIGH);
  
}
void loop(){ 
}

これでMCP23S17の「0x00」というアドレスに「0b00000000」というデータが書き込まれた
ちなみに「0x00」というアドレスは「I/O方向レジスタ(Aポート)」になっているので、これでMCP23S17のAポートのそれぞれのピンについて入力か出力かを切り替えることができる 今Aポートの全8ピンが「出力」になった



ところで「書き込みコマンド」の事を「オペコード」や「SPIの制御バイト」といろいろな書き方をしているので最初は分かりにくかった

次回 レジスタについて

<FT-857>CAT制御用インターフェース

最近、CAT制御というものに興味を持った。FT-857をCAT制御するには、いくつかの方法がある。

 

パソコンのシリアルポートからFT-857本体背面の『CAT/TUNER/LINEAR端子』にシリアルケーブルを接続するやり方が一般的だが、この端子は1つしかない。

(最近のパソコンにはシリアルポートが無いので、USB-シリアル変換ケーブルを使用する。)

 

この端子に接続して使用するものは、他にもオートアンテナチューナー『FC-30』『FC-40』や、リニアアンプ『VL-1000』などがある。

 

そのため、例えばFC-40を使用しながらパソコンからCAT制御をするといったことができないのである。。。と思ったら、

 

説明書 メニューモード NO・059 MIC SEL

マイク端子の動作を選択します。

<中略>

CAT : アンテナチューナー接続時にCAT運用を行うときに選択します

 

どうやらできるらしい。ということで作ってみた。

 

設計・準備

f:id:jj1kgl:20190516000839p:plain

回路図

言うまでもないが、こういう使い方をすると、純正マイク(MH-31)の『UP』『DOWN』ボタンは使用できなくなる。

各キットは秋月電子秋葉原店より調達。(通販でも買える。)

 

 

ユニバーサル基板はこのあたりを使うとピッタリ(というがギリギリ)収まる。

 

どうせ『GND』『RXD』『TXD』しか使わないので、このUSB-シリアル変換モジュールでもできるかもしれない。こっちの方が小型。(未検証)

 

配線の設計は『PasS』を使用。

f:id:jj1kgl:20190516002544p:plain

ユニバーサル基板の配線(青=裏配線、赤=表配線)

 

試作

 

f:id:jj1kgl:20190516003909j:plain

各キットにピンヘッダを付け、まずはブレッドボードで動作確認。

 

制作

f:id:jj1kgl:20190516004128j:plain

表配線があるので先にメッキ線を通しておく。

f:id:jj1kgl:20190516004728j:plain

各キットを基板にはんだ付け。

f:id:jj1kgl:20190516004832j:plain

裏配線。

動作確認、、、、あれ、動作しない。

『RXD』と『TXD』を逆に繋いでいたらしい。

f:id:jj1kgl:20190516005054j:plain

 とりあえずの修正。

これだと気分が悪いので最初からやり直し。

f:id:jj1kgl:20190516005233j:plain

完成品

動作確認よし!

JJ1KGLはスルーホール基板を使ってしまったが、表配線をするので片面基板を使わないといけないことに最後に気が付いた。

仕方がないので裏配線を少しだけ浮かせて、スルーホールの反対側と短絡しないようにした。

 

 

ハムログと連携する場合の設定

パソコンの設定

コントロールパネル→ハードウェアとサウンド→デバイスマネージャー→ポート(COMとLPT)→接続したUSB変換キットを確認。COMポート番号を控えておく。この場合『5』

f:id:jj1kgl:20190516010722p:plain

設定を変えたらwindowsを再起動する。

 

FT-857の設定

  • メニューモード NO・019 CAT RATE 『4800bps』
  • メニューモード NO・059 MIC SEL 『CAT』

 

ハムログの設定

  • オプション→環境設定→設定5

    f:id:jj1kgl:20190516011901p:plain

    FT-847の設定だけでOK
  • オプション→入力環境設定→リグ接続設定

f:id:jj1kgl:20190516012239p:plain

取得する周波数の設定はお好みで。

設定を変えたらハムログを再起動する。

このあたりの設定は、ハムログ公式にも掲載されている。

 

終了

ハムログへの周波数や電波形式の取得だけではなく、他にもできることがあるはずです。活用法があればコメントよろしくお願いします。

たしか、スマホのアプリでCAT制御するやつがあった気がする。