参考文献:
シリアルは、高価な用語を使用すると、「時分割多重化」されたすべてのものを包括する言葉です。これは、データが時間の経過とともに送信されることを意味し、ほとんどの場合、1 ビットずつ送信されます。名前を付けているすべてのプロトコルはシリアル プロトコルです。
UART、Universal Asynchronous Receiver Transmitter の略で、最もよく使用されるシリアル プロトコルの 1 つです。それは私とほぼ同じくらいの年齢で、とてもシンプルです。ほとんどのコントローラーには、ハードウェア UART が搭載されています。データの送信と受信に 1 本のデータ ラインを使用します。ほとんどの場合、次のように 8 ビット データが転送されます。1 スタート ビット、ロー レベル、8 データ ビット、1 ストップ ビット、ハイ レベル。低レベルの開始ビットと高レベルの停止ビットは、通信を開始するために常に高から低への遷移があることを意味します。それがUARTの説明です。電圧レベルがないため、マイクロコントローラーが使用する 3.3 V または 5 V で使用できます。UART 経由で通信したいマイクロコントローラは、同期するスタート ビットの立ち下がりエッジしかないため、伝送速度、ビットレートに同意する必要があることに注意してください。これを非同期通信と呼びます。
長距離通信 (数百メートルである必要はありません) の場合、5 V UART はあまり信頼できません。そのため、より高い電圧に変換されます。通常、「0」の場合は +12 V、a の場合は -12 V です。 「1」。データ形式はそのままです。次に、RS-232があります (実際には EIA-232 と呼ぶべきですが、誰もそうしません)。
重要: RS-232 対 TTL シリアル通信 - SparkFun Electronics http://goo.gl/0IFYTl
タイミング依存性は UART の大きな欠点の 1 つであり、解決策はUSARTであり、ユニバーサル同期/非同期レシーバー トランスミッター用です。これは UART を実行できますが、同期プロトコルも実行できます。同期では、データだけでなくクロックも送信されます。各ビットで、クロックパルスが受信機にそのビットをラッチする必要があることを伝えます。同期プロトコルは、マンチェスター エンコーディングの場合のようにより高い帯域幅を必要とするか、SPI や I2C のようにクロック用に追加のワイヤを必要とします。
シリアル プログラミング/標準的な RS232 ハードウェア構成 - Wikibooks、オープン ワールドのオープン ブックhttp://goo.gl/uTknU6
RS232 +-----------+ +-----------+ +-----------+ +-----------+
Interface | Line | | | | Interface | | |
-----------+ Driver / +---+ UART +---+ Logic +---+ CPU |
| Receiver | | | | | | |
+-----------+ +-----+-----+ +-----+-----+ +-----------+
| |
| |
+-----+-----+ |
| Baud Rate | |
| Generator +---------+
| |
+-----------+
UART (ユニバーサル非同期レシーバー トランスミッター) は、シリアル ハードウェアの心臓部です。これは、パラレルデータとシリアルデータを変換するためのチップまたはチップの一部です。また、RS-232 UART は通常、送信時に必要な開始/停止およびパリティ ビットを追加し、受信時にこの情報をデコードします。
通常、UART は完全にコンピューターのロジック電圧で動作します。そのシリアル データ入力/出力電圧は、シリアル ライン電圧ではなく、コンピュータ ロジック電圧です。それらは、実際のライン インターフェイスを特定のライン ドライバ/レシーバに任せます。このライン ドライバ/レシーバは、必ずしも RS-232 ライン ドライバ/レシーバである必要はありませんが、たとえば RS-422 差動ドライバ/レシーバでもかまいません。これと、ボーレート、パリティ、ストップ ビット数、データ ビット数がプログラム可能であるという事実が、UART がユニバーサルと呼ばれる理由です。UART とライン ドライバ/レシーバが同じチップに配置されていると、両者の区別が曖昧になります。このようなチップは通常、「UART」というラベルで販売されています。
UART は、リモート側との同期に特別なクロック信号を使用しないため、非同期と呼ばれます。代わりに、スタート/ストップ ビットを使用して、シリアル ストリーム内のデータ ビットを識別します。
UART のおかげで、ハードウェアの残りの部分とソフトウェア アプリケーションは、通信データを保持するために通常のバイトを処理できます。送信時にバイトを一連のシリアル ビットに分割し、受信時に一連のビットを 1 つのバイトに組み立てるのは、UART の仕事です。UART には通常、8 ビット幅の受信バッファと送信バッファが含まれています。たとえば 7 ビット送信を使用する場合、すべてのビットが使用されるわけではありません。受信したシリアルデータは受信バッファに並列に出力され、送信データは送信バッファに並列に書き込まれます。UART によっては、バッファーの深さが 1 バイトまたは数バイト (15 または 16 バイトの範囲) の場合があります。バッファの深さが浅いほど、CPU との通信をより正確にする必要があります。たとえば、受信バッファの深さが 1 バイトの場合、
シリアル インターフェイスのタイミングが重要であるため、UART は通常、UART チップの内部または外部のいずれかのボー レート ジェネレータに接続されます。
SPI (Serial Peripheral Interface) は、もう 1 つの非常に単純なシリアル プロトコルです。マスターはクロック信号を送信し、クロック パルスごとに 1 ビットをスレーブにシフトアウトし、スレーブから 1 ビットをシフトインします。したがって、信号名は、クロックが SCK、Master Out Slave In が MOSI、Master In Slave Out が MISO です。SS (スレーブ選択) 信号を使用することにより、マスターはバス上の複数のスレーブを制御できます。複数のスレーブ デバイスを 1 つのマスターに接続するには 2 つの方法があります。1 つは前述のスレーブ セレクトを使用する方法で、もう 1 つはデイジー チェーン接続です。使用するハードウェア ピン (選択ライン) は少なくなりますが、ソフトウェアは複雑になります。
I2C(Inter-Integrated Circuit、「I squared C」と発音) も同期プロトコルであり、「インテリジェンス」を備えた最初のプロトコルです。他のものはばかげてビットをシフトインおよびシフトアウトしました、そしてそれはそれでした。I2C は、クロック (SCL) 用とデータ (SDA) 用に 1 本の 2 本のワイヤのみを使用します。つまり、マスターとスレーブは同じワイヤを介してデータを送信し、クロック信号を作成するマスターによって制御されます。I2C は特定のデバイスを選択するために個別のスレーブ選択を使用しませんが、アドレス指定があります。マスターによって送信された最初のバイトは、7 ビット アドレス (バス上で 127 個のデバイスを使用できるようにするため) と読み取り/書き込みビットを保持し、次のバイトもマスターから送信されるかどうかを示します。奴隷。各バイトの受信後、受信者はバイトの受信を確認するために「0」を送信する必要があります。マスターは 9 番目のクロック パルスでラッチします。マスターがバイトを書き込みたい場合は、同じプロセスが繰り返されます。マスターはバスにビットを次々と配置し、そのたびにデータを読み取る準備ができたことを知らせるクロック パルスを与えます。マスタがデータを受信したい場合、マスタはクロック パルスのみを生成します。スレーブは、クロック パルスが与えられたときに次のビットの準備ができていることを確認する必要があります。このプロトコルは NXP (以前の Phillips) がライセンス費用を節約するために特許を取得しています。マスタがデータを受信したい場合、マスタはクロック パルスのみを生成します。スレーブは、クロック パルスが与えられたときに次のビットの準備ができていることを確認する必要があります。このプロトコルは NXP (以前の Phillips) がライセンス費用を節約するために特許を取得しています。マスタがデータを受信したい場合、マスタはクロック パルスのみを生成します。スレーブは、クロック パルスが与えられたときに次のビットの準備ができていることを確認する必要があります。このプロトコルは NXP (以前の Phillips) がライセンス費用を節約するために特許を取得しています。
同じワイヤ上に 2 つ以上の信号があると競合が発生する可能性があり、一方のデバイスが「1」を送信し、もう一方が「0」を送信すると問題が発生します。したがって、バスはワイヤード OR されます。2 つの抵抗器がバスを高レベルにプルし、デバイスは低レベルのみを送信します。ハイレベルを送信したい場合は、単にバスを解放します。
TTL (Transistor Transistor Logic) はプロトコルではありません。これはデジタル ロジックの古いテクノロジですが、この名前は 5 V の電源電圧を指すためによく使用され、UART と呼ばれるべきものを誤って指すことがよくあります。
これらのそれぞれについてあなたは本を書くことができます、そして私は順調に進んでいるようです. これは非常に簡単な概要です。説明が必要な場合はお知らせください。