1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マイコンでよく使う通信規格についてまとめる(UART,I2C,SPI)_解説記事

1
Last updated at Posted at 2026-06-17

概要

題のとおり、以下の規格についての知識をメモします。

  • UART
  • I2C
  • SPI

対象はarduinoやesp32等のマイコンを使った工作を始めた人(通信のライブラリまでは自作しないレベル)です。
必要に応じて追記するかも。

1. UART (Universal Asynchronous Receiver-Transmitter)

ゆーあーと。
クロック信号を使わない、非同期式シリアル通信の一種。
PCとマイコンを繋いでシリアルモニタに文字を表示したり、BluetoothモジュールやGPSモジュールなどと1対1で通信したりするときによく使われる。

特徴

1. TX(Transmit: 送信)とRX(Receive: 受信)の2本の信号線を使用する

電源とGNDを合わせると、計4本の配線になることが多い。1対1の専用線なので、I2Cのようなアドレスの概念はない。

2. 通信速度の事前同期が必須

通信のタイミングを合わせるクロック線がないため、データを送る側と受ける側で、あらかじめ通信速度(ボーレート:Baud rate)を合わせておく必要がある。
例: 9600 bps / 115200 bps など(bps = bit per second / 1秒間に送るビット数)

とりこれメモ

1. 配線の仕方

正しい接続は、TX(送信) ➔ 相手のRX(受信) / RX(受信) ➔ 相手のTX(送信)

2. 文字化けしたらボーレートを疑う

シリアルモニタを開いたときに ⸮⸮⸮ のような謎の文字化けが大量に出力される場合、プログラム側の設定とシリアルモニタ側の設定のボーレートが一致していないことが多い。

2.I2C(Inter-Integrated Circuit)

あいすくえあどしー・あいつーしー。
※表記としてはI2Cがより正しいが、本記事ではI2Cとする。
クロックに同期させてデータの通信を行う、同期式シリアル通信の一種。
センサやROMなどとの通信によく使う。特徴としては以下が挙げられる。

特徴

1 . SCL(Serial Clock),SDA(Serial Data)の二本の信号線を使用する

電源とGNDを合わせると、計4本の配線になることが多い。
信号線には必ずプルアップ抵抗が必要だが、マイコンボードやモジュール側に内蔵されている場合が多い。

2. 各機器がマスターとスレーブに分かれ、マスターからスレーブに対し送信/受信の指示を行う

マスター(マイコン等): 通信のリーダー。常に自分から通信を開始する。
スレーブ(センサー等): 通信のフォロワー。マスターから指名されるのを待つ。

3. アドレスを用いて1多対の通信ができる

スレーブ機器にはそれぞれ固有の7ビットのアドレスが割り当てられている。
信号線が共通でも、マスターがアドレスで指名して通信するため、ピンを節約して大量のセンサーを繋ぐことができる。また、基本的にマスター側にアドレスはなく、スレーブ側を識別するためだけにアドレスが使われる。

とりこれメモ

1. アドレスの重複

同じセンサを複数使う場合など、用途によってはアドレスが重複するときがある。
その場合の対処法としては以下が挙げられる。

  • モジュールによっては、アドレスを変更できるピンを備えているのでそれを使う
  • マイコンによっては、I2Cの系統を2つ以上搭載しているのでそれを使う
  • アドレスを変更するモジュールを追加する
2.ノイズに注意する

ノイズに弱いので、あまり配線を伸ばしすぎないようにする。

3. SPI (Serial Peripheral Interface)

えすぴーあい。
クロック信号に同期させてデータの通信を行う、同期式シリアル通信の一種。
I2Cと同じ同期式だが、こちらの方が通信速度がかなり速い。
SDカードスロットへの読み書きや、フルカラー液晶ディスプレイ(LCD)など、データ量が大きくてスピードが求められる機器によく使う。

特徴

1. 4本以上の信号線を使用する

主に以下の4本の線で通信を行うため、配線数は多め。

  • SCLK (Serial Clock): タイミングを合わせるクロック線
  • MOSI (Master Out Slave In): マスターからスレーブへデータを送る線
  • MISO (Master In Slave Out): スレーブからマスターへデータを送る線
  • CS / SS (Chip Select / Slave Select): 通信したい相手を指名する線
2. CS線を使って1対多の通信を行う

I2Cのようなアドレスはない。代わりに、マスターが通信したいスレーブのCS線をLOWに落とすことで、物理的に相手を指名して通信を開始する。

とりこれメモ

1. 繋ぐ機器に応じてピン数が増える

SPIは機器を増やすたびにCS線が1本ずつ増える。
例えば、SPIのセンサーを3個繋ぎたい場合、SCLK、MOSI、MISOの3本は共通にできるが、CS線だけはマイコンから3本別々に伸ばす必要がある(合計6本となる)。

2. ノイズに注意する

I2Cと同じ。
また通信速度が速いので、ノイズ源にもなりやすい。

各規格の速度・メリット等の比較

規格     速度の目安          配線数      通信相手       メリット デメリット
UART ~500kbps 2本 1対1 PCなどを使用したデバッグに便利。 1対1しか繋げない・遅い
I2C ~1Mbps 2本 1対多 2本のみの信号線で多数のスレーブと接続できる。 アドレスが被ることがある・外部ノイズに弱い・遅い
SPI ~50Mbps 4本〜 1対多 液晶やSDカードなど大容量データの扱いに向く。 繋ぐ機器が増えるたびにCS線が必要になる・ノイズ源になる

その他

  • 信号線の電圧には注意する
    マイコンやモジュールには3.3V駆動のものや5V駆動のものなどが混在している。例えば、3.3V専用のGPSモジュールと5Vのマイコンを直接つなぐと、故障の原因になることがある。電圧レベルが一致しているか、データシートで必ず確認する。合わない場合はレベルシフタという変換部品を使うことが多い。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?