マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初級者の方からよく質問される「UART、I2C、SPIの違い」についてです。
素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。
今回は、初級者から多く寄せられる質問です。
マイコンの代表的な通信機能にはUARTとI2CとSPIがありますが、それぞれの仕組み、使い方、性能、用途の違いを教えてください。
ユーザーから見たUARTとI2CとSPIのすみ分けのポイントは、大きく次の4つに分けられます。
(1)通信相手の数
(2)通信速度
(3)信号数
(4)通信クロックの有無(クロック同期か、非同期か)
通信相手の数で言うと、UARTは基本的には1対1の通信、I2Cは多数対多数の通信、SPIは1対1(1マスターと1スレーブ)、または1対多数の通信になるため、何と何に通信させるのかを考慮して選択します。次に、通信速度ですが、一般的にはI2C<UART<SPIです。高速通信が必要か否かで、どれにするかを選択します。信号数はI2C=UART<SPIです。システムのハードウェア(回路レイアウト、配線数など)を考慮して、どれにするかを選択します。
UARTは通信用のクロックラインを必要としません(非同期式)が、I2CとSPIでは必要(同期式)です。
具体的な用途を挙げると、PCとのシリアル通信などにはUARTがよく使われています。C言語の標準出力printfもUARTを使います。各種センサーや、通信速度が遅くても配線数を抑えたい場合は、I2Cが使われます。メモリや高速周辺機器(例えば、A-Dコンバーターなど)との通信にはSPIが使われています。図1にSTマイクロエレクトロニクス(以下、ST)のSTM32C562xxを例にした、各方式の違いをまとめます。
本記事は、あくまでUARTとI2CとSPIの違いを説明するものです。基本的機能や応用例については次の記事を参考にしてください。
Copyright © ITmedia, Inc. All Rights Reserved.
記事ランキング