ドローンの頭脳であるフライトコントローラには、いくつかシリアル通信が搭載されている。各シリアル通信の特徴を調べたので、備忘録として残しておく。
目次
シリアル通信とは?
シリアル通信とは、デジタルデータを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と記載されることもある。 信号名の上に記載されている上バーは、負論理の意味。 |
補足
- 信号線の本数は4本と3本がある。複数スレーブとの通信するときは4本必要だが、マスタ-スレーブが1対1接続の時はSS信号は固定して、3本にすることもできる。
- 信号と通信タイミングについては以下のサイトが分かりやすいので、そちらを参照。
参考
- 電子工作初心者がシリアル通信方式を分かりやすくまとめてみた | Qiita
- SPI、I2C、UARTそれぞれの方式について分かりやすくまとめられている。
- 「SPI」の解説 | しなぷすのハード製作記
- SPIについて、信号の種類やタイミング、モードまでかなりわかりやすく記載されている。
- SPI通信 | ミームス(MEMEs)のサポートページ
- SPIの接続形態、タイミングがわかりやすくまとめられている。
I2C
I2C(Inter Integrated Circuit)はクロック同期方式のシリアル通信インタフェース。フィリップス社が提唱した方式。(フィリップス社の半導体部門が売却されて、NXP社となった。)
伝送速度:
伝送モード | 伝送速度 |
---|---|
Standard-mode | 100kbps |
Fast-mode | 400kbps |
Fast-mode Plus | 1Mbps |
High-speed | 3.4Mbs |
Ultra Fast-mode | 5Mbps |
※Ultra Fast-modeのみ単方向通信
接続形態
接続形態は1対多の接続。1つのマスタと複数のスレーブで接続される。
信号線の種類
信号線 | 内容 |
---|---|
SDA | ・信号線の本数 1本 ・信号の方向 双方向(マスタ->スレーブ、スレーブ->マスタ) ・役割 シリアルデータを通信する信号線 ・補足 SDAは"Serial DAta"の略。 |
SCL | ・信号線の本数 1本 ・信号の方向 マスタ->スレーブ ・役割 マスタとスレーブの同期するためのクロック信号線 ・補足 SCLは"Serial CLock"の略。 |
補足
- SPI通信のSS信号のようなスレーブとの通信を制御する信号がないため、マスタ-スレーブ間の通信はすべてのスレーブが受信することになる。そのため、送信時には宛先のスレーブやマスターのIDを付与して送信している。 また、1バイト送信ごとにAckを送信することで、送受信間で到達確認をしている。
- 通信タイミングやデータフォーマットについては以下のサイトが分かりやすいので、そちらを参照。
参考
- I2Cとは? | Qiita
- すべてのモードについての通信速度が記載されていた。
- I2C通信の使い方 | picfun.com
- 通信タイミングやデータフォーマットが分かりやすい。
- I2Cとは | マイコン 豆知識
- 通信タイミングが分かりやすい。
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に同期機能を追加したモノである。以下のサイトが分かりやすい。
参考
- 「UART」の解説 | しなぷすのハード製作記
- 信号の構成について、フロー制御まで記載されている。
- USART vs UART: Know the difference | EDN
- UARTとUSARTの差分が記載されている。(英語の記事)
関連情報
その他の部品について気を付けることや部品の検討については以下。
コメント