前回の「REX-USB61mk2で強化された機能(その1)」では、
REX-USB61mk2で強化された機能のスクリプト機能、仮想COM機能、API関数について紹介しました。
引き続き、今回もREX-USB61mk2で強化された機能について紹介していきます。
今回は、REX-USB61mk2で高速化された機能と汎用入出力ポート(DIO)のサポートについて説明します。
■高速化について
従来のREX-USB61からの最も強化された点として挙げられるのが高速化です。
REX-USB61mk2では、(1)マイクロコントローラ/(2)ホストとの転送速度/(3)SPI/I2Cバス転送速度の3点から高速化が図られています。
REX-USB61mk2 | REX-USB61 | ||
1 | マイクロコントローラ | ARM Cortex-M3べース(32bit) 動作クロック 180MHz |
PICベース(8bit) 動作クロック 24MHz |
2 | ホストとのデータ転送速度 | USB2.0 Hi-Speed (Max. 480Mbps) |
USB2.0 Full-Speed (Max. 12Mbps) |
3-1 | SPIバスの最大周波数(SCK) | 50MHz | 12MHz |
3-2 | SPIバスの最大データバス幅 (最大ビット数) |
Quad Max 32bit |
Single Max 8bit |
3-3 | I2Cバスの最大周波数(SCL) | 5MHz | 1MHz |
3-4 | I2Cバスの通信モード | Standard-mode, Fast-mode に加えて Fast-mode plus, High-speed-mode, Ultra Fast-mode に対応 |
Standard-mode, Fast-mode に対応 |
【1】高速なマイクロコントローラを搭載
REX-USB61mk2の頭脳とも言える処理能力を左右するマイクロコントローラにARM Cortex-M3ベースの32ビットプロセッサーを採用しました。
これにより、REX-USB61ではマイクロコントローラの処理能力(8ビット)の限界で難しかった高速処理・高速通信が可能となりました。
【2】ホストとの高速転送への対応
パソコンとのUSBによるデータ転送はUSB2.0 Hi-Speed転送への対応によりMax 12MbpsからMax 480Mbpsへと転送スピードが大幅に向上されています。
【3】SPI/I2Cバス転送能力の向上
SPIバスおよびI2Cバスの両方でその転送能力が向上されており、高速デバイスへの対応が可能となっています。
【3-1】SPIバス転送能力:バスクロックの高速化
SPIバスの最大周波数がREX-USB61のMax 12MHzからMax 50MHzへと大幅に向上されています。
【3-2】SPIバス転送能力:Quadモードへの対応
REX-USB61ではSPIバスの転送モードは Singleのみでした。
REX-USB61mk2では新たに、DualモードおよびQuadモードに対応しました。
以下の2つの図ではSingleモードとQuadモードの転送の違いを簡単に説明しています。
■Singleモードのデータ転送
SingleモードではMOSI信号1本でデータ転送を行い、
1バイト(8ビット)のデータ転送に8クロックが必要です。
(※マスターからスレーブへの転送の場合です)
■Quadモードのデータ転送
QuadモードではMOSI0/MOSI1/MOSI2/MOSI3の4本の信号線を用いてデータ転送を行い、
1バイト(8ビット)のデータ転送がSingleモードの4分の1の2クロックで終わります。
このように4本の信号線を使用して高速転送を行います。
Dual, Quadモード対応のためにスクリプトコマンドやAPI関数が追加されています。
Dual, Quadモード対応のために追加されたスクリプトコマンド
スクリプトコマンド書式 | 意味 |
MULTI=SINGLE or DUAL or QUAD |
SPIの高速書込みモードの設定を行う。
SINGLE, DUAL, QUADを指定できる。 いつでも変更することが可能で、変更後の通信から適用される。 設定しない場合の初期値は、「SINGLE」。 |
Dual, Quadモード対応のために追加されたAPI関数
※ここでは、VCでのAPI関ついて説明します。
VB, VB.NET, C#でのAPI関数ついてはユーザーズマニュアルをご覧ください。
API関数 | usb61mk2_spi_transmit_master |
機能 | SPIマスターとしてデバイスへデータをライトし、リードしたデータを返す |
書式 |
INT usb61mk2_spi_transmit_master( UCHAR UnitID, PRS_SPI_TRANSFER_INFO pSPITransferInfo); |
引数 |
UnitID ユニット番号 pSPITransferInfo 以下のSPI_TRANSFER情報が格納されている typedef struct _RS_PSI_TRANSFER_INFO { UCHAR MultiIO; // Multi I/Oを指定する // 無効を指定した場合は、SingleSPI動作とする UCHAR Read; // 転送したデータに対するRead Dataを返すか // 指定する UCHAR SS; // スレーブセレクト専用PINの制御を行う // 転送開始前にセット(Low Level) // 転送完了後にセット(High Level)を行う UCHAR REG; // データ値の参照元の指定 UCHAR Transbit; // 1byte未満の転送するビット数を指定する // 0の場合は8bit転送する ULONG WriteBytes; // アクセスするバイト数 ULONG ReadBytes; // アクセスするバイト数 UCHAR *pWriteDataBuf; // アクセスしたデータ UCHAR *pReadDataBuf; // アクセスしたデータ } RS_SPI_TRANSFER_INFO, *PRS_SPI_TRANSFER_INFO; |
API関数 | usb61mk2_spi_transmit_master_quad_fast |
機能 |
SPIマスターとしてデバイスへデータをライトし、リードしたデータを返す。 (Quad用fastモード) |
書式 |
INT usb61mk2_spi_transmit_master_quad_fast(UCHAR UnitID, PRS_SPI_TRANSFER_INFO pWTENInfo, PRS_SPI_TRANSFER_INFO pSPITransferInfo, BYTE RDSR, BYTE bit, BYTE Value, DWORD dwTime); |
引数 |
UnitID ユニット番号 pWRENInfo SPI_TRANSFER情報が格納されている (WriteEnable用) pSPITransferInfo SPI_TRANSFER情報が格納されている RDSR ReadStatusRegister bit ReadStatusRegisterのRDY監視bit番号 Value ReadStatusRegisterのRDYの値 dwTime タイムアウトエラー時間(1ms単位) |
【3-3】 I2Cバス転送能力:I2Cバスクロックの高速化
I2Cバスの最大周波数がREX-USB61のMax 1MHzからMax 5MHzへと上がりました。
【3-4】 I2Cバス転送能力:Fast-mode plus, High-speed-mode, Ultra Fast-modeへの対応
従来のFast mode/Standard mode(F/S-mode)に加えて、新たにHigh-speed mode(HS-mode)に対応しました。
また、Ultra Fast-modeにも対応しています。
F/Sモード
通信モード | 最大ビットレート(bps) | REX-USB61mk2 | REX-USB61 |
Standard-mode | 100k | ○ | ○ |
Fast-mode | 400k | ○ | ○ |
Fast-mode plus(Fm+) | 1M | ○ | × |
Hsモード
通信モード | 最大ビットレート(bps) | REX-USB61mk2 | REX-USB61 |
High-speed-mode(Hs-mode) | 3.4M | ○ | × |
Ultra Fast-mode (※) | 5M | ○ | × |
(※) Ultra Fast-modeは、片方向の転送のみとなります。
以下は新たに追加されたHs-modeのデータ転送フォーマットとモード切り替わりの詳細です。
■Hs-modeのデータ転送フォーマット
S :スタートコンディション
Ā :ノット・アクノリッジビット
Sr:リピートスタートコンディション
A :アクノリッジビット
Sr:リピートスタートコンディション
P :ストップコンディション
S:スタートコンディション
Ā:ノット・アクノリッジビット
Sr:リピートスタートコンディション
A:アクノリッジビット
Sr (実線):リピートスタートコンディション
P (点線):ストップコンディション
(1) マスターコード(000 1xxx)を出力してノット・アクノリッジビット(Ā)を転送すると、SCLH信号の電流ソース・プルアップをイネーブルにして、Hs-modeに切替ります(ビットレートが切替ります)。
(2) リピートスタートコンディション(Sr)に続くデータ転送が要求されたビットレートで実行されます。
(3) 一連のデータ転送後のストップコンディション(P)でF/S-modeに戻りますが、一連のデータ転送後にリピートスタートコンディション(Sr)を転送することでHs-modeを継続できます。
※ Hs-modeに関する詳しい説明は、NXP Semiconductors社のI2Cバス仕様書をご覧ください。
新たな通信モードをサポートするためにスクリプトコマンドも拡張されています。
High-speed-mode, Ultra Fast Mode対応のために拡張されたスクリプトコマンド
スクリプトコマンド書式 | 意味 |
SPEED=speed,[ad] |
I2Cの通信速度の設定を行う
speed LOW | FS Standard/Fast-mode HS High-speedモード UF | US Ultra Fast-mode ad 通信速度の調整値 設定範囲:-15~15 未設定時:0 調整値範囲 Standard 100kHz : -3.6kHz ~ 2.2kHz Fast-mode 400kHz : -40kHz ~ 50kHz Fast-mode plus 1MHz : -120kHz ~ 430kHz High-speed-mode 3.4MHz : -1.5MHz ~ 18MHz Ultra Fast-mode 5MHz : -3MHz ~ 50MHz |
MASTER CODE nn |
HS-mode切り替え時のマスターコードを送信する。 nn リテラル値:マスターコード (通常 0x08) |
以上のように、マイクロコントローラ、ホストアクセス、デバイスアクセスの全ての性能を向上させることにより全体的な高速化が図られました。
この結果、REX-USB61mk2はREX-USB61と比較してSPIモードでは約6倍の転送速度を実現しています。
引き続き、次頁では、汎用入出力ポート(DIO)のサポートを見ていきます。