シリアルは、高価な用語を使用する場合、「時分割多重化」されたすべての総称です。これは、データが時間をかけて、ほとんどの場合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と呼ばれるべきものを誤って指します。
これらのそれぞれについて、本を書くことができます。これはごく簡単な概要です。説明が必要な場合はお知らせください。