Contact us

別ウィンドウにて開きます 別ウィンドウにて開きます

東芝MCUの7種類のシリアルインタフェース

シリアルインタフェースのSIO、UART、SSP(SPI)、I2C、CAN、USB2.0、および、EtherMAC について、それぞれの通信方式を簡単に説明します。なお、各シリアルインタフェースにはモードが複数ありますが、ここでは、代表となるモードを一つだけ取り上げます。従って、異なるモードでは説明が正しくないこともありますのでご了承ください。詳細は東芝のデータシート、その他の解説書、専門書等をご参照ください。

製品紹介

SIO (Serial Input Output)

シリアルインタフェースの中で、もっとも基本的な構成が SIO です。マスタとスレーブが1対1で接続され、その接続線は転送クロックと転送データの2本です。マスタかスレーブかの選択はあらかじめレジスタで設定しますが、クロック(SCLK)を出力する方がマスタです。データ転送の前に、データ端子の一方が出力(TXD)、他方が入力(RXD)となるように設定します。

si_fig10

8ビットのデータを転送するときは、8個のクロックが出ます。そのクロックに同期してデータを送信、または受信する同期式インタフェースです。マスタはスレーブにデータを送信したり、スレーブから受信したりしますが、その指令は「クロックを出す」ことでスレーブに伝わります。データの転送方向はあらかじめ決まっていますので、マスタは必要に応じてスレーブにクロックを出力し、そのクロックに同期してスレーブとの間でデータ送信、または受信を行います。

si_fig11

送信データは8ビットが一般的ですが、データの最後にパリティ・ビットを追加して全体を9ビットのデータとすることもあります。この場合、パリティ・ビットが後からやって来ますので、それは前もって受信側にパリティ・ビット付きという設定をしておく必要があります。

si_fig12

UART (Universal Asynchronous Receiver Transmitter)

見かけだけで言うと、SIO からクロック信号を削除したものが UART です。クロック信号を繋がないのはノイズによる通信エラーを防ぐのが目的ですが、その結果、SIO には無い、やっかいなことが起こります。SIO では、マスタが指令を出すのはクロックを出力すること、となっていました。クロック信号の無い UART ではこの指令は受け取れません。ということは、データ受信側はいつ送信されるかわからないデータを、いつでも正しく受け取ることができるように待っていなければなりません。
そこで、送信側は通信開始と終了がわかるように、転送データに印をつけます。具体的には、転送データの直前に転送の始まりを表すスタート・ビット(値は「0」)と、最後に終わりを表すストップ・ビット(値は「1」)を追加します。

si_fig13

送信側と受信側は、あらかじめ決められていますので、データ線(通常は「1」になっている)に「0」が出ると、受信側はデータがくるぞ、と受信の準備をします。受信中は送信側からのクロック信号は無いため、たとえばデータ「0」が2回続けてきた場合、1個のデータの長さ(時間)がわかりませんと、1つの「0」のデータなのか、2つのデータ、つまり「00」なのかがわからなくなります。そこで、送信側と受信側で申し合わせをしておきます。実際の一例では、データ送信のクロック周波数が決まったら、受信側はそのクロック周波数の16倍の周波数のクロックでデータを受信する、としています。受信側は、スタート・ビットを検出すると、そこから、16クロック毎にデータがやってくると見なすわけです。

si_fig14

UART でも SIO と同じように、送信データの最後(ストップ・ビットの前)にパリティ・ビットを付加することができます。

UARTは、相手が1つとは限らず、多数のインタフェースを接続することが出来ます。その場合、1つだけマスタ、他はスレーブという区別を付けます。また、送信データを正しく受信できたかどうかを、受信側から送信側に知らせるハンド・シェーク機能もあります。

SSP (SPI) (Synchronous Serial Port (Serial Peripheral Interface))

SSP は同期式シリアルインタフェースを代表する言い方で、いくつかの異なる方式の総称です。そのうちの一つ、SPI はマスタ1個に対してスレーブを多数接続できるシリアルインタフェースです。マスタは1つだけ固定されていて、多数のスレーブとの接続はスター型となります。データ転送のためにマスタが出力する線と、マスタが入力する線の2本の信号線を使用しています。こうすることにより、送信データと受信データが衝突することがないため、スレーブの制御が簡単になります。スレーブを多数必要とするシステムを実現する、簡便な方法の一つです。

クロック(SPCLK)のほかに、マスタからスレーブにデータを送信するための信号線 SPDO、および、マスタがスレーブからデータを受信するための信号線 SPDI がスレーブ全体とマスタの間に接続されます。ただし、スレーブの SPDOはマスタのSPDIに、スレーブのSPDIはマスタのSPDOに接続します。さらに、多数あるスレーブのうちの一つをマスタが指名するための SPFSS (Slave Select) 信号があります。マスタにはスレーブの数と同じだけの SPFSS 出力が必要となります。

si_fig15

I 2 C (Inter-Integrated Circuit)

スレーブが多数存在するにもかかわらず、クロックとデータのわずか2本の信号線だけでシリアルインタフェースを実現するのが I2C です。しかも、I2C ではマスタが1つと限らず、複数存在できます(マルチマスタ構成)。それぞれのインタフェースをマスタにするか、スレーブにするかは、各インタフェースに内蔵されたレジスタで設定します。クロック信号がありますので同期式インタフェースです。

マルチマスタ構成を実現するために、I2Cはクロック信号とデータ信号に特殊な仕組みを持っています。それは、各インタフェースのクロック、および、データの出力は「0」だけとし、「1」は信号線に接続されたプル・アップを使うものです。I2C の各インタフェースの出力には NMOSトランジスタが接続され、必要に応じてオンとなり「0」を出力します。「1」を出したいときは、NMOS トランジスタをオフさせます。すると、インタフェースの出力はハイ・インピーダンスとなります。信号線にはプル・アップ素子が取り付けてありますので、すべてのインタフェースの出力がハイ・インピーダンスであれば、その信号線はVDDまで持ち上げられ、「1」となります。これを「ワイヤード・アンド(Wired-AND)」と呼んでいます。

si_fig16

si_fig17

ワイヤード・アンドでは、データ「1」よりも「0」が強くなります。つまり、2つのインタフェースが「1」と「0」を出力しますと、信号線のデータは「0」となります。これを利用して、複数のマスタ間の調停を行うことが出来ます。今、マスタが2つあり、これらのマスタが同時にデータをデータ線に出力したとします。一方は「0」、他方が「1」を出力したとき、後者は自分が「1」を出力したにもかかわらず信号線が「0」となったことで、自分以外にデータを出力しているマスタがいることがわかります。そうなると、今回はお休み、と自主的にデータ出力を控えます。しばらくして、他のマスタが送信を終えたころを見計らってデータ送信を行います。このようにして、マルチマスタ構成が可能となっています。

CAN (Controller Area Network)

CAN は自動車の中のネットワークに使われているシリアルインタフェースです。その特徴はデータ信号線を2重にしてノイズの影響を極力受けないようにした点にあります。クロックは出力されません。I2C と同じようにわずか2本の信号線でネットワークが構成されますが、I2Cと異なり、非同期式です。

si_fig18

2重のデータ信号線は CAN.H、および CAN.L と呼ばれ、この2つの信号の「電圧の差」がデータとなります。CAN.H が高電位で CAN.L が低電位のときが「0」、CAN.HとCAN.Lが同電位のときを「1」と定義します。2つの信号線にノイズが乗っても、電位の差の有無がデータとなるのでノイズの影響を最小限に抑えることができます。

si_fig19

クロックが出力されないため、各インタフェースの間で同期を取る必要があり、マスタ、および、スレーブの区別はありません。従って、データ出力が信号線上で衝突する可能性がありますので、各インタフェースに優先順位を決める必要があります。

インタフェース間の同期の取り方は次の通りです。データを出力しようとするインタフェースは、最初に「0」のスタート・ビット(1ビット)を出力します。それ以前はどのインタフェースも出力をしていない状態ですので、データ線は「1」でした。他のインタフェースはこのスタート・ビットの「0」の始まりを検出して同期を取ります。それだけでなく、データ転送中に同期を確実に取るために、ビット・スタッフィングというテクニックを用います。「0」または「1」が長い間続くと、データ信号は変化せず、同期合わせができなくなり、いつかは同期がずれてしまいます。そこで、5個、同じデータが続いたときは、わざと異なるデータを1ビットだけ挟みます。こうすることによりデータに変化(エッジ)が生じますので、ここでまた同期の取り直しができます。もちろん、この追加ビットは、データとしては意味がありませんので、受信側で受信データから削除されます。

si_fig20

CANでは各インタフェース出力の優先順位を決める必要があります。そのため、スタート・ビットの次に Identifier (11ビット) が出力されます。この値が優先順位を決めます。実は、CAN のデータは I2C と同じように、データ信号線で「1」と「0」の二つの出力がぶつかった場合は「0」が勝つようになっています。2つのインタフェースが同時にそれぞれ異なる Identifier を出力した場合、「1」を出力したインタフェースはデータ信号線が「0」になっていることを知ると、優先順位の高い方に信号線の使用権を譲ります。その結果、優先順位の高いインタフェースのデータ転送が行われます。

USB2.0 (Universal Serial Bus 2.0)

USB2.0 はパソコンを主体として、非常に普及したシリアルインタフェースです。よく知られている通り、用途は多岐にわたり、キーボード、マウス、プリンタ、フラッシュ・メモリ、HDD、スピーカなどのインタフェースとして使われています。

USB2.0 には3種類の転送スピードがあります。Low Speed (1.5 Mbps)、Full Speed (12 Mbbs)、および、High Speed (480 Mbps) ですが、当社の TX03 シリーズの USB2.0 インタフェースは、Full Speed に対応しています。

USB2.0 ではインタフェースのマスタ、スレーブを、それぞれ「ホスト」、「デバイス」と呼んでいます。USB2.0 は1つのホストが多くのデバイスをコントロールするスター型です。パソコンを例に取りますと、パソコン本体がホストであり、USB2.0 で本体と繋がっているマウス、キーボード、メモリ、マイク、スピーカなどがデバイスとなります。

si_fig21

USB2.0 の特長としてプラグアンドプレイが上げられます。パソコンの USB 端子に USB メモリを差し込んだり抜いたりするときに、いちいちパソコンの電源を落とさなくても済みます。この簡便さが USB が普及した理由の一つです。

このように、ネットワークにデバイスが繋がったり離れたりできるようにするために、ホストがいろいろな仕事をします。あるデバイスが USB2.0 のネットワークに接続されると、デバイスはホストにリクエストを出します。リクエストを受けて、ホストは新しく接続されたそのデバイスの情報を入手し、最適なドライバを選択したり、そのデバイスにアドレス番号を付与したりします。これをエニュメレーション(enumeration) と呼びます。エニュメレーションが成功した後、ホストはデバイスを正しくアクセスできるようになります。

ホストがコントロールできるのは、ハブとデバイスを合わせて127個までです。また、ネットワークにハブが入る場合、直列に接続できるハブは5段までとなっています。

USB2.0 の信号線は一組4本からなっています。電源(VDD)、接地電位(GND)、信号 D+、および、信号 D- です。CAN と同じように信号線は2本一組になっていますが、CANと異なり、データは互いに相補的な値を取ります。つまり、D+ が high level で、D- が low level のときが「差動1(Differential 1)」、反対に、D+ が low level で D- が high level のときを「差動0(Differential 0)」としています。ただし、実際に転送されるデータの波形は差動1、差動0ではありません。データ転送にはNRZI (non-return to zero inverted) というフォーマットが使われています。これに従いますと、1クロックの間に信号の変化が無かったときはデータ「1」、変化(0→1、または、1→0)があったときはデータ「0」となります。

usb_fig10

usb_fig11

USB2.0 インタフェースにクロック信号はありません。非同期式です。従って、CAN と同じようにクロック同期の問題を解決する必要があります。USB2.0の full speed では、クロックを同期させるため送信データの先頭に 8 ビットのSYNC パターンがあります。これにより受信側は送信側のクロックと同期を取ることができます。データ転送の途中の同期合わせにはCAN と同じようにビット・スタッフィングを行います。NRZI フォーマットではデータ「1」が続きますとデータ信号に変化が起きません。USB2.0では、「1」が6回連続すると「0」を1ビット挿入します。

si_fig24

EtherMAC (Ethernet Media Access Control)

EtherMAC はEthernet の一部分です。Ethernet そのものは非常に複雑な構造をもっていますので、簡単に説明することは困難です。従って、今回の説明は Ethernet のごく一部でしかありませんが、今まで紹介してきたいろいろなシリアルインタフェースとの違いを概説します。

Ethernet の Ether は「イーサー」と発音しますが、もともとは「エーテル」と呼ばれる、物理学で定義された「物質」でした。宇宙空間を埋め尽くしていると考えられた物質で、結局は存在が否定されました。ただ、「どこにでも存在するもの」ですので、それがこのネットワークの命名の元となったようです。

Ethernet は大きく言って4つの層からなっています。下の方から、物理層、データリンク層、ネットワーク層、上位層となりますが、EtherMAC は最下層の2層、つまり、物理層とデータリンク層を対象とします。

Ethernet では出力と入力で信号線が異なります。出力用に2本、入力用に2本、合計4本の信号線が用いられます。入力と出力用のそれぞれ2本のペア信号線は「撚(よ)り対線」となり、シールドがありませんが、ノイズに強い構造となっています(Unshielded Twisted Pair: UTP)。なお、クロック信号は出力されません。非同期式インタフェースです。

現在、Ethernet で最も普及しているのは 100Base-TX というインタフェースですが、Ethernet をより容易に理解するために、それより古い世代である 10Base-T について説明します。10Base-T は、転送レートが 10Mbps で、Base Band、ツイスト・ペア・ケーブルというインタフェースです。

信号にはマンチェスタ符号を使っています。マンチェスタ符号は、データ信号の変化の方向でデータ「1」とデータ「0」を決める方法で、low level から high level へ変化するものがデータ「1」、反対に、high level から low level に変化するものがデータ「0」と決められています。

si_fig25

Ethernet も CAN やUSB2.0 と同じように、データ通信にクロック信号を出力しませんので、受信側が同期を取る必要が出てきます。マンチェスタ符号では、「1」、および、「0」のいずれも信号の変化がありますので、同一のデータが連続した場合でも、CAN や USB2.0 で使われたビット・スタッフィングをする必要がありません。ただし、データの転送開始時に、送信側は同期を取るためだけに、56ビットのパルス・データを出力します。受信側はこの時間内に同期を取ります。

Ethernet インタフェースには、USB2.0のようなホスト、あるいはデバイスといった上下関係がありません。Ethernet の各インタフェースは信号線が空いているのを見てデータを出力します。信号線にどこかのインタフェースが出力していた場合、今、出力をしようとしているインタフェースは信号線が空くまで待ち、その後、送信を開始します。ところが、早いもの順のこのシステムでは、異なる2つ以上のインタフェースがほぼ同時にデータを出力した場合に問題が起こります。どちらが先だったかわからないとき、まず、どのインタフェースも出力を停止します。すると信号線が空きますので、それぞれのインタフェースは、また出力しようとします。すると、またしても、同時出力が起こってしまい、各インタフェースは出力を停止します。これを繰り返していると、いつまでたってもデータの送信ができませんので、Ethernet にはこの問題を回避する仕組みが備わっています。それは、同時出力が発生した場合、各インタフェースに対して、次に出力開始するまでの待機時間を乱数で決めるものです。こうすると、次に同時に出力するインタフェースの数は極端に少なくなるはずです。それでも、また衝突が起こった場合は、同じように乱数で待機時間を決めます。何回やっても衝突が起こった場合、最大16回までトライすることになっています。USB2.0 と違って、全体をコントロールするホストがいないため、お互いの責任においてデータ通信をさせるための仕組みです。

製品紹介

MCUパーク、新製品についてのお問い合わせはこちらからお願いします。

MCUパークのお問い合わせはこちら

※お問い合わせの前に、「お問い合わせいただく前の注意事項」をお読みください。
また、お問い合わせフォームの「質問内容」欄にお書きください。

お問い合わせいただく前の注意事項

下記事項をお読みの上、お問い合わせください

  • お問い合わせフォームよりいただく個人情報は、SSLによって暗号化され保護されます。SSLに対応していないブラウザをご利用の場合や、ファイアウォールなどの設定により企業内ネットワークから当該ページにアクセスできない場合がございますが、ご了承ください。
  • お問い合わせ時に同意事項をご確認の上お問い合わせ願います
  • お客様の個人情報の取扱全般に関する当社の考え方をご覧になりたい方は当社の個人情報保護方針のページをご覧ください。
  • 土曜日・日曜日・祝日・年末年始ほか、当社休業日にいただくお問い合わせについては、翌営業日以降の回答となりますのでご了承ください。
  • 16歳未満のお客様は、保護者の同意を得た上でお問い合わせください。
  • お問合せの登録が完了しますと、ご登録されたメールアドレス宛に受付完了のメールが送信されます。
    24時間以内に届かない場合は、ご登録いただきましたメールアドレスに間違いがあるか、メールフィルタリング等のツール/サービスをご利用されている場合に迷惑メールに分類されている可能性が考えられます。
    メールアドレス間違いと思われる場合は、お手数ですが、再度お問合せの登録作業をお願いいたします。
    メールフィルタリングをご利用されている場合は、ドメイン設定でtoshia.co.jpを許可していただくか、アドレス設定でsemicon@toshiba.co.jpを許可していただけますようお願いいたします。

ご検討の方に

To Top
·設計および使用に際しては、本製品に関する最新の情報および本製品が使用される機器の取扱説明書などをご確認の上、これに従ってください。