ドローンでよく使われるシリアル通信規格について(SPI、UART、I2C)

ドローンの頭脳であるフライトコントローラには、いくつかシリアル通信が搭載されている。各シリアル通信の特徴を調べたので、備忘録として残しておく。

目次

 


シリアル通信とは?

シリアル通信とは、デジタルデータを1bitずつ順次伝送する通信方式。複数の伝送線を使うパラレル通信よりも、伝送速度は遅くなるが、回線数が少ないため、低コスト、スペースが実現できる。

 

 

シリアル通信の同期方式

シリアル通信を行う上で、送信側と受信側でデータをやりとりするタイミングを合わせる(同期)する必要がある。このタイミングを合わせる方法として大きく以下の2パターンある。

  • クロック同期方式
  • 調歩同期/非同期方式

 

クロック同期方式

データ用伝送路とは別にクロック用伝送路を接続し、データ送信時にクロックを送信することで、送信側と受信側の読み取りタイミングを合わせることができる。

クロック用伝送路分だけ信号線が増えるが、データをそのまま送信できるため、伝送効率が良い。

クロック同期方式のシリアル通信 例) I2C通信、SPI通信

 

調歩同期/非同期方式

データの前後にスタートビット、ストップビットをつけることで、送信側と受信側の読み取りタイミングを合わせることができる。

データの前後に同期用の信号を別途つけるため、伝送効率が悪くなるが、信号線が少なくて済む。

調歩同期/非同期方式のシリアル通信 例) UART通信

 

フライトコントローラに搭載されているシリアル通信規格

フライトコントローラーに搭載されているシリアル通信は以下のものがある。

  • SPI
  • I2C
  • UART

 

各シリアル通信の仕様について簡単に調査した。

 

 

 

SPI

SPIはクロック同期方式のシリアル通信インタフェース。モトローラ(現在のNXPセミコンダクターズ)が提唱した方式。

伝送速度:数Mbpsほど

 

接続形態

接続形態は1対多の接続。1つのマスタと複数のスレーブで接続される。通信は必ずマスタ-スレーブ間で行い、スレーブ-スレーブ間では直接通信はできない。

信号線の種類

信号線内容
SDI・信号線の本数
1本
・信号の方向
スレーブ->マスタ
・役割
シリアルデータを入力する信号線
・補足
SDIは"Serial Data In"の略。
DI(Data In)やマスタ側ではMISO(Master In Slave Out)、
スレーブ側でMOSI(Master Out Slave In)と記載されることもある。
SDO・信号線の本数
1本
・信号の方向
マスタ->スレーブ
・役割
シリアルデータを出力する信号線
・補足
SDOは"Serial Data Out"の略。
DO(Data Out)やマスタ側ではMOSI(Master Out Slave In)、
スレーブ側でMISO(Master In Slave Out)と記載されることもある。
SCK・信号線の本数
1本
・信号の方向
マスタ->スレーブ
・役割
マスタとスレーブの同期するためのクロック信号線
・補足
SCKは"Serial ClocK"の略。
SCLK(Serial CLock)と記載されることもある。
SS・信号線の本数
スレーブの台数分
・信号の方向
マスタ->スレーブ
・役割
マスタが通信するスレーブを選択するための信号線
負論理のため、Lowレベルのときだけ、通信することができる
・補足
SSは"Slave Select"の略。
CS(Chip Select)や/CSと記載されることもある。
信号名の上に記載されている上バーは、負論理の意味。

補足

参考

 

 

I2C

I2C(Inter Integrated Circuit)はクロック同期方式のシリアル通信インタフェース。フィリップス社が提唱した方式。(フィリップス社の半導体部門が売却されて、NXP社となった。)

伝送速度:

伝送モード伝送速度
Standard-mode100kbps
Fast-mode400kbps
Fast-mode Plus1Mbps
High-speed3.4Mbs
Ultra Fast-mode5Mbps

※Ultra Fast-modeのみ単方向通信

接続形態

接続形態は1対多の接続。1つのマスタと複数のスレーブで接続される。

信号線の種類

信号線内容
SDA・信号線の本数
1本
・信号の方向
双方向(マスタ->スレーブ、スレーブ->マスタ)
・役割
シリアルデータを通信する信号線
・補足
SDAは"Serial DAta"の略。
SCL・信号線の本数
1本
・信号の方向
マスタ->スレーブ
・役割
マスタとスレーブの同期するためのクロック信号線
・補足
SCLは"Serial CLock"の略。

補足

  • SPI通信のSS信号のようなスレーブとの通信を制御する信号がないため、マスタ-スレーブ間の通信はすべてのスレーブが受信することになる。そのため、送信時には宛先のスレーブやマスターのIDを付与して送信している。 また、1バイト送信ごとにAckを送信することで、送受信間で到達確認をしている。
  • 通信タイミングやデータフォーマットについては以下のサイトが分かりやすいので、そちらを参照。

参考

 

 

 

UART

UART(Universal Asynchronous Receiver Transmitter)は調歩同期方式の
シリアル通信インタフェース。

伝送速度:数百bps-数十kbps

ボーレートによって決まる。よくあるボーレートは以下。
※通信する装置同志でボーレートを合わせないと通信できない。

  • 110bps
  • 150bps
  • 300bps
  • 600bps
  • 1200bps
  • 2400bps
  • 4800bps
  • 9600bps
  • 19200bps
  • 38400bps

接続形態

SPIやI2C通信のマスタ-スレーブのような親子関係はない。データ送信用のTX/RXとフロー制御用のRTS/CTS信号がそれぞれクロスされて接続される。

信号線の種類

信号線内容
TX・信号線の本数
1本
・信号の方向
出力
・役割
シリアルデータを出力する信号線
・補足
TXは"Transmit eXchange"の略。
RX・信号線の本数
1本
・信号の方向
入力
・役割
シリアルデータを入力する信号線
・補足
RXは"Receive eXchange"の略。
RTS・信号線の本数
1本
・信号の方向
出力
・役割
通信相手に対してフロー制御をするための信号線
通信相手に対してONにすることで、受信可能であることを伝える。
・補足
RTSは"Request To Send"の略。
CTS・信号線の本数
1本
・信号の方向
入力
・役割
通信対手からフロー制御を受けるための信号線
通信相手からONが来たら、相手が受信可能であることが分かる。
・補足
CTSは"Clear To Send "の略。

補足

  • 信号線の本数はTX/RXのみの2本の場合と、RTS/CTSを加えた4本の場合がある。
  • UARTは全二重の非同期方式のみ対応している。
  • 似たようなものにUSARTというインタフェースがあるが、これはUARTに同期機能を追加したモノである。以下のサイトが分かりやすい。

参考

 

 

 

関連情報

その他の部品について気を付けることや部品の検討については以下。

ドローン部品の購入に向けて、いろいろと検討したので備忘録としてまとめした。

 

 

 

シェアする

  • このエントリーをはてなブックマークに追加

フォローする