USART、UART、RS232、USB、SPI、I2C、TTLなど。これらはすべて何であり、どのように相互に関連していますか?


166

初心者のエレクトロニクス愛好家として、私はこれらの用語を聞いたことがあります。根本的に、それらはすべてデバイス、コンピューター、周辺機器などの間の通信に基づいていることを理解しています。

私はそれらのすべてがどのように機能するかについての基本的な理解を持っていますが、それらの多くを見ると混乱し、それらの相互関係の理解が困難になります。たとえば、UARTはUSARTのサブセットですか?RS232とシリアルの違いは何ですか?これらすべての通信方法の主要な違いは何ですか:信頼性、コスト、アプリケーション、速度、ハードウェア要件。

あなたが想像できるなら、私はこれらの用語のすべてをコーヒーテーブルに散らばってカードに書いており、私の理解を整理するのを手伝ってくれる人が必要です。この質問が少し曖昧な場合はご容赦ください。しかし、それがこの質問の本質であると本当に感じています。


回答:


253

シリアルは、高価な用語を使用する場合、「時分割多重化」されたすべての総称です。これは、データが時間をかけて、ほとんどの場合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、「 1 "。データ形式は同じままです。次に、RS-232があります(実際にはEIA-232を呼び出す必要がありますが、誰も呼び出しません)。

タイミング依存性はUARTの大きな欠点の1つであり、解決策はユニバーサル同期/非同期レシーバトランスミッタのUSARTです。これはUARTを実行できますが、同期プロトコルも実行できます。同期では、データだけでなく、送信されるクロックもあります。各ビットで、クロックパルスがレシーバにそのビットをラッチするように指示します。同期プロトコルには、マンチェスターエンコーディングの場合のように、より高い帯域幅が必要です。または、SPIやI2Cのように、クロック用の余分なワイヤが必要です。

SPI(Serial Peripheral Interface)は、もう1つの非常に単純なシリアルプロトコルです。マスタはクロック信号を送信し、各クロックパルスでスレーブから1ビット出力し、スレーブから1ビット入力します。したがって、信号名は、クロックの場合はSCK、マスター出力のスレーブ入力の場合はMOSI、マスター入力のスレーブ出力の場合はMISOです。SS(スレーブ選択)信号を使用することにより、マスターはバス上の複数のスレーブを制御できます。複数のスレーブデバイスを1つのマスターに接続するには2つの方法があります。1つは前述のスレーブ選択を使用する方法、もう1つはデイジーチェーンで、使用するハードウェアピン(選択ライン)が少ないですが、ソフトウェアが複雑になります。

I2C(Inter-Integrated Circuit、「I squared C」と発音)も同期プロトコルであり、「インテリジェンス」が含まれている最初のプロトコルです。他のものは、ビットを内外にシフトしました。それがそれでした。I2Cは2本のワイヤのみを使用します。1本はクロック(SCL)用、もう1本はデータ(SDA)用です。つまり、マスターとスレーブは同じワイヤを介してデータを送信し、再びクロック信号を作成するマスターによって制御されます。I2Cは、特定のデバイスを選択するために個別のスレーブ選択を使用しませんが、アドレッシングがあります。マスターが送信する最初のバイトには、7ビットアドレス(バス上で127個のデバイスを使用できるようにする)と、次のバイトもマスターから送信されるか、マスターから送信されるかを示す読み取り/書き込みビットが保持されます奴隷。各バイトの後、受信者は「0」を送信して、バイトの受信を確認する必要があります。マスターは9番目のクロックパルスでラッチします。マスターがバイトを書き込みたい場合、同じプロセスが繰り返されます。マスターはバスにビットを1つずつ追加し、毎回データの読み取り準備ができたことを知らせるクロックパルスを与えます。マスターがデータを受信する場合、クロックパルスのみを生成します。スレーブは、クロックパルスが与えられたときに次のビットの準備ができるように注意する必要があります。このプロトコルは、ライセンスコストを節約するためにNXP(以前のPhillips)が特許を取得しており、AtmelはI2Cとまったく同じTWI(2線インターフェース)という単語を使用しているため、AVRデバイスにはI2Cはありませんが、TWIがあります。マスターがデータを受信する場合、クロックパルスのみを生成します。スレーブは、クロックパルスが与えられたときに次のビットの準備ができるように注意する必要があります。このプロトコルは、ライセンスコストを節約するためにNXP(以前のPhillips)が特許を取得しており、AtmelはI2Cとまったく同じTWI(2線インターフェース)という単語を使用しているため、AVRデバイスにはI2Cはありませんが、TWIがあります。マスターがデータを受信する場合、クロックパルスのみを生成します。スレーブは、クロックパルスが与えられたときに次のビットの準備ができるように注意する必要があります。このプロトコルは、ライセンスコストを節約するためにNXP(以前のPhillips)が特許を取得しており、AtmelはI2Cとまったく同じTWI(2線インターフェース)という単語を使用しているため、AVRデバイスにはI2Cはありませんが、TWIがあります。

同じワイヤ上の2つ以上の信号が競合を引き起こす可能性があり、一方のデバイスが「1」を送信し、もう一方のデバイスが「0」を送信すると問題が発生します。したがって、バスはワイヤードORされています。2つの抵抗がバスを高レベルに引き、デバイスは低レベルのみを送信します。高レベルを送信する場合は、バスを解放するだけです。

TTL(Transistor Transistor Logic)はプロトコルではありません。これはデジタルロジック用の古いテクノロジーですが、5 V電源電圧を指すために名前がよく使用され、多くの場合、UARTと呼ばれるべきものを誤って指します。


これらのそれぞれについて、本を書くことができます。これはごく簡単な概要です。説明が必要な場合はお知らせください。


TTLでのみ+1。OPはシリアルTTLを意味し、私の経験ではRS232トランシーバー/バスドライバーの前のUART信号を表すと推測しています。
ケニー

4
@Kenny-しかし、「シリアルTTL」のようなものはありません。それはUARTです。電圧が3.3 Vの場合はどうなりますか?TTLは5 Vのみを指します。
stevenvh

それは私が話していることです、UARTのI / Oは私の経験TTLシリアルでよく呼ばれます。
ケニー

素晴らしい反応!あと数回読み、質問があればお知らせします。ありがとう、スティーブン。
カプコン

8
より良い賭けは、それからUart時代に釣りをすることです:
Garg

11

これは、カスタムレスポンスの質問をするよりも記事を読む方が良いと思われる領域に非常に近いですが、メーカーが時々曖昧にする1つの主要な点に対処するためです。

シリアルインターフェイスには、同期と非同期の2つの基本的な種類があります。

同期インターフェイスには、明示的なクロックに関連するタイミングでデータが送信されます。これも提供されます。これの典型的な例はSPIですが、オーディオコンバーター用のI2S、JTAG、FPGA構成インターフェイスなどの特別な形式もあります。多くのパラレル通信チャネルは、このアイデアをより多くのビットを一度に移動するために拡張したものです。常にではありませんが、多くの場合、これらは最上位ビットを最初に送信します。

非同期インターフェイスのタイミングは、データストリーム自体にエンコードされています。「シリアルポート」およびRS232などの関連規格の場合、ワードのタイミングはスタートビットに関連しており、受信機はその後、適切な間隔でラインをサンプリングするだけです。他のインターフェイスはもう少し複雑になる可能性があり、位相ロックループとアルゴリズムを使用したより洗練されたクロックリカバリが必要になります。UARTは「Universal Asynchronous Receiver Transmitter」です。実際には、ワード長、レート、および開始/終了条件に柔軟性を備えた「シリアルポート」の実装によく使用される機能ブロックの名前です。RS232、RS422などのようなものは、これらから得られるデータのオフボード電気信号の標準です-1が高または低の場合、電圧、シングルエンドまたは差動など

「USART」は、一種のハイブリッドデバイスである「Unversal Synchronous / Asynchronous Receiver Transmitter」であるため、正当な混乱の原因となる可能性があります。データに同期した別のクロックを生成(または考慮)し、ビット順序を逆にすることができる場合があります。通常、SPIと相互運用するように構成できますが、開始/停止ビット専用の時間を削除できない場合があるため、I2Sのように、ワード間のギャップなしでデータが継続的に流れることが期待できるもので動作できない場合があります。


非常に良い説明(Y)簡潔さが気に入りました。Thankyou @chris
Avi Mehenwal

8

RS-232は、もともとモデムとテレタイプに使用されていた非常にシンプルなシリアルプロトコルです。これは一般にシリアルポート(またはMS-WindowsのCOMポート)と呼ばれるものです。ライン上では、通常±12Vレベルを使用しますが、検出が±3Vで指定されているため、レベルは大きく異なる場合があります。これらのレベルをコンピューターまたはマイクロコントローラーの内部デジタル信号レベルに変換したり、内部デジタル信号レベルから変換したりするラインドライバーが常に存在します(現在では通常MAX232ファミリーのもの)。

TTLはTransistor-Transistor-Logicを意味し、0V付近の論理ゼロと5V付近の論理1のレベルを持ちます。多くの場合、5VロジックはTTLと呼ばれますが、最近のほとんどの回路はCMOSとして構築されています。現在、3.3Vで動作する多くの回路もありますが、これはもはやTTLではありません。

内部レベルに関しては、RS-232ラインのレベルが反転します。+ 12Vは論理ローに対応し、-12Vは論理ハイに対応し、混乱を招く可能性があります。

データ形式を説明するために、通常は論理信号を示します。回線がアイドル状態のとき、回線は高です。送信は、低いスタートビット、最下位ビットが最初のデータビット、オプションのパリティビット、および1〜2ストップビット(論理1)で始まります。これは、開始ビットと停止ビットが各バイトのデータを個別に同期するため、非同期送信と呼ばれます。

UART(Universal Asynchronous Receiver Transmitter)は、この種の非同期通信を行うコンピューターまたはマイクロコントローラー内のデバイスです。

USART(Universal Asynchronous Synchronous Receiver Transmitter)は、ある種の同期伝送を行うことができるデバイスです。したがって、追加のSです。どの種類が異なるかは、データシートで調べる必要があります。

SPI、I²C、およびUSBは異なる(およびUSBの場合は非常に長い)ストーリーです。


1

SPIおよびCANプロトコルについて言及されたことに同意します。パフォーマンスを向上させるために、CANプロトコルが設計されています。この調停の概念では、2つのデバイスが通信する準備ができており、その優先度に応じて送信または受信が行われます。CANは多くの業界で広く使用されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.