この記事では自作アプリの使い方を説明しています。自作アプリに関しては以下の記事をご参照ください。
ysin1128.hatenablog.com
Windows アプリの 「CMD」「 CMD_Multi」 タブで使用するコマンドの説明です。
Android アプリでも同じコマンドを使用します。
- コマンドのフォーマット
- I2C / Write コマンド
- I2C / Read コマンド
- I2C / Write Bit コマンド
- I2C / Search コマンド
- I2C / Bus Clear コマンド
- SPI コマンド
- GPIO コマンド
- GPIO パターン繰り返し出力コマンド
- Clock 出力コマンド
- UART コマンド
- Delay コマンド
- コメントアウト
- コマンドの使用例
コマンドのフォーマット
command_word B0 B1 B2 ...
コマンドは command_word と複数の バイナリ (Hex表記) を半角スペースで区切ったもので構成します。
command_word
command_word は1文字、または、複数文字の小文字のアルファベットです。
command_word: | 内容 |
w | I2C Write を実行します |
r | I2C Read を実行します |
wb | I2C Write Bit を実行します |
i2cs | I2C Search を実行します |
i2cc | I2C Bus Clear を実行します |
s | SPI Read/Write を実行します |
g | GPIO を制御します |
p | GPIO で生成したパターンの繰り返し出力を制御します |
c | Clock 出力を制御します |
u | UART TX/RX を実行します |
delay | Delay を挿入します |
バイナリ値 (B0, B1, B2,...)
バイナリ値 (0 - 255) を Hex表記 (00 - FF) したもので I2C の Slave Address 等、コマンドの実行に必要な引数を与えます。
コマンドの分割
「+」の使用により、コマンドを複数行に分割することが可能です。
例えば、下記の記述はどちらも同じコマンドとして処理されます。
分割無し | 複数行に分割 |
w 24 01 02 03 04 05 ... FF | w 24 01 02 ... 0F +10 11 12 ... 1F +20 21 22 ... 2F ... +F0 F1 F2 ... FF |
I2C / Write コマンド
フォーマット
w B0 B1 B2 ...
w | command_word |
B0 | 7-bit Slave address (8-bit ではないことに注意) |
B1, B2, ... | 書き込みデータ |
戻り値
無し
例
w 24 00 01 10 A0 FF
Slave address 0x24 に 5-byte のデータ (0x00 0x01 0x10 0xA0 0xFF) を書き込む。
I2C / Read コマンド
フォーマット
r B0 B1 B2 ... Bz
r | command_word |
B0 | 7-bit slave address (8-bit ではないことに注意) |
B1, B2, ... | 書き込みデータ (レジスタアドレス等の書き込みが事前に必要な場合。不要であれば省略可能) |
Bz | 読み出しデータ数 (Hex表記) |
戻り値
読み出したデータ (Hex表記)
I2C / Write Bit コマンド
フォーマット
wb B0 B1 B2 ... B(n-1) B(n)
wb | command_word |
B0 | 7-bit Slave address (8-bit ではないことに注意) |
B1, B2, ... | レジスタアドレス (不要であれば省略可能) |
B(n-1) | 書き込みデータ |
B(n) | 書き込む Bit の指定 |
戻り値
無し
例
wb 24 00 42 5A
Slave address 0x24 レジスタアドレス 0x00 の Bit 6/4/3/1 に 1/0/0/1 を書き込む。Bit 7/5/2/0 の値は変更しない。
I2C / Search コマンド
フォーマット
i2cs B0 B1
i2cs | command_word |
B0 | Search を開始する 7-bit Slave address |
B1 | Search を終了する 7-bit Slave address |
戻り値
ACK が返ってきた 7-bit Slave address
例
i2cs 08 77
Slave address 0x08 から 0x77 までの全ての Slave address に対して ACK を返す相手がいるかどうかを調べ、ACK が返ってきた Slave address を出力する。
I2C / Bus Clear コマンド
フォーマット
i2cc B0 B1
i2cc | command_word |
B0 | 00 (固定) |
B1 | 00 (固定) |
戻り値
無し
例
i2cc 00 00
SCL が Clock を 9 回出力する。
SPI コマンド
フォーマット
s B0 B1 B2 ...
s | command_word |
B0[7:6] | 00 (固定) |
B0[5] | 0 = MSB First, 1 = LSB First |
B0[4:2] | SPI Clock, 0 = (1/2) x Arduino CLK, 1 = (1/4) x Arduino CLK , ..., 6 = (1/128) x Arduino CLK |
B0[1:0] | SPI mode, 0 = mode 0, 1 = mode 1, ..., 3 = mode 3 |
B1, B2, ... | 書き込みデータ |
戻り値
読み出したデータ (Hex表記)
例
s 00 10 FF
MSB First, SPI Clock = 8MHz (Arduino CLK=16MHz の場合), SPI mode = 0 で 2-byte のデータ (0x10 0xFF) を書き込み、2-byte のデータを取得する
GPIO コマンド
フォーマット
g B0 B1 B2 B3 ...
g | command_word |
B0, B1 | 信号幅, B0 x 256 + B1 [msec] |
B2[7] | D7 の Input/Output の切り替え, 0 = Input, 1 = Output |
B2[6] | D6 の Input/Output の切り替え, 0 = Input, 1 = Output |
B2[5] | D7 の出力, 0 = Hi-Z (Input時), Low (Output時), 1 = Pull-up (Input時), High (Output時) |
B2[4] | D6 の出力, 0 = Hi-Z (Input時), Low (Output時), 1 = Pull-up (Input時), High (Output時) |
B2[3] | D5 の出力, 0 = Low, 1 = High |
B2[2] | D4 の出力, 0 = Low, 1 = High |
B2[1] | D3 の出力, 0 = Low, 1 = High |
B2[0] | D2 の出力, 0 = Low, 1 = High |
B3, ... | B2 と同じ |
戻り値
各GPIO ピンの入出力状態
- 出力 (Digital): D5-D2 (4本)
- 入力 or 出力 (Digital): D7, D6
- 入力 (Analog): A1, A0 (入力電圧 = Arduino の電源電圧 x (n/1023) の n値を取得)
例
g 00 01 03 00 03 00
D3, D2 が 幅 1msec の High/Low パルスを 2回出力し、各出力時の D7-2, A1, A0 の状態を取得する。D7, 6 は Input (Hi-Z)
GPIO パターン繰り返し出力コマンド
フォーマット
p B0 B1
p | command_word |
B0 | 0 = 出力停止, 1 = 出力開始 |
B1 | 繰り返し回数, 0 = 連続出力 |
戻り値
無し
例
p 01 00
D6-D2 が直前の g コマンドで生成したパターンを繰り返し出力する。p 00 00 コマンドの実行で停止する。
このコマンドでパターンを出力する場合、D8, D7, A1, A0 の状態は取得されない。
Clock 出力コマンド
フォーマット
c B0 B1 B2 B3
c | command_word |
B0, B1 | Clock周期, (B0 x 256 + B1) x (Arduino の Clock周期) |
B2, B3 | High幅, (B2 x 256 + B3) x (Arduino の Clock周期) |
戻り値
無し
例2
c 00 00
D9 からの Clock 出力を停止する
UART コマンド
フォーマット
u B0 B1 B2 ... B(n)
u | command_word |
B0[7:6] | 00 (固定) |
B0[5:4] | 00 = 8 bit, 01 = 7 bit |
B0[3:2] | 00 = Stop bit 1 bit, 01 = Stop bit 2 bit |
B0[1:0] | 00 = Even parity, 01 = Odd parity, 10 = none |
B1, B2, ... | TX データ |
B(n) | RX データ数 (Hex表記) |
戻り値
読み出したデータ (Hex表記)
例
u 00 11 22 02
データ長 = 8 bit, Stop bit = 1 bit, Even parity で 2 byte のデータ (0x11, 0x22) を TX から出力し、RX で 2 byte のデータを受信する
Delay コマンド
フォーマット
delay D0
delay | command_word |
D0 | Delay時間 [msec]。10進数で入力 |
戻り値
無し
例
delay 1000
1000 msec 待つ。
コメントアウト
行頭に // を挿入するとその行は無視されます。
例
w 24 00 0F
// w 24 01 10
w 24 02 1A
Slave address 0x24 Register address 0x00 に 0x0F、Register address 0x02 に 0x1A を書き込む。 Register address 0x01 への書き込みは行われない (コマンドが無視される)。