前回の「機能が大幅に強化されたSPI/I2Cプロトコル・エミュレータが新登場!!!」では、
REX-USB61mk2の外観を中心に紹介しました。
今回からは、REX-USB61mk2で強化された機能について紹介していきます。
まずは、スクリプト機能、仮想COM機能、API関数について説明します。
■スクリプト機能
従来のREX-USB61にはSPI/I2Cデバイスに対する制御をスクリプト言語で記述して
バッチ処理をするスクリプト機能がありました。
ただ、この機能は非常に単純な処理の実行に限られていました。
そこで、REX-USB61mk2 ではスクリプト機能の大幅な見直しを行い、スクリプト実行エンジンを刷新しました。
REX-USB61ではアプリケーションソフトでスクリプト機能を処理していましたが、
REX-USB61mk2では装置側にダウンロードして実行することで高速化を実現しています。
そして、強化された機能をサポートするためスクリプトコマンドも大幅に追加されています。
– 内部演算用レジスタの制御
– DIOポート制御
– 条件分岐処理
– ダイアログ表示
– I2C通信速度指定
– SPI高速書き込み制御
といったスクリプトコマンドが追加されています。
以下は、REX-USB61mk2で追加された新しいスクリプトコマンドです。
I2C/SPIモード共通コマンド | |
スクリプトコマンド | 説明 |
WAIT2=nn | 次の命令を実行する前に指定された時間待ちを行う。(1ms単位) |
DIODIR=x1 | DIOの入出力設定を行う。 |
DIOINT=x1,x2 | DIOの入力ポートの割り込み検出設定(x1)および割込判定条件(x2)を指定する。 |
WAINTINT=x1,Rn | DIOINTで指定した条件で割り込みを検知するまで待つ。タイムアウトの時間(x1)。 |
DIOSET=x1 | DIO出力ポートに出力を行う。 |
DIOGET | DIO入力ポートの状態を入力する。 |
SET Rn= x1 (,x2)SET Rn, x1 (,x2) | 内部の演算で使用するレジスタの設定を行う。 |
GET Rn | 指定したレジスタの値の取得を行う。 |
AND Rn=x1,x2AND Rn,x2 | x1とx2で指定した値の論理積を指定したレジスタへ代入する。 |
OR Rn=x1,x2 | x1とx2で指定した値の論理和を指定したレジスタへ代入する。 |
XOR Rn=x1,x2 | x1とx2で指定した値の排他的論理和を指定したレジスタへ代入する。 |
NOT Rn=x1,x2 | x1で指定した値の否定を指定したレジスタへ代入する。 |
SHIFTR Rn=x1,x2 | x1で指定した値をx2で指定したビット数右へビットシフト演算を行い指定したレジスタへ代入する。 |
SHIFTL Rn=x1,x2 | x1で指定した値をx2で指定したビット数左へビットシフト演算を行い指定したレジスタへ代入する。 |
ADD Rn=x1,x2 | x1にx2で指定した値を加算した結果を、指定したレジスタへ代入する。 |
SUB Rn=x1,x2 | x1にx2で指定した値を減算した結果を、指定したレジスタへ代入する。 |
IF x1 ope x2 { proc1 } ELSE { proc2 } ENDIF |
分岐処理。 ope で演算した結果、TRUEの場合はproc1の処理が実行され、FALSEの場合はproc2を実行する。 ope で使用できる演算子:「==」「<>」「<」「>」「<=」「>=」 |
DO { proc } WHILE x1 ope x2 |
繰り返し処理。 初回1回目は必ずprocが実行され、2回目以降は演算した結果、TRUEの間実行が繰り返される。 ope で使用できる演算子:「==」「<>」「<」「>」「<=」「>=」 |
MSGOK “message”, Rn |
OKダイアログを表示する。 messageで指定した文字列とRnで指定したレジスタ値を表示する。 OKを押下するまで実行が一時停止する。 |
MSGYESNO “message”, Rn { proc1 } ELSEMSG { proc2 } ENDMSG |
YES/NOダイアログを表示する。 messageで指定した文字列とRnで指定したレジスタ値を表示する。 YESまたはNOを押下するまで実行が一時停止する。 YESを押した場合は、proc1を実行する。 NOを押した場合は、proc2を実行する。 |
I2Cモード専用コマンド | |
スクリプトコマンド | 説明 |
SPEED=speed[,ad] |
I2Cの通信速度のモード(speed)指定し、調整値(ad)により調整する。 speed :LOW – Standard/Fast-mode、HS – High-speed mode、UF – Ultra Fast-mode |
READ_AND_STOP (LENGTH=)nn READ_AND_STOP (LENGTH=)nn, FILEn |
READと同じだが、最後にSTOPビットを送信する。 |
WRITE_AND_STOP (LENGTH=)nn WRITE_AND_STOP (LENGTH=)nn, FILEn |
WRITE と同じだが、最後にSTOP ビットを送信する。 |
SPIモード専用コマンド | |
スクリプトコマンド | 説明 |
SSPOL=[ HIGH | LOW ] SS_ACTIE=[ HIGH | LOW ] |
SS信号のアクティブレベル(アクティブHIGH、アクティブLOW)を選択する。 |
BITS=n | SPIで転送するビット数の指定を行う。 |
MULTI=SINGLE | DUAL | QUAD | SPIの高速書込みモード(DUAL-SPI/QUAD-SPI)の設定を行う。 |
SPI_XFER xx,xx, … FILEin SPI_XFER FILEout, FILEin |
指定バイトデータ、レジスタ、またはファイル(FILEout)内容を出力しつつ、入力データを最終パラメーターの FILEin に保存する。 |
SPI_WRITRDY | SPIデバイス内部のステータスレジスタのRDY/BUSYがRDYになるまで待つ。 |
スクリプトの実行方法や個々のスクリプトコマンドの詳しい仕様については、今後のブログでスクリプト記述例を使い説明していく予定です。
■仮想COM機能
仮想COM機能は、REX-USB61mk2から新たにサポートされた機能です。
これにより、パソコン上のシリアルポート通信用のターミナルソフトからのコマンド入力によって、
SPI/I2Cデバイスを簡単に制御できるようになりました。
以下は、仮想OCMモードでサポートするコマンドです。
制御コマンド名 | 対応モード | 説明 |
EXMODE | SPI/I2C | SPI/I2C モード変更コマンド。SPIとI2Cの2種類から使用する機能を選択する。 |
CONFIG | SPI/I2C | 設定値の表示コマンド。現在のモードと設定値一覧を表示する。 |
SET | SPI/I2C | 設定値の更新コマンド。各モードの設定値の更新を行う。 |
WRITE | I2C | I2CマスターWRITE コマンド。I2Cスレーブデバイスに対して書込みを行う。 |
READ | I2C | I2CマスターREAD コマンド。I2Cスレーブデバイスからデータの読み出しを行う。 |
TRANS | SPI | SPIマスター通信コマンド。SPIスレーブデバイスと通信を行う。 |
SSSET/SSRESET | SPI | SPI マスターSS 端子制御コマンド。SPIスレーブデバイスと通信を行うときの、スレーブセレクトの制御を行う。 |
DUMP | SPI/I2C | SPI/I2C のメモリデバイスデータ読み出しコマンド。(256バイト単位) |
DIO | SPI/I2C | DIOの制御コマンド。DIOの出力入力の設定と状態の表示を行う。 |
HELP | SPI/I2C | ヘルプコマンド。 |
VER | SPI/I2C | バージョン情報取得コマンド。 |
ECHO | SPI/I2C | エコーコマンド。ホストPCから送信された文字のエコーバックの制御を行う。 |
HISTORY | SPI/I2C | コマンド履歴表示コマンド。コマンドを実行した履歴の一覧表示を行う。 |
■アプリケーション開発を支援するAPI関数
従来のREX-USB61ではユーザアプリケーションを開発するためのVisual C++/Visual C#/VB用APIライブラリ
が提供されていましたが、REX-USB61mk2でも同様に提供されています。
そして、REX-USB61mk2で強化された機能をサポートする多くの関数が追加されています。
以下が、REX-USB61mk2で追加されたAPI関数です。
■REX-USB61mk2で追加されたAPI関数の一覧
DIO関数 | |
関 数 名 | 機能 |
usb61mk2_set_dio_mode() | DIOのIN/OUT, 割込検知を設定する |
usb61mk2_get_dio_mode() | DIOのIN/OUT, 割込検知を取得する |
usb61mk2_set_dio() | DIOの出力データを書き込む |
usb61mk2_get_dio() | DIOの入力データを読み込む |
I2C関数 | |
関 数 名 | 機能 |
usb61mk2_i2c_send() | I2Cデバイスに任意のデータを送信する |
usb61mk2_i2c_slave_start() | I2Cスレーブ開始 |
usb61mk2_i2c_slave_end() | I2Cスレーブ終了 |
SPI Master関数 | |
関 数 名 | 機能 |
usb61mk2_transmit_master_fast() | SPIマスターとしてデバイスへデータをライトしリードしたデータを返す(fastモード) |
usb61mk2_transmit_master_quad_fast() | SPIマスターとしてデバイスへデータをライトしリードしたデータを返す(Quad用fastモード) |
SPI Slave関数 | |
関 数 名 | 機能 |
usb61mk2_spi_slave_start() | SPIスレーブ開始 |
usb61mk2_spi_slave_end() | SPIスレーブ終了 |
usb61mk2_spi_read_slave_data() | SPIスレーブバッファメモリ取得 |
usb61mk2_spi_write_slave_data() | SPIスレーブバッファメモリ設定 |
usb61mk2_spi_read_slave_config() | SPIスレーブコンフィグ取得 |
usb61mk2_spi_write_slave_config() | SPIスレーブコンフィグ設定 |
usb61mk2_spi_read_slave_status() | SPIスレーブステータス取得 |
usb61mk2_spi_write_slave_status() | SPIスレーブステータス設定 |
usb61mk2_get_slave_select() | SS端子のマニュアル制御を取得 |
usb61mk2_set_slave_select() | SS端子のマニュアル制御を設定 |
個々のAPI関数については、今後のブログで具体的なサンプルプログラムとともに説明していく予定です。
以上、REX-USB61mk2で強化された機能の中のスクリプト機能、仮想COM機能、API関数について紹介しました。
次回も引き続きREX-USB61mk2で強化された機能を紹介していきます。
「REX-USB61mk2で強化された機能(その2)」に続く…
関連記事
SPI/I2C Serial EEPROMへのアクセスを簡単に(その1)
SPI/I2C Serial EEPROMへのアクセスを簡単に(その2)
SPI/I2C Serial EEPROMへのアクセスを簡単に(その3)
SPI/I2C Serial EEPROMへのアクセスを簡単に(その4)
SPI/I2C Serial EEPROMへのアクセスを簡単に(その5)
I2C RTCデバイスにアクセスする
I2C気圧センサーにアクセスする
機能が大幅に強化されたSPI/I2Cプロトコル・エミュレータが新登場!!!
REX-USB61mk2で強化された機能(その2)
REX-USB61mk2で強化された機能(その3)
REX-USB61mk2で強化された機能(その4)
REX-UBS61mk2の新機能 レジスタ設定ツール(その1)
REX-UBS61mk2の新機能 レジスタ設定ツール(その2)
REX-USB61mk2の新機能 EEPROM書込みユーティリティ
この記事で紹介した製品