それぞれ差動で動いているみたい。確かに差動ペアはノイズに強いよね。結びたくなっちゃうんだけど、そうすると電流がとめどなく流れるのでやらないように。本来はこれの他にプルアップ抵抗をどうするとかありますが、とりあえずここらへんの話は知らなくてもできるので放置。このマイコンに限れば、通信線はそのままマイコンに繋ぐ。これを電源にしたらマイコンが死にます。落としてからマイコンに入れること。フレーム・パケット・トランザクション通信の単位です。見ればいいですが、左から順に単位が小さくなってくる。規格書を読んでいる時に混乱したりイライラしたりするのできちっと基本は抑えておきましょう。エンドポイントと転送方式もうここらへんで専門用語のオンパレードです。データ線1ペアのみの通信方式ではあるが、擬似的に複数の独立した通信線があるかのように考えるのが基本です。この擬似的な通信線(データライン)をパイプといいます。デバイス)というように分ける(後述するコントロール転送は例外)。あるデータの送受信を実装したい場合は、デバイス側に送信と受信専用のパイプをそれぞれ1つずつ、合計2つ用意する必要があります。エンドポイントパイプの行き着く先がエンドポイント(EP)で、これは送受信したデータを格納するバッファを示しています。バッファのことをエンドポイントと呼ぶらしいです。実際のところパイプと混同されることが多いようです。リファレンスマニュアルでは事実そうなっているきらいがあります。デフォルトのパイプというのがあって、それはエンドポイント0です。これは後述するコントロール転送を最初から有効化しておく必要があり、まずホストから認識されるようになる際に通信が行われるエンドポイントです。コントロール転送ざっくりと書きます。何とかすることが目標なので、とりあえずその他の転送方式は省略しますね。担う、双方向のややこしい転送方式。通信はセットアップステージ、データステージ、ステータスステージに分かれています。セットアップステージはセットアップトランザクションで出来ています。ここに、次に来るデータの転送方向や個数(0個のこともある。この時はデータステージが存在しない)が書かれています。データステージは送受信するデータそのものです。いくつかのパケットで出来ているわけですが...ステータスステージは直前のトランザクションと逆方向の通信をします。...と、コントロール転送は以下を注目する必要があるわけです。SETUPトランザクションに含まれるデータ数と次の通信方向データ情報(ポインタ、どこまで送受信したか)現在どのトランザクションをしているのか、次はどのトランザクションになるのかちょっと実装が面倒くさそうですね。気が引けます、ががんばります。直感的にわかりにくいものを載せます。割り込みで動かします。データをホストから受信したタイミング等できっちり割り込みが入るので、ハンドラ内部でガチャガチャやっていきます。割り込みレベルを上げておくことをお忘れなく。エラー無き場合の割り込みはトランザクション単位で入るようです。通信完了後に割り込みとなっているのがポイントかつ嫌なところです。何が嫌かって?実際にこのペリフェラルを動かしてみれば分かりますよ。以下のことを常に気にかけねばなりません。データを送受信しなければならないのか(送受信し残しているのか)ただレジスタにぶち込めばいいだけではないことを意味している。データのポインタ、データ長をマイコン側で記憶させておかねばならない。これによって次の割り込み時の挙動が異なる。準備しなければならないし、そうじゃなかったらまた別の話になる。使う出番では...有限状態機械とは、状態遷移をいい感じにコンパクトに表したものです。現在のステートと何らかの値を入力として、次の状態と値を出力する関数って考えるといいでしょう。