3月 192015
 

前回の「機能が大幅に強化された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,x2
AND 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書込みユーティリティ


この記事で紹介した製品

REX-USB61mk2製品画像
REX-USB61mk2 - USB-SPI/I2Cプロトコル・エミュレーター(ハイグレードモデル)

REX-USB61製品画像
REX-USB61 - USB-SPI/I2Cプロトコル・エミュレーター

 返信する

以下のHTML タグと属性が利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(必須)

(必須)

*