非同期式シリアル通信(UART)使用時の フロー制御

USBH-ACS20補足技術資料
型式: USBH-ASC20
REV1.00
USBH-ACS20のバッファについて
非同期式シリアル通信(UART)使用時の
フロー制御について
USBH-ACS20は、Wコマンド受信後、書き込みデータの待機状態と
なります。例えば、下記のコマンドを受信した場合、USBH-ACS20は
1000バイトのデータの受信することになります。
W 1>3E8
(C)2009 マイクロテクニカ
本補足資料は、マニュアルの内容に補足を行うものです。
USBH-ASC20にホスト機器から送られたデータは、次々とUSBメ
モリーに送られ、USBメモリー内の記憶領域にデータが書き込まれて
UART通信:2線式通信の場合の特徴と注意
いきます。この時の書き込み速度は、様々な条件により変わりますが、
おおむね70kBytes/secと高速です。
USBH-ASC20では、制御インターフェイスにUART又はI2Cを選択
することができます。UARTを選択した場合、非同期式シリアル通信に
しかしながら、USBメモリーは常に書き込み処理を継続しているわ
けではなく、USB規格そのものによるポーリング処理や、USBメモリー
てホスト機器(USBH-ASC20と接続する機器)と通信を行うことにな
りますが、通信速度や送信するデータのサイズ、その他使用するUSBメ
が書き込みに際して不規則に一時的なウェイトをする場合があります。
モリーメーカーや機種等によっては、ハードウエアフロー制御を行わな
すなわち、USBメモリーに対して連続的に書き込みができない場合が
生じることがあります。この時のウェイト時間は、一定ではなく数マイク
いとデータが欠落する場合があります。
ロ秒~長い場合には数十ミリ秒まであります。
このような状態の時に、ホスト機器からデータが次々と送られてくる
UART通信の場合、手軽に通信を行うときにはTX線とRX線をホスト
機器に接続し、USBH-ASC20のCTSピンをLowレベルに固定して、2
と、USBH-ACS20はUSBメモリーにデータを書き込むことができず、
線式通信でデータの送受信を行うことができます。この場合にはホスト
そのデータを一時的に内部のバッファにバッファリングするようになっ
ていますが、そのサイズは約100バイト程度です。よって、それ以上のデ
機器との接続は送信データと受信データの2線だけでよく、手軽な通信
が行えます。
ータが送られてくると、データはオーバーフローしてしまいます。オーバ
(CTSピンはUSBH-ACS20への入力ピンで、このピンがLowレベルの
ーフローしたデータは、欠落してしまいます。
時、USBH-ACS20はTXピンからデータを出力します。)
UART通信:RTS線を使用したフロー制御について
このような問題を解決し、データ欠落なく完全にデータの保証を行う
場合には、ハードウエアフロー制御が必要です。ハードウエアフロー制
御は、ハンドシェイク通信とも呼ばれています。これは一般的なRS232
C規格で用いられるものと同様で、CTS及びRTSによるフロー制御で
す。
一般的にフロー制御を行う場合には両機器間で、CTS線・RTS線を
クロスさせて接続させるのが一般的ですが、USBH-ACS20の場合に
は、ホスト機器からUSBH-ACS20へ送られるデータの制御のみを行
えばよいので、USBH-ACS20のRTSピンと、ホスト機器のCTSピンを
接続することになります。
(USBH-ACS20のRTS線は、USBH-ACS20がデータの処理を続け
られない時、ホスト機器に対して、データの送信を待ってもらうための
上図は2線式UARTで構成したときの配線例です。インターフェイス
部分のみを記載しています。
信号です。)
ただし、このインターフェイス方法の場合には、通信の内容が保証さ
れません。ホスト機器は一方的にデータを送信するだけで、例えば、US
BH-ACS20が様々な要因で、データの受信にウェイトが生じた場合、
その時のデータは欠落することがあります。
通信速度がおおむね9600bps程度で、送信するデータも数100バイ
ト程度であれば、問題になることはありませんが、通信速度が高速にな
り、一度に送信するデータ量が多くなると、データの欠落に注意が必要
となります。確実な通信を行うためには、次に記載のハードウエアフロ
ー制御(ハンドシェイク通信)の構築が必須となります。
データを確実に書き込むようシステムを設計する場合には、ハード
ウエアフロー制御(ハンドシェイク通信)の構造で設計されることをお
奨めします。
1
CTS線は、USBH-ACS20からホスト機器へデータを出力すること
を許可するためのものですので、こちらはほとんどの場合、Lowレベル
にしておいて問題はありません。
RTS線は定常時はLowレベルで、RXピンからのデータを受信できる
状態ですが、先に記したような理由により、バッファがいっぱいになり、
これ以上のデータを受信することができない場合には、このピンがHig
hレベルとなります。このピンがHighレベルの時は、USBH-ACS20にデ
ータを送信してもデータは欠落します。
ホスト機器は、CTS線がHighになりますので、送信を停止して処理を
待機します。USBH-ACS20が再び処理ができる状態になると、RTS線
はLowレベルとなりますので、ホスト機器はデータを送信することにな
ります。
使用するターミナルソフトについて
USBH-ACS20のUARTインターフェイスをRS232C信号に変換し
てパソコンに接続した場合には、パソコン側からはターミナルソフトで
各種操作を行うことになりますが、ターミナルソフトによっては、ハード
ウエアフロー制御をサポートしていないものもあります。この場合、配
線が正しく、フロー制御を意識したものになっていても、フロー制御さ
れない場合がありますので、使用時には必ずターミナルソフトの仕様を
確認してください。
マイコンとの接続について
USBH-ACS20の制御にマイコン等を使用する場合には、ハードウ
エアフロー制御はプログラム上で組む必要があります。開発言語やコ
ンパイラーによっては、組み込み関数でハードウエアフロー制御を行う
ものもありますが、多くのコンパイラーでは、手動でハードウエアフロー
制御周りの処理を記述する必要がありますので、設計の際にはご注意
ください。
方法としては、USBH-ACS20のRTS線の状態をマイコン側の入力
ピンで判定し、Lowレベルならばマイコン側からUSBH-ACS20にデー
タを送信できますし、Highレベルならば、マイコン側からのデータ送信
を停止して、Lowレベルになるのを待機するようプログラミングします。
マイクロテクニカ
〒158-0094 東京都世田谷区玉川1-3-10
TEL: 03-3700-3535
FAX: 03-3700-3548
(C)2009 Microtechnica All rights reserved
2