外部インタフェース/API | ![]() ![]() |
シリアルデータフォーマットは、1つのスタートビット、5個から8個のデータビット、1つのストップビットで構成されます。パリティビットとストップビットもフォーマットに含まれる場合があります。下記の図は、シリアルデータフォーマットを示したものです。
シリアルポートデータに対するフォーマットは、つぎの書式を使って表わされます。
たとえば、8-N-1は、8個のデータビット、0個のパリティビット、1個のストップビットとして解釈されます。7-E-2は7個のデータビット、偶数のパリティ、2個のストップビットとして解釈されます。
これらのビットは通常ASCIIキャラクタを表わすため、データビットはキャラクタ として参照されることがあります。残りのビットはデータビットの枠なので、フレーミングビット と呼ばれます。
バイトと値
MATLABでは、フレーミングビットとデータビットは、まとめてバイト と呼ばれます。1バイトは8ビットであり、シリアルデータフォーマットは7ビットから12ビットの範囲なので、最初はこの用語は不正確であると見られていました。しかし、シリアルデータがコンピュータに格納されると、フレーミングビットは取り除かれデータビットのみが保存されます。さらに、8個のデータビットは、送信用に指定されたデータビット数に関わらず、常に未使用のビットを値0に割り当てて用いられます。
データの読み込みや書き出しのときに、1つまたは複数のバイトからなる値 を指定する必要があることがあります。たとえば、int32
フォーマットを使ってデバイスから1つの値を読み込む場合は、その値は、4個のバイトで構成されます。値の読み込みと書き出しに関する情報は、「データの書き出しと読み込み」を参照してください。
同期通信と非同期通信
RS-232標準は、同期と非同期の2タイプの通信プロトコルをサポートします。
同期プロトコルを使って、送信されるすべてのビットは、共通のクロック信号に同期されます。2つのデバイスは、最初はお互いに同期し、同期状態のままキャラクタを継続的に送信します。実際のデータが送信されていなくても、ビットの定流によって各デバイスが指定された時間に片方のデバイスがどこにあるかを知ることができます。つまり、送信される各ビットは実際のデータあるいはアイドルキャラクタです。各データバイトの先頭と末尾を示すビットが必要でないため、同期通信を使うと非同期法よりも速いデータ送信レートになります。
非同期プロトコルを使って、各デバイスは任意の時間に送信されるバイト単位の内部クロックを利用します。そのため、ビットの同期方法として時間を使う代わりにデータフォーマットが使われます。
特に、データ送信は、ワードのスタートビットを利用して同期化され、1つまたは複数のストップビットがワードの末尾を示します。これらのビットを送信する必要があるため、非同期通信は同期通信よりもわずかに遅くなります。しかし、プロセッサがアイドルキャラクタを扱う必要がないという利点があります。ほとんどのシリアルポートは、非同期として動作します。
注意 本マニュアルで用いられる場合、用語"同期"と"非同期"は、読み込みや書き出し操作がMATLABコマンドラインへアクセスするかどうかを示します。詳細は、MATLABコマンドラインへのアクセスの制御を参照してください。 |
ビットの送信方法?
定義によると、シリアルデータは、一度に1ビット送信されます。ビットの送信される順番を以下に示します。
1秒に送信されるビット数は、ボーレート によって与えられます。送信されるビットには、スタートビット、データビット、パリティビット(定義されていれば)およびストップビットが含まれます。
スタートビットとストップビット
同期通信と非同期通信シリアルデータフォーマットによるバイトの識別プロセスは、以下のステップに従います。シリアルデータフォーマットによるバイトの識別プロセスは、以下のステップに従います。
データビット
シリアルポートによって送信されるデータビットは、デバイスのコマンド、センサの読み込み、エラーメッセージ等を表わします。データは、バイナリデータまたはASCIIデータとして送信されます。
ほとんどのシリアルポートは、5ビットから8ビットを利用します。バイナリデータは、8ビットとして送信されます。テキストベースのデータは、7ビットまたは8ビットとして送信されます。データがASCIIキャラクタである場合は、 27または128個のキャラクタがあるため、最小でも7個のビットが必要です。8ビット目が利用される場合は、値0でなければなりません。データが拡張ASCIIキャラクタベースである場合は、28個または256個のキャラクタがあるため、8ビットを用いる必要があります。
パリティビット
パリティビットは、送信されたデータに対する簡単なエラー(パリティ)チェックを行います。パリティチェックのタイプを以下に示します。
パリティタイプ |
説明 |
Even |
データビットプラスパリティビットは、1の数が偶数になります。 |
Mark |
パリティビットは常に1です。 |
Odd |
データビットプラスパリティビットは、1の数が奇数になります。 |
Space |
パリティビットは常に0です。 |
マークとスペースパリティチェックは、最小のエラー検出を行うのでほとんど使われません。パリティチェックを全く行わないことも選択可能です。
たとえば、データビット01110001がコンピュータに送信されると仮定します。偶数のパリティが選択されると、パリティビットは送信デバイスによって0に設定され、1の数が偶数になります。奇数のパリティが選択されると、パリティビットは送信デバイスによって1に設定され、1の数が奇数になります。
![]() | シリアルポートの信号とピンの割り当て | プラットフォームに対応するシリアルポートの情報 | ![]() |