PICでUSBを!(知識ゼロからのスタートです)
PIC18F14K50のUSB機能を100%自前のソフトで制御する試みです。しかもアセンブラで!
当記事は2009年12月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 |
2011.7.10 前へ 次へ 目次へ戻る ホームページトップへ戻る |
☆USB(HIDクラス) USBを通じてパソコンとの間でデータを送受信する方法にいくつかの種類があることがわかりました。 その中で特別のドライバをインストールする必要のないHIDクラスを使うことを考えます。 |
[第34回]
●パイプとエンドポイント(前回の続きです)
パイプとエンドポイントとの関係について、下のような説明図を描いていたのですが、それをすっかり忘れてしまっていました。
図では左のホスト(パソコン)と右のUSB装置(A)および(B)はそれぞれUSBケーブルで接続されています。
物理的なUSBケーブルはただの1本のケーブルです。
このUSBケーブルの中身は、電源線であるV+、GNDと信号線のD+、D−のたかだか4本の線しかありません。
USBはそのケーブルを使ってデータを多重に伝送します。
上の図はそのデータ伝送のしくみを模式的に表したものです。
ホスト(パソコン)とUSB装置との間を接続している「帯」が「パイプ」です。
「パイプ」は実際に存在する「もの」ではなくて、データ伝送のしくみを考えるための、「仮想的」な概念です。
パソコンとUSB装置との間のデータは、USBケーブルを使って送信、受信されるのですが、それは図のような「パイプ」の概念に従って伝送されるのです。
パソコンからは、図の装置(A)はアドレス1(ADRS 1)、装置(B)はアドレス2(ADRS 2)として、識別されています。
そしてデータの送受信は、パイプを通じて接続されている、アドレス1、アドレス2の各エンドポイントに対しておこなわれます。
「パイプ」は装置の設計上の必要に応じて、複数本設定することができます。
図の装置(A)は3本、(B)は4本のパイプでホスト(パソコン)とつながっています。
USB装置は、エンドポイントという仮想的な接続コネクタを複数もっていて、そこにパイプがつながります。
そのうちのエンドポイント0(EP0)は、パソコンと装置との間で、基本的な情報のやり取り(コントロール伝送)をするためのもので、USB装置は必ずもっていなければならないものです。
ここに接続されるパイプはコントロールパイプといいます。
コントロール伝送というのは、このパイプを使って行うデータ伝送のことです。
EP0に接続される「コントロールパイプ」のほかに、ホストが装置からデータを入力する「INパイプ」とホストから装置にデータが出力される「OUTパイプ」があります。
「コントロールパイプ」だけは、データの送信と受信を同じパイプを使って行う「双方向」パイプなのですが、「INパイプ」はデータがパソコンに「入力」される方向にしか流れない(パソコン←装置)単方向パイプで、「OUTパイプ」はデータがパソコンから「出力」される方向にしか流れない(パソコン→装置)単方向パイプです。
コントロールパイプは必ずエンドポイント0(EP0)に接続されます。
そのほかのIN、OUTパイプについては、EP0以外のどのbフエンドポイントを使うかを、装置側の仕様で任意に定めることができます。
EP0は双方向のエンドポイントですが、そのほかのエンドポイントは単方向ですから、INパイプにはINエンドポイントを、OUTパイプにはOUTエンドポイントを接続することになります。
IN、OUTエンドポイントはそれぞれbP〜bP5の範囲の番号で識別されます。
図の装置(A)はEP0のほかにEP1(IN)とEP1(OUT)の2つのエンドポイント(入力1、出力1)をもっています。
また装置(B)はEP0のほかにEP2(IN)、EP3(OUT)、EP5(OUT)の3つのエンドポイント(入力1、出力2)をもっています。
なおIN、OUTはつねにホスト(パソコン)から見たときの、入力、出力のことをいいます。
CPUをつくろう!第426回(2010.1.31upload)を再編集
PICでUSBを![第34回]
2011.7.10upload
前へ
次へ
目次へ戻る
ホームページトップへ戻る