PIC18F14K50でUSB(1)

お仕事です。USBの通信を使う機会がきました。

Microchip社のPIC18F14K50を使って、以下をもとに具体例を出しながらUSBのデバイスの製作をまとめます。

 

参考文献(1):後閑さんのUSBまとめ

参考文献(2):CQ出版過去記事のWEBまとめ

 

  • USBの基本

Untitled Diagram

USBはホストとデバイスの2者関係で通信を行います。

デバイスはハブを介して繋がる場合もあります。

1ホストにつき、デバイスは最大127台つなげることが可能です。

デバイスにはホストからそれぞれIDをつけられて管理されます。

 

・ハード的な話

Vcc(5V)、GND、D+、D-が基本の信号線。

miniUSBやmicroUSBにあるID信号はOTGを使うときに使用される。

通信は、D+D-の差動によって0 or 1がやり取りされるシリアル通信方式。

スピードが3種類、HighレベルLowレベルはスピードで変わる(以下の表参照)

ロースピードとハイスピードを区別できるように、回路で、D+ or D-をプルアップする。(1~10kΩくらいで)

D+プルアップ:フルスピード  D-プルアップ:ロースピード

図4

 

図3

 

PIC18F14K50の場合

USB2.0搭載

USBデバイスとしてもてる役割は最大16個(USBメモリになれたり、USBマウスになれたりする)

ロースピードとフルスピードが使用できる

デバイス側では、D+D-の入力信号変化によって、物理接続を認識する

 

データ通信

フレームと呼ばれる単位で通信を行う。

フレームの中身は以下の通り。細かいビット数やパケットの中身については参考資料を参照してください。

 

図5

 

転送モード

USBには以下の4つの転送モードが規定されています。

  • コントロール転送

用途:セットアップ、設定情報転送用

  • インタラプト転送

用途:少量データの定周期転送

一定周期でデータを転送する、キーボードやマウスなどに使用される

  • バルク転送

用途:大容量データの一括転送(信頼性あり)

非周期的でデータを転送する、外部メモリなどに使用される

  • アイソクロナス転送

用途:連続的で周期的なデータ転送

音声などのリアルタイム性が求められるもので使用される

これら4つの転送モードはPIC18F14K50でもサポートされています。

PIC18F14K50でのUSBモジュール動作は3つの制御レジスタによって設定/管理します。さらに、14個のレジスタを使用してUSB通信処理を管理します。

制御レジスタ1:UCON…USB制御レジスタ

制御レジスタ2:UCFG…USBコンフィグレーションレジスタ

制御レジスタ3:USTAT…USB転送ステータスレジスタ

UCON→USBイネーブルにする、SE0の監視でリセット信号とパワーアップ信号を区別する

USBENは設定の一番最後にイネーブルにする

コメントを残す

メールアドレスが公開されることはありません。