tl;dr
- USBデバイスを電子工作で作れると楽しいよ
- マイコンのUSBコントローラの仕様書みてもさっぱりだったよ
- 通信仕様や、USBコントローラを使うときに必要な知識を、技術書典16の新刊『USB完全に理解した -通信仕様とコントローラ編-』にまとめたよ
- TinyUSBの使い方もあるよ
- 5/26(日)オフラインイベントもあるよ!! ブースは「え06」!!
USBデバイスを電子工作で作れると楽しい
私は自作キーボードを楽しんでいます。キーボードというPCを操作するデバイスとして、様々なアイディアを実現することができます。キーボードの他に、M5Stackをトラックパッド化するなど、いろいろできます。
キーボードのようにUSBデバイスを作ることで、PCを操作できるガジェットが作れるようになります。
これをキーボード以外のデバイスにも手を伸ばしたいと思いました。
マイコンのUSBコントローラ
RP2040などのマイコンにはUSBコントローラが付属しています。 マイコンのデータシートや、リファレンスマニュアルに、USBコントローラの説明はありますが、それはUSBの通信について理解している方のための内容になっています。 そのため、それだけを見てUSBデバイスが実装できるかというと、そんなものにはなっていません。
そして、多くのUSBデバイスがTinyUSBなどのUSBライブラリを実装しているとあります。 しかし、それらのUSBライブラリをどうやって使えば良いのか、情報が少ないのが実情でした。
これは「USBキーボード」を作ろうとする分には見よう見まねでなんとかなりそうには見えましたが、それはUSBデバイスが実装できたとは言えないのではと思いました。 そこできちんとUSBを理解したいと思いました。
実装方法ではなく、きちんと理解するための本を作った
USBの通信仕様や、USBコントローラの動きについて、仕様を読んだり、解説書を読んだり、実際に使ってみたりして、USBデバイスを実装する為の知識を付けることにしました。
RP2040を用いてUSBコントローラへの命令を直接実装して、ロジックアナライザで信号を直接見たり、WiresharkでUSBの通信を見たりしていました。
そして、学んだことのアウトプットが技術書典16の新刊『USB完全に理解した ー通信仕様とコントローラ編ー』になります。
TinyUSBもあるよ
実際にUSBデバイスを作る時には直接USBコントローラを操作することは少なく、TinyUSBなどのライブラリを使って実装することを知りました。 USBコントローラの働きと、ファームウェアでやるべきことを理解した上で、ライブラリを見ると、このライブラリがどの層を解決するのかよくわかります。
本書では、TinyUSBの役割と、TinyUSBの使い方を扱います。
目次
目次は以下のようになっています。本文28ページの短めにまとまった書籍です。
1. USB通信のプロトコル
USBの通信プロトコルを、物理層から、パケット、トランザクション、転送方式等に、順にレイヤーを解説します。
2. ホストとの通信の開始とディスクリプタ
USBの通信の開始処理と、デバイスからホストにUSBデバイスとしての仕様を伝えるディスクリプタを解説します。
3. マイコンの持つUSBコントローラの機能
RP2040を例に、マイコンのUSBコントローラの役割と、それに対してファームウェア側でやるべきことを見ていきます。
コントロール転送、バルク転送における、ホスト、USBコントローラ、ファームウェアのやりとりを、シーケンス図の形で記述しています。
4. USBライブラリTinyUSBの役割と、利用
USBコントローラの使い方までを理解したところで、実際にUSBデバイスを実装するときに使うTinyUSBを解説します。TinyUSBの役割や、TinyUSBを使ったデバイスの実装方法を解説します。
技術書典16にはオフラインイベントにも出展します!
というわけで、技術書典16に新刊を持って参加します!
今まで技術書典3〜15に参加し、オフラインイベントのある時にはオフラインでも参加してきました。 今回も同様にオフラインイベントにも出展します。
ブース番号は「え06」になります。
オフラインイベントの参加には入場券が必要です。ログイン後のマイページから購入することができます。忘れずに購入するようにしてください。
では、技術書典16を楽しみましょう!