USB¶
USBとは¶
USB(Universal Serial Bus)は、パソコンと周辺機器を接続するための通信規格である。
現在では
- キーボード
- マウス
- USBメモリ
- スマートフォン
- マイコン開発ボード
など幅広い機器で利用されている。
USBの特徴¶
USBには以下の特徴がある。
- 通信と電源供給を同時に行える
- ホットプラグに対応している
- 多くのOSで標準サポートされている
- 高速通信が可能
- 接続方法が統一されている
USBでできること¶
USBは単なる電源ケーブルではない。
実際には
電源供給
+
データ通信
を同時に行っている。
例えば
PC
↓
USB
↓
STM32
の場合
- STM32へ給電
- シリアル通信
- ファームウェア書き込み
などを行える。
USBコネクタの種類¶
USBには様々なコネクタが存在する。
USB Type-A¶
最も一般的なUSBコネクタ。
PC
USBハブ
などで使用される。
USB Type-B¶
プリンタなどで利用される。
Micro USB¶
昔のスマートフォンや開発ボードで利用された。
USB Type-C¶
現在主流のコネクタ。
特徴
- 表裏がない
- 高速通信対応
- 高出力給電対応
USBの配線¶
USB 2.0では基本的に4本の線を利用する。
| 信号 | 説明 |
|---|---|
| VBUS | 電源 |
| D+ | 通信線 |
| D- | 通信線 |
| GND | グランド |
イメージ
USB
VBUS
D+
D-
GND
USBの電源¶
USBは機器へ電力を供給できる。
USB 2.0では一般的に
5V
が供給される。
例
PC
↓
USB
↓
STM32
STM32では
5V
↓
LDO/DCDC
↓
3.3V
へ変換して利用する。
USB通信の仕組み¶
USBは
Host
と
Device
で構成される。
Host¶
通信を管理する側。
例
- PC
- Raspberry Pi
- スマートフォン
Device¶
接続される側。
例
- STM32
- USBメモリ
- マウス
イメージ
PC
(Host)
│
USB
│
STM32
(Device)
USBの通信速度¶
USBには複数の規格が存在する。
| 規格 | 理論速度 |
|---|---|
| USB 1.1 Low Speed | 1.5Mbps |
| USB 1.1 Full Speed | 12Mbps |
| USB 2.0 High Speed | 480Mbps |
| USB 3.0 | 5Gbps |
| USB 3.1 | 10Gbps |
| USB 3.2 | 20Gbps |
STM32では
USB Full Speed
(12Mbps)
がよく利用される。
USBデバイスクラス¶
USBには様々な機器の種類が定義されている。
HID¶
Human Interface Device
例
- マウス
- キーボード
- ゲームパッド
CDC¶
Communication Device Class
仮想シリアルポートとして動作する。
例
USB
↓
COMポート
STM32開発で最もよく利用される。
MSC¶
Mass Storage Class
USBメモリとして認識される。
Audio¶
オーディオ機器用。
STM32でのUSB¶
STM32にはUSBコントローラが内蔵されているものがある。
例
STM32F103
STM32F4
STM32G4
など。
CubeMXで
USB Device
を有効化できる。
USB CDC¶
STM32ではCDCモードが非常によく利用される。
PCから見ると
COM3
COM5
などのシリアルポートとして認識される。
イメージ
PC
↓
USB
↓
仮想UART
↓
STM32
UARTとの違い¶
| 項目 | USB | UART |
|---|---|---|
| 通信速度 | 高い | 普通 |
| 配線 | 専用規格 | 単純 |
| PC接続 | 直接可能 | USB変換が必要 |
| 実装難易度 | 高い | 低い |
USBとシリアル通信¶
多くの開発ボードでは
USB
↓
USB-UART変換IC
↓
STM32 UART
となっている。
そのため
USB通信
に見えても実際はUARTである場合が多い。
USB Type-Cについて¶
USB Type-Cはコネクタ形状の名前である。
よくある誤解
Type-C = 高速
ではない。
実際には
Type-C
はコネクタ形状であり、
内部の通信規格は
USB2.0
USB3.0
USB3.2
など様々である。
USBとESD対策¶
USBコネクタは外部へ露出する。
そのため
静電気
の影響を受けやすい。
実際の基板では
USBコネクタ
↓
ESD保護素子
↓
STM32
という構成がよく利用される。
Asterでの利用例¶
Asterでは以下の用途で利用できる。
デバッグ¶
PC
↓
USB
↓
AC
ログ出力¶
STM32
↓
USB CDC
↓
PC
ファームウェア更新¶
USB
↓
ブートローダ
Raspberry Pi接続¶
Raspberry Pi
↓
USB
↓
STM32
よくあるトラブル¶
D+とD-を逆接続¶
通信できない。
GND未接続¶
通信が不安定になる。
ESD対策不足¶
静電気で故障する。
Type-CだからUSB3.0だと思い込む¶
実際はUSB2.0の場合も多い。
まとめ¶
USBは通信と電源供給を同時に行える汎用インターフェースである。
- HostとDeviceで通信する
- 電源供給が可能
- D+とD-でデータ通信を行う
- STM32ではCDCがよく利用される
- Type-Cはコネクタ形状の名称である
- ESD対策が重要
組み込み開発ではデバッグ、ログ取得、ファームウェア更新など様々な場面で利用される重要な通信規格である。