なんかいろいろあって??ってなるので特徴を覚え書き。線は信号に関係するものだけ (普通は +VDD が必要)
名前 | 線 | 特徴 | 速度 | 備考 |
---|---|---|---|---|
1-wire | SIGNAL, GND | 半二重 1対多 非同期 | 標準 15.4kbps, オーバードライブ125kbps | SIGNAL が VDD を兼ねるので本当に2本だけでOK センサーとかで採用例がある。MAXIM の日本語スライド |
I2C | SDA, SCL, GND | 半二重 多対多 同期 | ロースピード 10kbps 標準 100kbps ファーストモード 400kbps 高速モード 3.4Mbps | バス中のデバイスのどれでもマスターになれる。マイコンだと400kbpsまでが多い?ここに上げた中では唯一多対多のバスを作れる |
SPI | SCK, MISO, MOSI, SS, GND | 全二重 1対多 同期 | クロック依存最大 1Mbps〜2Mbps | マスターはスレーブの数だけ SS が必要。1対1 なら SS は必要ない。 |
RS232 | RxD, TxD, GND | 全二重 1対1 非同期 | 9600bps などいろいろ | PC でもよく使われていたインターフェイス。今でも USB 変換ケーブルは簡単に手に入る。フロー制御とかしないなら3本で使える |
USB1.0 | D+, D-, GND | 半二重 1対多 非同期 | 1.5Mbsp, 12Mbps | 使うの面倒。USB2.0 は高速化版、USB3.0 はさらに高速化して全二重に |
AVR では
- SPI はほぼどの AVR でも使える
- I2C は AVR によっては専用ハード (TWI) が用意されてる。専用ハードでなくても USI があれば TWI をハンドリングできる (多少面倒だけどライブラリとして公開している人はいる)。
- RS232 はロジックレベルをドライバ (MAX232系の) で変換すれば USART で直接扱えるので簡単。
- USB は一部の AVR で組込み。V-USB を使えばソフトウェアだけでもいける。あるいは USB Serial 変換チップ (FTDIのが有名でクロスプラットフォーム) を使えば USART 経由で使える。変換チップ使うのが確実で汎用性があってよく使われていそう。
略語がいっぱい
- UART (Universal Asynchronous Receiver Transmitter) は非同期なシリアルを扱う回路の名前。同期なのを統合したものを USART (Universal Synchronous Asynchronous Receiver Transmitter) というらしい
- TWI (Two Wire Interface) はその名の通り2線式ってことなんだけど、AVR においては普通は I2Cのことを指しているっぽい。I2Cと名乗ってないのはなんか政治的な問題?