2 - テセラ・テクノロジー株式会社

アプリケーション・ノート
78K0R/KC3-L, 78K0R/KE3-L
(USBコントローラ内蔵製品)
16ビット・シングルチップ・マイクロコントローラ
USB HID(ヒューマン・インタフェース・デバイス)クラス ドライバ編
78K0R/KC3-L
μPD78F1022
μPD78F1023
μPD78F1024
© NEC Electronics Corporation 2009
資料番号
発行年月
ZUD-CB-09-0193(第1版)
2009/12/25
78K0R/KE3-L
μPD78F1025
μPD78F1026
〔メ
1
モ〕
アプリケーション・ノート ZUD-CB-09-0193
MINICUBEは,NECエレクトロニクス株式会社の登録商標です。
Windows, Windows XP,米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
PC/ATは,米国IBM社の商標です。
●本資料に記載されている内容は2009年7月現在のもので,今後,予告なく変更することがあります。量産設計の際には最新の個別
データ・シート等をご参照ください。
●文書による当社の事前の承諾なしに本資料の転載複製を禁じます。当社は,本資料の誤りに関し,一切その責を負いません。
●当社は,本資料に記載された当社製品の使用に関連し発生した第三者の特許権,著作権その他の知的財産権の侵害等に関し,一
切その責を負いません。当社は,本資料に基づき当社または第三者の特許権,著作権その他の知的財産権を何ら許諾するもので
はありません。
●本資料に記載された回路,ソフトウエアおよびこれらに関する情報は,半導体製品の動作例,応用例を説明するものです。お客
様の機器の設計において,回路,ソフトウエアおよびこれらに関する情報を使用する場合には,お客様の責任において行ってく
ださい。これらの使用に起因しお客様または第三者に生じた損害に関し,当社は,一切その責を負いません。
●当社は,当社製品の品質,信頼性の向上に努めておりますが,当社製品の不具合が完全に発生しないことを保証するものではあ
りません。当社製品の不具合により生じた生命,身体および財産に対する損害の危険を最小限度にするために,冗長設計,延焼
対策設計,誤動作防止設計等安全設計を行ってください。
●当社は,当社製品の品質水準を「標準水準」,「特別水準」およびお客様に品質保証プログラムを指定していただく「特定水準」
に分類しております。また,各品質水準は,以下に示す用途に製品が使われることを意図しておりますので,当社製品の品質水
準をご確認ください。
標準水準
:コンピュータ,OA機器,通信機器,計測機器,AV機器,家電,工作機械,パーソナル機器,産業用ロボット
特別水準
:輸送機器(自動車,電車,船舶等),交通用信号機器,防災・防犯装置,各種安全装置,生命維持を目的として設
計されていない医療機器
特定水準
:航空機器,航空宇宙機器,海底中継機器,原子力制御システム,生命維持のための医療機器,生命維持のための装
置またはシステム等
当社製品のデータ・シート,データ・ブック等の資料で特に品質水準の表示がない場合は,標準水準製品であることを表します。
意図されていない用途で当社製品の使用をお客様が希望する場合には,事前に当社販売窓口までお問い合わせください。
(注)
(1)
本事項において使用されている「当社」とは,NECエレクトロニクス株式会社およびNECエレクトニクス株式会社がそ
の総株主の議決権の過半数を直接または間接に保有する会社をいう。
(2)
本事項において使用されている「当社製品」とは,(1)において定義された当社の開発,製造製品をいう。
アプリケーション・ノート ZUD-CB-09-0193
2
は じ め に
対 象 者
このマニュアルは78K0R/KC3-L, KE3-Lの機能を理解し,その応用システムや応用プログラム
を設計,開発するユーザのエンジニアを対象としています。
対象製品は,次に示す各製品です。
愛称
標準製品
USBコントローラ内蔵製品
78K0R/KC3-L
μPD78F1000, 78F1001, 78F1002,
78F1003
μPD78F1007, 78F1008, 78F1009
μPD78F1022, 78F1023, 78F1024
78K0R/KE3-L
μPD78F1025, 78F1026
目
す。
的
このマニュアルは,次の構成に示す機能をユーザに理解していただく事を目的としていま
構
成
このアプリケーション・ノートは,大きく分けて次の内容で構成しています。
・78K0R/KC3-L, KE3-LのUSBファンクション・コントローラの概要
・USB規格の概要
・サンプル・ドライバの仕様
・サンプル・アプリケーションの仕様
・開発環境
・サンプル・ドライバの応用
読 み 方
このアプリケーション・ノートの読者には,電気,論理回路,マイクロコンピュータの一
般知識を必要とします。
78K0R/KC3-L, KE3-Lのハードウエア機能,および電気的特性を知りたいとき
→ 別冊の78K0R/KC3-L, KE3-L ユーザーズ・マニュアル ハードウエア編を参照してく
ださい。
78K0R/KC3-L, KE3-Lの命令機能を知りたいとき
→ 別冊の78K0R ユーザーズ・マニュアル アーキテクチャ編を参照してください。
凡
3
例
データ表記の重み:
注
:
注意
:
備考
:
数の表記
:
左側が上位桁,右側が下位桁
本文中につけた注の説明
特に気をつけて読んでいただきたい内容
本文の補足説明
2進数または10進数 … XXXX
16進数 … 0xXXXX
2のべき数を示す接頭語(アドレス空間,メモリ容量):
K(キロ) … 210 = 1024
M(メガ) … 220 = 10242
G(ギガ) … 230 = 10243
T(テラ) … 240 = 10244
P(ペタ) … 250 = 10245
E(エクサ) … 260 = 10246
アプリケーション・ノート ZUD-CB-09-0193
目次
第1章 概
1. 1 概
説............................................................................... 6
要 ..........................................................................................6
1. 1. 1 USBファンクション・コントローラの特徴............................................................................... 6
1. 1. 2 サンプル・ドライバの特徴 ........................................................................................................ 6
1. 2 78K0R/Kx3-Lの概要.........................................................................8
1. 2. 1 適用製品 ..................................................................................................................................... 8
1. 2. 2 特
徴 ..................................................................................................................................... 9
第2章 USBの概要 ....................................................................... 10
2. 1
2. 2
2. 3
2. 4
転送方式 ........................................................................................10
エンドポイント..............................................................................11
デバイス・クラス ..........................................................................11
リクエスト.....................................................................................12
2. 4. 1 種
類 ................................................................................................................................... 12
2. 4. 2 フォーマット ............................................................................................................................ 14
2. 5 ディスクリプタ..............................................................................15
2. 5. 1 種
類 ................................................................................................................................... 15
2. 5. 2 フォーマット ............................................................................................................................ 16
2. 5. 3 HIDクラス固有ディスクリプタのフォーマット............................................................................. 18
第3章 サンプル・ドライバの仕様 .............................................. 21
3. 1 概
3. 1. 1 機
要 ........................................................................................21
能 ................................................................................................................................... 21
3. 1. 2 リクエストへの対応 ................................................................................................................. 21
3. 1. 3 ディスクリプタの設定.............................................................................................................. 23
3. 2 各部の動作.....................................................................................27
3. 2. 1 CPU初期化処理 ........................................................................................................................ 29
3. 2. 2 USBファンクション・コントローラ初期化処理...................................................................... 31
3. 2. 3 INTUSB割り込み処理............................................................................................................... 35
3. 3 関数の仕様.....................................................................................37
3. 3. 1 関数一覧 ................................................................................................................................... 37
3. 3. 2 関数の相関関係......................................................................................................................... 38
3. 3. 3 関数の機能................................................................................................................................ 41
アプリケーション・ノート ZUD-CB-09-0193
4
第4章 サンプル・アプリケーションの仕様................................ 65
4. 1 概
要 ........................................................................................65
4. 2 動
作 ........................................................................................65
4. 3 関数の利用.....................................................................................67
第5章 開発環境 ........................................................................... 69
5. 1 開発環境 ........................................................................................69
5. 1. 1 プログラム開発......................................................................................................................... 69
5. 1. 2 デバッグ ................................................................................................................................... 69
5. 2 環境設定 ........................................................................................70
5. 2. 1 ホスト環境整備......................................................................................................................... 70
5. 2. 2 ターゲット環境整備 ................................................................................................................. 78
5. 3 オンチップ・デバッグ...................................................................78
5. 3. 1 ロード・モジュール生成 .......................................................................................................... 78
5. 3. 2 ロードと実行 ............................................................................................................................ 79
5. 4 動作確認 ........................................................................................82
第6章 サンプル・ドライバの応用 .............................................. 83
6. 1 概
要 ........................................................................................83
6. 2 カスタマイズ .................................................................................84
6. 2. 1 アプリケーション部 ................................................................................................................. 84
6. 2. 2 レジスタの設定......................................................................................................................... 85
6. 2. 3 ディスクリプタの内容.............................................................................................................. 85
6. 3 関数の利用.....................................................................................85
第7章 スタータ・キット ............................................................ 86
7. 1 概
7. 1. 1 特
要 ........................................................................................86
徴 ................................................................................................................................... 86
7. 2 主な仕様 ........................................................................................87
5
アプリケーション・ノート ZUD-CB-09-0193
第1章 概
説
このアプリケーション・ノートは,マイクロコントローラ78K0R/KC3-L, 78K0R/KE3-L(78K0R/Kx3-L)
に内蔵のUSBファンクション・コントローラ用に作成されたUSBヒューマン・インタフェース・デバイ
ス・クラス用サンプル・ドライバについて説明します。主に次に示す内容で構成されます。
・ サンプル・ドライバの仕様
・ サンプル・ドライバを利用したアプリケーション・プログラム開発のための環境
・ サンプル・ドライバを利用するための参考情報
この章では,サンプル・ドライバの概要と適用対象となるマイクロコントローラについて説明します。
概
1. 1
要
1. 1. 1 USBファンクション・コントローラの特徴
サンプル・ドライバの制御の対象である78K0R/Kx3-LのUSBファンクション・コントローラには,
次のような特徴があります。
・ Universal Serial Bus Specification Rev.2.0に準拠
・ フル・スピード(12 Mbps)デバイスとして動作
・ エンドポイントを次のように構成
表 1-1
エンドポイント名
78K0R/Kx3-Lのエンドポイント構成
FIFOサイズ(バイト)
転送タイプ
備
考
Endpoint0 Read
64
コントロール転送(IN)
シングルバッファ構成
Endpoint0 Write
64
コントロール転送(OUT)
シングルバッファ構成
Endpoint1
64×2
バルク転送1(IN)
ダブルバッファ構成
Endpoint2
64×2
バルク転送1(OUT)
ダブルバッファ構成
Endpoint3
64×2
バルク転送2(IN)
ダブルバッファ構成
Endpoint4
バルク転送2(OUT)
Endpoint7
64×2
64
インタラプト転送1(IN)
シングルバッファ構成
Endpoint8
64
インタラプト転送2(IN)
シングルバッファ構成
ダブルバッファ構成
・ USB標準リクエストには自動応答(一部のリクエストを除く)
・ バス・パワードとセルフ・パワードを選択可能 注1
・ 内部クロックと外部クロックを選択可能 注2
内部クロック: 外部20 MHz÷内部5分周×内部12逓倍/外部16 MHz÷内部4分周×内部12逓倍/
注1.
2.
1. 1. 2
外部12 MHz÷内部2分周×内部8逓倍(48 MHz)
サンプル・ドライバではバス・パワードを選択します。
サンプル・ドライバでは内部クロックを選択します。
サンプル・ドライバの特徴
78K0R/Kx3-L向けUSBヒューマン・インタフェース・デバイス・クラス用サンプル・ドライバには,
次のような特徴があります。機能や動作の詳細は第3章 サンプル・ドライバの仕様を参照してくだ
さい。
・ USBヒューマン・インタフェース・デバイス・クラスに準拠
・ キーボード・デバイスとして動作
・ 次に示すサイズのメモリを占有(ベクタ・テーブルを除く)
・ ROM:約3.1Kバイト
・ RAM:約0.4Kバイト
アプリケーション・ノート ZUD-CB-09-0193
6
・
1.1.3 サンプル・ドライバの構成
このサンプル・ドライバは次のようなファイルで構成されています。
表1-2 サンプル・ドライバのファイル構成
フォルダ
ファイル
概要
src
main.c
usbf78k0r.c
usbf78k0r_hid.c
main.h
usbf78k0r.h
usbf78k0r_hid.h
usbf78k0r_desc.h
errno.h
types.h
メイン・ルーチン,初期化,サンプル・アプリケーション
USB初期化,エンドポイント制御,バルク転送,コントロール転送
ヒューマン・インタフェース・デバイス・クラス固有処理
main.c関数プロトタイプ宣言
usbf78k0r.c関数プロトタイプ宣言
usbf78k0r_hid.c関数プロトタイプ宣言
ディスクリプタ定義
エラー・コード定義
ユーザ型宣言
include
備考
7
このほか、PM+(NECエレクトロニクス製統合開発ツール)で開発環境を構築した場合に生成されるプロ
ジェクト関連ファイル一式も同梱されています。詳細は 5.2.1 ホスト環境整備 を参照してください。
アプリケーション・ノート ZUD-CB-09-0193
1. 2
78K0R/Kx3-Lの概要
ここでは,サンプル・ドライバの制御の対象である78K0R/KC3-L, KE3-Lについて説明します。
78K0R/KC3-L, KE3-Lは,NECエレクトロニクスのシングルチップ・マイクロコントローラ78K0Rマ
イコンのロウ・パワー・シリーズの製品群です。78K0R CPUコアを使用し,ROM/RAM,タイマ/カ
ウンタ,,POC/LVI, シリアル・インタフェース,A/Dコンバータ,DMAコントローラ,USBファンク
ション・コントローラなどの周辺機能を内蔵しています。詳細は78K0R/KC3-L, KE3-L USBコントロ
ーラ内蔵製品 ユーザーズ・マニュアル ハードウエア編を参照してください。
1. 2. 1 適用製品
サンプル・ドライバは,次に示す製品に適用できます。
表 1-3
愛
称
品
名
78K0R/Kx3-L 製品一覧
内蔵メモリ
RAM
内蔵USB機能
フラッシュ・
割り込み
内部
外部
メモリ
78K0R/KC3-L
(48pin)
78K0R/KE3-L
(64pin)
μ PD78F1022
μ PD78F1023
μ PD78F1024
μ PD78F1025
μ PD78F1026
64 KB
6 KB
ファンクション・コントローラ
36
7
96KB
8 KB
ファンクション・コントローラ
36
7
128KB
8 KB
ファンクション・コントローラ
36
7
96KB
8 KB
ファンクション・コントローラ
41
11
128KB
8 KB
ファンクション・コントローラ
41
11
注意 このアプリケーション・ノートでは,特に違いのないかぎり,対象のマイクロコントローラを総括して
78K0R/Kx3-Lの呼称で記載します。
アプリケーション・ノート ZUD-CB-09-0193
8
1. 2. 2 特
徴
78K0R/Kx3-Lには,主に次のような特徴があります。詳細は、78K0R/Kx3-Lユーザーズ・マニュア
ルを参照下さい。
メモリ空間
・1Mバイト・リニア・アドレス空間(プログラム/データ共用)
内蔵メモリ
・ RAM:6K/ 8K バイト
・ フラッシュ・メモリ:64K/ 96K/ 128K バイト
乗除算機
・16ビット×16ビット = 32ビット(乗算)
・32ビット÷32ビット = 32ビット(除算)
キー割り込み
・4チャネル
・8チャネル
DMAコントローラ
・2チャネル
シリアル・インタフェース
・CSI:1チャネル/UART:1チャネル
・CSI:1チャネル/UART:1チャネル/簡易I2C:1チャネル
・CSI:1チャネル注/UART:1チャネル注/簡易I2C:1チャネル注
・UART(LIN-bus対応):1チャネル
・I2C:1チャネル
USBコントローラ
・USBファンクション(フル・スピード):1チャネル
A/Dコンバータ
・10ビット分解能A/Dコンバータ(AVREF = 1.8~3.6 V):8チャネル
電源電圧
・VDD = 1.8~3.6 V(USB未使用時)
・VDD = 3.0~3.6 V(USB使用時)
クロック出力/ブザー出力
・2.44 kHz, 4.88 kHz, 9.76 kHz, 1.25 MHz, 2.5 MHz, 5 MHz, 10 MHz(周辺ハードウエア・
クロック:fMAIN = 20 MHz動作時)
・256 Hz, 512 Hz, 1.024 kHz, 2.048 kHz, 4.096 kHz, 8.192 kHz, 16.384 kHz, 32.768 kHz
(サブシステム・クロック:fSUB = 32.768 kHz動作時)
オンチップ・デバッグ機能内蔵
注:78K0R/KE3-Lのみ
9
アプリケーション・ノート ZUD-CB-09-0193
第2章 USBの概要
この章では,サンプル・ドライバが準拠するUSB規格の概要を説明します。
USB(Universal Serial Bus)は共通のコネクタでさまざまな周辺機器をホスト・コンピュータに接続
できるようにするためのインタフェース規格です。ハブと呼ばれる分岐点を追加することで最大127個の
機器を接続でき,Plug&Playで機器を認識できるホットプラグに対応しているなど,従来のインタフェー
スより柔軟で使いやすいのが特徴です。現在ではPCのUSBインタフェース搭載率はほぼ100%になって
きており,PCと周辺機器間の標準インタフェースとして定着したと言えます。
USB規格の策定と管理はUSB Implementers Forum(USB-IF)という団体が行っています。USB規格
の詳細はUSB-IFの公式ウェブサイト(www.usb.org)を参照してください。
転送方式
2. 1
USB規格では,4種類の転送方式(コントロール,バルク,インタラプト,アイソクロナス)が定義
されています。各転送方式には表 2-1に示す特徴があります。
表 2-1
転送方式
項
目
特
徴
USBの転送方式
コントロール転送
バルク転送
インタラプト転送
アイソクロナス転
周辺機器の制御な
非周期的に大量デ
周期的でバンド幅
リアルタイム性が
どに必要な情報の
ータを扱う転送方
が低いデータ転送
要求される転送方
やりとりに使用さ
式
方式
式
64バイト
512バイト
1-1024バイト
1-1024バイト
8, 16, 32, 64バイ
8, 16, 32, 64バイ
1-64バイト
1-1023バイト
ト
ト
送
れる転送方式
設定可能な
パケット・
サイズ
ハイ・スピード
480 Mbps
フル・スピード
12 Mbps
ロウ・スピード
1.5 Mbps
転送の優先順位
8バイト
3
-
3
1-8バイト
2
-
1
・
アプリケーション・ノート ZUD-CB-09-0193
10
2. 2
エンドポイント
エンドポイントはホスト・デバイスが通信相手を特定するための情報の1つで,0-15の番号と方向
(IN/OUT)で指定されます。エンドポイントは周辺機器で使用するデータ通信経路ごとに用意しなけ
ればならず,複数の通信経路で共用できません注。たとえば,SDカードへの書き込み/読み出しとプ
リント出力の機能を持った機器の場合,SDカードへの書き込み用エンドポイント,読み出し用エンド
ポイント,プリント出力用エンドポイントを個別に持つ必要があります。どのような機器でも必ず使
用するコントロール転送には,エンドポイント0を使用します。
データ通信を行うとき,ホスト・デバイスは機器を特定するUSBデバイス・アドレスとともにエン
ドポイント(番号と方向)を使用して,機器内部の通信先を特定します。
エンドポイントのための物理的な回路として周辺機器内にバッファ・メモリを装備し,USBと通信
先(メモリ等)の速度差を吸収するFIFOの役割も果たします。
注 オルタナティブ設定という仕組みを使い,排他的に切り替える方法はあります。
2. 3
デバイス・クラス
USBを介して接続する周辺機器(ファンクション・デバイス)には,その機能によりさまざまなデ
バイス・クラスが定義されています。代表的なクラスとしてマス・ストレージ・クラス(MSC),コ
ミュニケーション・デバイス・クラス(CDC),ヒューマン・インタフェース・デバイス・クラス(HID)
などがあります。各デバイス・クラスにはプロトコルなどで標準仕様が定められているため,これに
準拠していれば共通のホスト・ドライバを使用できます。
ヒューマン・インタフェース・デバイス(HID)クラスは,キーボードやマウスなどの入力機器を接続
するためのクラスです。HIDクラスのデバイスは,インタフェース・ディスクリプタのbInterfaceClass
フィールドが0x03になります。
詳細はHID仕様書(Device Class Definition for Human Interface Devices (HID) Specification Version
1.11)を参照してください。
11
アプリケーション・ノート ZUD-CB-09-0193
2. 4
リクエスト
USB規格では,ホスト・デバイスからファンクション・デバイスに対してリクエストと呼ばれるコ
マンドを発行することにより通信が開始されます。リクエストには処理の方向,種類,ファンクショ
ン・デバイスのアドレスなどのデータが含まれています。
2. 4. 1 種
類
標準リクエスト,クラス・リクエスト,ベンダ・リクエストの3種類があります。
サンプル・ドライバでは次に示すリクエストに対応しています。
標準リクエスト
すべてのUSB対応機器で共通のリクエストです。
表 2-2 標準リクエスト一覧
リクエスト名
GET_STATUS
対象ディスクリプタ
デバイス
概
要
電源(セルフ/バス)とリモート・ウエイクアップの設定
の読み取り
CLEAR_FEATURE
SET_FEATURE
GET_DESCRIPTOR
エンドポイント
Halt状態の読み取り
デバイス
リモート・ウエイクアップのクリア
エンドポイント
Haltの解除(DATA PID = 0)
デバイス
リモート・ウエイクアップまたはテスト・モードの設定
エンドポイント
Haltの設定
デバイス
対象ディスクリプタの読み取り
コンフィギュレーション
ストリング
SET_DESCRIPTOR
デバイス
対象ディスクリプタの変更(オプション)
コンフィギュレーション
ストリング
GET_CONFIGURATION
デバイス
現行設定のコンフィギュレーション値の読み取り
SET_CONFIGURATION
デバイス
コンフィギュレーション値の設定
GET_INTERFACE
インタフェース
対象インタフェースの現行設定のうちオルタナティブ設
SET_INTERFACE
インタフェース
対象インタフェースのオルタナティブ設定値の設定
SET_ADDRESS
デバイス
USBアドレスの設定
SYNCH_FRAME
エンドポイント
フレーム同期のデータ読み取り
定値の読み取り
アプリケーション・ノート ZUD-CB-09-0193
12
クラス・リクエスト
デバイス・クラス固有のリクエストです。bmRequestTypeフィールドのビット6の値が0,ビッ
ト5の値が1のとき,そのリクエストはクラス・リクエストです。詳細はHID仕様書「Device Class
Definition for Human Interface Devices (HID) Specification Version 1.11」を参照してください。
HIDクラスでは次のリクエストが定義されています。
・ Get Report
ホストがコントロール転送を用いてファンクション・デバイスからデータを取得するための
リクエストです。すべてのHIDクラス準拠のドライバは,このリクエストをサポートする必
要があります。
・ Get Idle
ホストがファンクション・デバイスの現在のアイドル率を取得するためのリクエストです。
キーボード・デバイスは,このリクエストをサポートする必要があります。
・ Get Protocol
ホストがファンクション・デバイスの現在のプロトコル・コードを取得するためのリクエス
トです。ブート・デバイスは,このリクエストをサポートする必要があります。
・ Set Report
ホストがファンクション・デバイスにデータを送信するためのリクエストです。
・ Set Idle
ホストがファンクション・デバイスのアイドル率を設定するためのリクエストです。キーボ
ード・デバイスは,このリクエストをサポートする必要があります。
・ Set Protocol
ホストがファンクション・デバイスのプロトコル・コードを設定するためのリクエストです。
ブート・デバイスは,このリクエストをサポートする必要があります。
13
アプリケーション・ノート ZUD-CB-09-0193
ベンダ・リクエスト
ベンダ・リクエストは,ベンダが独自に定義するリクエストです。ベンダ・リクエストを使用す
る場合,ベンダはそのリクエストに対応するホスト・ドライバを提供する必要があります。
bmRequestTypeフィールドのビット6の値が1,ビット5の値が0のとき,そのリクエストはベンダ・
リクエストです。
2. 4. 2 フォーマット
USBリクエストは8バイト長で,次のようなフィールドで構成されています。
表 2-3
オフセット
0
フィールド
bRequest
2
wValue
3
7
明
リクエストの属性
ビット7
データ転送方向
ビット6, 5
リクエスト・タイプ
ビット4-0
対象ディスクリプタ
リクエスト・コード
下位
リクエストで使用する任意の数値
上位
wIndex
5
6
説
bmRequestType
1
4
USBリクエストのフォーマット
wLength
下位
リクエストで使用するインデックスま
上位
たはオフセット
下位
上位
データ・ステージでの転送バイト数
(データ長)
アプリケーション・ノート ZUD-CB-09-0193
14
2. 5
ディスクリプタ
USB規格では,各ファンクション・デバイス固有の情報を定められた形式でコード化したものをディ
スクリプタと呼んでいます。ファンクション・デバイスは,ホスト・デバイスからのリクエストに応じ
てディスクリプタを送信します。
2. 5. 1 種
類
次に示す5種類のディスクリプタが定義されています。
・ デバイス・ディスクリプタ
どのデバイスにも必ず存在するディスクリプタで,対応しているUSB仕様のバージョン,デバイス・ク
ラス,プロトコル,Endpoint0に対する転送で利用可能な最大パケット長,ベンダID,プロダクトIDな
どの基本情報が含まれています。GET_DESCRIPTOR_Deviceリクエストに応答して送信するディスク
リプタです。
・ コンフィギュレーション・ディスクリプタ
すべてのデバイスに1つ以上存在するディスクリプタで,デバイスの属性(電源供給方法),消費電力
などの情報を含みます。GET_DESCRIPTOR_Configurationリクエストに応答して送信するディスクリ
プタです。
・ インタフェース・ディスクリプタ
インタフェースごとに必要なディスクリプタで,インタフェース識別番号,インタフェース・クラス,
サポートするエンドポイントの数などが含まれます。GET_DESCRIPTOR_Configurationリクエストに
応答して送信するディスクリプタです。
・ エンドポイント・ディスクリプタ
インタフェース・ディスクリプタに指定されたエンドポイントごとに必要なディスクリプタで,転送タ
イプ(転送方向),転送で利用可能な最大パケット長,転送のインターバルを定義します。ただし,
Endpoint0はこのディスクリプタを持ちません。GET_DESCRIPTOR_Configurationリクエストに応答し
て送信するディスクリプタです。
・ ストリング・ディスクリプタ
任意の文字列を含むディスクリプタです。GET_DESCRIPTOR_Stringリクエストに応答して送信する
ディスクリプタです。
また,HIDクラス規格では,次に示す3種類のディスクリプタが定義されています。
・ HID(ヒューマン・インタフェース・デバイス)ディスクリプタ
HIDに属するディスクリプタの種類とサイズを定義します。GET_DESCRIPTOR_HIDリクエストに応答
して送信するディスクリプタです。
・ レポート・ディスクリプタ
ホストとファンクション・デバイス間で送受信するデータの形式を定義します。他のディスクリプタと
違い必要なデータ・フィールドの内容に伴い,長さや並びが変化します。レポート・ディスクリプタは
アイテムと呼ばれる情報群から構成されます。アイテムにはショート・アイテムとロング・アイテムが
あり,3つのアイテム(メイン,グローバル,ローカル)GET_DESCRIPTOR_Reportリクエストに応
答して送信するディスクリプタです。
・ フィジカル・ディスクリプタ
ファンクション・デバイスの制御に使用する人の体の部位に関する情報を定義します。このディスクリ
プタはオプションのため,省略可能です。このサンプル・ドライバではフィジカル・ディスクリプタを
使用しません。
15
アプリケーション・ノート ZUD-CB-09-0193
2. 5. 2 フォーマット
ディスクリプタのサイズとフィールドは,次のように種類ごとに異なります。
備考 各フィールドのデータ並びはリトル・エンディアンです。
表 2-4 デバイス・ディスクリプタのフォーマット
フィールド
サイズ
説
明
(バイト)
bLength
1
ディスクリプタのサイズ
bDescriptorType
1
ディスクリプタの種類
bcdUSB
2
USB仕様リリース番号
bDeviceClass
1
クラス・コード
bDeviceSubClass
1
サブクラス・コード
bDeviceProtocol
1
プロトコル・コード
bMaxPacketSize0
1
Endpoint0の最大パケット・サイズ
idVendor
2
ベンダID
idProduct
2
プロダクトID
bcdDevice
2
デバイスのリリース番号
iManufacturer
1
製造者を表すストリング・ディスクリプタへのインデックス
iProduct
1
製品を表すストリング・ディスクリプタへのインデックス
iSerialNumber
bNumConfigurations
1
1
デバイスの製造番号を表すストリング・ディスクリプタへのインデックス
コンフィギュレーションの数
備考 ベンダID:USBデバイスを開発する各企業がUSB-IFから取得する識別番号
プロダクトID:ベンダIDを取得後,各企業が自社製品に割り振る識別番号
表 2-5 コンフィギュレーション・ディスクリプタのフォーマット
フィールド
サイズ
説
明
(バイト)
bLength
1
ディスクリプタのサイズ
bDescriptorType
1
ディスクリプタの種類
wTotalLength
2
コンフィギュレーション,インタフェース,およびエンドポイント・
bNumInterfaces
1
このコンフィギュレーションが持つインタフェースの数
bConfigurationValue
1
このコンフィギュレーションの識別番号
iConfiguration
1
このコンフィギュレーションを記述するストリング・ディスクリプタ
bmAttributes
1
このコンフィギュレーションの特徴
bMaxPower
1
このコンフィギュレーションの最大消費電流(2 μ A単位)
ディスクリプタの総バイト数
へのインデックス
表 2-6 インタフェース・ディスクリプタのフォーマット
フィールド
サイズ
説
明
(バイト)
bLength
1
ディスクリプタのサイズ
bDescriptorType
1
ディスクリプタの種類
bInterfaceNumber
1
このインタフェースの識別番号
bAlternateSetting
1
このインタフェースに対するオルタナティブ設定の有無
bNumEndpoints
1
このインタフェースが持つエンドポイントの数
bInterfaceClass
1
クラス・コード
bInterfaceSubClass
1
サブクラス・コード
bInterfaceProtocol
1
プロトコル・コード
iInterface
1
このインタフェースを記述するストリング・ディスクリプタへのイン
デックス
アプリケーション・ノート ZUD-CB-09-0193
16
表 2-7 エンドポイント・ディスクリプタのフォーマット
フィールド
サイズ
説
明
(バイト)
bLength
1
ディスクリプタのサイズ
bDescriptorType
1
ディスクリプタの種類
bEndpointAddress
1
このエンドポイントの転送方向
bmAttributes
1
このエンドポイントの転送タイプ
wMaxPacketSize
2
この転送の最大パケット・サイズ
bInterval
1
このエンドポイントのポーリング間隔
このエンドポイントのアドレス
表 2-8 ストリング・ディスクリプタのフォーマット
フィールド
サイズ
説
(バイト)
bLength
1
ディスクリプタのサイズ
bDescriptorType
1
ディスクリプタの種類
bString
17
任意
任意のデータ列
アプリケーション・ノート ZUD-CB-09-0193
明
2. 5. 3 HIDクラス固有ディスクリプタのフォーマット
HIDクラス・ディスクリプタのレポート・ディスクリプタのフォーマットは以下の通りです。
表 2−9 HID・ディスクリプタのフォーマット
サイズ
フィールド
説
明
(バイト)
bLength
1
ディスクリプタのサイズ(0x09 固定)
bDescriptorType
1
ディスクリプタの種類(0x21 固定)
bcdHID
2
HID バージョン(BCD 表現)
bCountryCode
1
地域識別番号
bNumDescriptors
1
クラス・ディスクリプタ数
bDescriptorType
1
クラス・ディスクリプタの種類(1 番目)
wDescriptorLength
2
クラス・ディスクリプタのサイズ(1 番目)
[bDescriptorType]...
1
クラス・ディスクリプタの種類(2 番目以降)
(オプション)
[wDescriptorLength]...
2
クラス・ディスクリプタのサイズ(2 番目以降)
(オプション)
表 2−10 レポート・ディスクリプタのフォーマット
ショート・アイテム
Bit
39/23/15
Item
......
8
[data] (0∼3 バイト)
7
6
5
bTag
4
3
2
1
bType
0
bSize
ロング・アイテム
Bit
2041
Item
......
24 23
[data] (0∼255 バイト)
フィールド
bTag
8 7 6 5 4 3 2 1 0
16 15
bLongItemTag
bDataSize
1 1 1 1 1 1 1 0
説明
アイテムの内容を指定する4ビットのフィールドです。bTypeと組み合わせて使用します。ロング・アイ
テムのときは1111固定です。
bType
アイテムの種類を指定する2ビットのフィールドです。00:メイン,01:グローバル,10:ローカルの3
種類があります。ロング・アイテムのときは11固定です。
bSize
バイト単位でデータ(dataフィールド)のサイズを指定する2ビットのフィールドです。ロング・アイテ
ムのときは10(2バイト)固定です。
bLongItemTag
ロング・アイテム使用時にアイテムの内容を指定する8ビットのフィールドです。
bDataSize
ロング・アイテム使用時にバイト単位でデータ(dataフィールド)のサイズを指定する8ビットのフィー
ルドです。
アプリケーション・ノート ZUD-CB-09-0193
18
表 2−11 メイン・アイテム(bType = 0x00)のフォーマット
タグ名
bTag
データ
ビット
1000
Input
Output
0:ビット単位フィールド,1:バイト単位のバッファ
b7
Reserved(0 固定)
b6
0:Null データを不許可,1:Null データを許可
b5
0:優先,1:非優先
b4
0:線形,1:非線形
b3
0:ロールオーバなし,1:ロールオーバあり
b2
0:絶対値,1:相対値
b1
0:配列,1:変数
b0
0:データ,1:定数
出力するデータの形式を指定します。
b7
b6-b0
Feature
Collection
Input(bTag = 1000)と同じ
0:変化しない値,1:変化する値
Input(bTag = 1000)と同じ
デバイスの構成情報を指定します。
b31-b0
1010
Reserved(0 固定)
b8
b31-b8
1011
定
入力するデータの形式を指定します。
b31-b9
1001
設
Output(bTag = 1001)と同じ
データ(Input,Output,Feature)の集合を指定します。
0x00:Physical(座標)
0x01:Application(マウスやキーボードなど)
0x02:Logical(割り込みデータ)
0x03:Report
0x04:Named Array
0x05:Usage Switch
0x06:Usage Modifier
0x07-0x7F:Reserved
0x80-0xFF:Vendor-defined
1100
19
End Collection
Collection の終了を指定します。データを持ちません(bSize = 0)。
アプリケーション・ノート ZUD-CB-09-0193
表 2−12 グローバル・アイテム(bType = 0x01)のフォーマット
タグ名
bTag
データ
0000
Usage Page
アイテムの ID 番号
0001
Logical Minimum
変数および配列の値の最小値
0010
Logical Maximum
変数および配列の値の最大値
0011
Physical Minimum
可変アイテムの物理的な限界の最小値
0100
Physical Maximum
可変アイテムの物理的な限界の最大値
0101
Unit Exponent
基数を 10 としたときの指数(2 の補数)
0110
Unit
単位
0111
Report Size
各レポートのサイズ(ビット単位)
1000
Report ID
レポートの ID 番号
1001
Report Count
レポート数
1010
Push
グローバル・アイテムの状態一覧をスタックに保管します。
1011
Pop
スタックの先頭に保管されているグローバル・アイテムの状態一覧を取
り出します。
表 2−13 ローカル・アイテム(bType = 0x02)のフォーマット
タグ名
bTag
データ
0000
Usage
アイテムの ID 番号
0001
Usage Minimum
配列およびビットマップの開始位置
0010
Usage Maximum
配列およびビットマップの終了位置
0011
Designator Index
フィジカル・ディスクリプタの ID
0100
Designator Minimum
配列およびビットマップと関連する識別情報の開始位置
0101
Designator Maximum
配列およびビットマップと関連する識別情報の終了位置
0111
String Index
ストリング・ディスクリプタの ID
1000
String Minimum
配列およびビットマップと関連するストリング・ディスクリプタが複数
ある場合の先頭 ID
1001
String Maximum
配列およびビットマップと関連するストリング・ディスクリプタが複数
ある場合の最終 ID
1010
Delimiter
1:ローカル・アイテムの開始,0:ローカル・アイテムの終了
アプリケーション・ノート ZUD-CB-09-0193
20
第3章 サンプル・ドライバの仕様
この章では,78K0R/Kx3-L向けUSB・ヒューマン・インタフェース・デバイス・クラス用サンプル・ド
ライバの機能と処理内容の詳細,および実装している関数の仕様について説明します。
3. 1
概
3. 1. 1 機
要
能
サンプル・ドライバには次のような処理が実装されています。
(1) 初期化
USBファンクション・コントローラを使用できるようにするため,各種レジスタを操作して設
定します。大きく分けて,78K0R/Kx3-LのCPUレジスタに対する設定とUSBファンクション・コ
ントローラのレジスタに対する設定があります。詳細は3. 2. 1 CPU初期化処理,3. 2. 2 USBファ
ンクション・コントローラ初期化処理を参照してください。
(2) エンドポイントの処理
USBファンクション・コントローラ内の転送用エンドポイントの状態は、コントロール転送用
エンドポイント(Endpoint0)に対してFWでデコードを行うリクエストがある事を示すINTUSB割
り込み(CPUDEC割り込み)によって通知されます。必要に応じて、Endpoint0を用い、リクエス
ト応答も行います。詳細は、3. 2. 3 INTUSB割り込み処理 を参照してください。また、インタラ
プト転送用エンドポイント(Endpoint7)でキーデータを送信する処理を行っております。
(3) サンプル・アプリケーション
HIDキーボード・デバイスとして動作します。SW押下に応じてキー割り込みが発生し、キーデ
ータ送信処理を行います。
3. 1. 2 リクエストへの対応
ここでは,サンプル・ドライバが対応するUSBリクエストについて説明します。
(1) 標準リクエスト
78K0R/Kx3-Lが自動的に応答しないリクエストに対し,サンプル・ドライバは次のような応答処
理を行います。
(a) GET_DESCRIPTOR
ホストがファンクション・デバイスのストリング・ディスクリプタやクラス固有のディスク
リプタを取得するためのリクエストです。このリクエストを受信すると,サンプル・ドライバ
は要求されたディスクリプタの送信処理(コントロール・リード転送)を行います。
(b) その他
サンプル・ドライバはSTALL応答を返します。
(2) クラス・リクエスト
HIDの各クラス・リクエストに対し,サンプル・ドライバは次のような応答処理を行います。
(a) Get Report
ホストがコントロール転送を用いてHID・デバイスからデータを取得するためのリクエスト
です。このリクエストを受信すると,サンプル・ドライバは記憶されているキー・コードの送
信処理を行います。
21
アプリケーション・ノート ZUD-CB-09-0193
(b) Get Idle
ホストがファンクション・デバイスの現在のアイドル率を取得するためのリクエストです。
このリクエストを受信すると,サンプル・ドライバは現在のアイドル率(= 0)を送信します。
(c) Set Idle
ホストがファンクション・デバイスの現在のアイドル率を取得するためのリクエストです。
サンプル・ドライバのサポートしているアイドル率は「0」のみです。このリクエストで指定し
たアイドル率が「0」の場合,サンプル・ドライバはNULL応答を返します。指定したアイドル
率が「0」以外の場合,STALL応答します。
(d) Get Protocol,Set Report,Set Protocol
これらのリクエストはサンプル・ドライバではサポートしません。これらのリクエストを受
信するとサンプル・ドライバはSTALL応答します。
アプリケーション・ノート ZUD-CB-09-0193
22
3. 1. 3 ディスクリプタの設定
サンプル・ドライバでの各ディスクリプタの設定を次に示します。各ディスクリプタの設定は,ヘ
ッダ・ファイル "usbf78k0r_desc.h" に記述されています。
(1) デバイス・ディスクリプタ
GET_DESCRIPTOR_deviceリクエストに応答して送信されるディスクリプタです。
GET_DESCRIPTOR_deviceリクエストにはハードウエアが自動的に応答するため,設定内容は
USBファンクション・コントローラの初期化時にUF0DDnレジスタ(n = 0-17)に格納します。
表 3-1 デバイス・ディスクリプタの設定
フィールド
サイズ
設定値
説
明
(バイト)
bLength
1
0x12
ディスクリプタのサイズ:18バイト
bDescriptorType
1
0x01
ディスクリプタの種類:デバイス
bcdUSB
2
0x0200
USB仕様リリース番号:USB 2.0
bDeviceClass
1
0x02
クラス・コード:HID
bDeviceSubClass
1
0x00
サブクラス・コード:なし
bDeviceProtocol
1
0x00
プロトコル・コード:固有プロトコル未使用
bMaxPacketSize0
1
0x40
Endpoint0の最大パケット・サイズ:64
idVendor
2
0x0409
idProduct
2
0x01CD
bcdDevice
2
0x0001
iManufacturer
1
0x01
製造者を表すストリング・ディスクリプタへのインデックス:1
iProduct
iSerialNumber
1
1
0x02
製品を表すストリング・ディスクリプタへのインデックス:2
0x03
デバイスの製造番号を表すストリング・ディスクリプタへのインデッ
bNumConfigurations
1
0x01
ベンダID:NEC
プロダクトID:78K0R /Kx3-L
デバイスのリリース番号:第1版
クス:3
23
コンフィギュレーションの数:1
アプリケーション・ノート ZUD-CB-09-0193
(2) コンフィギュレーション・ディスクリプタ
GET_DESCRIPTOR_configurationリクエストに応答して送信されるディスクリプタです。
GET_DESCRIPTOR_configurationリクエストにはハードウエアが自動的に応答するため,設定
内容はUSBファンクション・コントローラの初期化時にUF0CIEnレジスタ(n = 0-255)に格納し
ます。
表 3-2 コンフィギュレーション・ディスクリプタの設定
フィールド
サイズ
設定値
説
明
(バイト)
bLength
1
0x09
ディスクリプタのサイズ:9バイト
bDescriptorType
1
0x02
ディスクリプタの種類:コンフィギュレーション
wTotalLength
2
0x0022
bNumInterfaces
1
0x01
このコンフィギュレーションが持つインタフェースの数:1
bConfigurationValue
1
0x01
このコンフィギュレーションの識別番号:1
iConfiguration
1
0x00
このコンフィギュレーションを記述するストリング・ディスクリプタ
bmAttributes
1
0xA0
bMaxPower
1
0x1B
コンフィギュレーション,インタフェース,およびエンドポイント・
ディスクリプタの総バイト数:34バイト
へのインデックス:0
このコンフィギュレーションの特徴:バス・パワード,リモート・ウ
エイクアップあり
このコンフィギュレーションの最大消費電流:54 mA
(3) インタフェース・ディスクリプタ
GET_DESCRIPTOR_configurationリクエストに応答して送信されるディスクリプタです。
GET_DESCRIPTOR_configurationリクエストにはハードウエアが自動的に応答するため,設定
内容はUSBファンクション・コントローラの初期化時にUF0CIEnレジスタ(n = 0-255)に格納し
ます。
サンプル・ドライバではインタフェースを2つ使用するため,ディスクリプタも2種類設定して
います。
表 3-3
フィールド
サイズ
Interface0のインタフェース・ディスクリプタの設定
設定値
説
明
(バイト)
bLength
1
0x09
ディスクリプタのサイズ:9バイト
bDescriptorType
1
0x04
ディスクリプタの種類:インタフェース
bInterfaceNumber
1
0x00
このインタフェースの識別番号:0
bAlternateSetting
1
0x00
このインタフェースに対するオルタナティブ設定の有無:なし
bNumEndpoints
1
0x01
このインタフェースが持つエンドポイントの数:1
bInterfaceClass
1
0x03
クラス・コード:ヒューマン・インタフェース・デバイス・クラス
bInterfaceSubClass
1
0x00
サブクラス・コード:非ブート・デバイス
bInterfaceProtocol
1
0x01
プロトコル・コード:キーボード・デバイス
iInterface
1
0x00
このインタフェースを記述するストリング・ディスクリプタへのイン
デックス:0
アプリケーション・ノート ZUD-CB-09-0193
24
(4) エンドポイント・ディスクリプタ
GET_DESCRIPTOR_configurationリクエストに応答して送信されるディスクリプタです。
GET_DESCRIPTOR_configurationリクエストにはハードウエアが自動的に応答するため,設定
内容はUSBファンクション・コントローラの初期化時にUF0CIEnレジスタ(n = 0-255)に格納し
ます。サンプル・ドライバではエンドポイントを3つ使用するため,ディスクリプタも3種類設定
しています。
表 3-4
フィールド
サイズ
Endpoint7のエンドポイント・ディスクリプタの設定
設定値
説
明
(バイト)
bLength
1
0x07
ディスクリプタのサイズ:7バイト
bDescriptorType
1
0x05
ディスクリプタの種類:エンドポイント
bEndpointAddress
1
0x87
このエンドポイントの転送方向:IN方向
bmAttributes
1
0x03
このエンドポイントの転送タイプ:インタラプト
wMaxPacketSize
2
0x0040
この転送の最大パケット・サイズ:64バイト
bInterval
1
0x00
このエンドポイントのポーリング間隔:0 ms
このエンドポイントのアドレス:7
(5) ストリング・ディスクリプタ
GET_DESCRIPTOR_stringリクエストに応答して送信されるディスクリプタです。
GET_DESCRIPTOR_stringリクエストを受信すると,サンプル・ドライバはストリング・ディ
スクリプタをUSBファンクション・コントローラのUF0E0Wレジスタに格納します。
表 3-5 ストリング・ディスクリプタの設定
(a)String 0
フィールド
サイズ
(バイト)
1
bLength
bDescriptorType
bString
1
2
設定値
説
0x04
ディスクリプタのサイズ:4バイト
0x03
ディスクリプタの種類:ストリング
0x09,
0x04
言語コード:英語(U.S.)
明
(b)String 1
フィールド
サイズ
設定値
説
明
(バイト)
bLength
注1
bDescriptorType
bString
注1.
2.
注2
1
0x2A
ディスクリプタのサイズ:42バイト
1
0x03
ディスクリプタの種類:ストリング
40
-
ベンダ:NEC Electronics Co.
bStringフィールドのサイズにより設定値が異なります。
ベンダにより任意に設定できる領域のため,サイズや設定値は一定ではありません。
(c)String 2
フィールド
サイズ
設定値
説
明
(バイト)
bLength 注1
bDescriptorType
bString
注1.
2.
25
注2
1
0x0E
ディスクリプタのサイズ:14バイト
1
12
0x03
ディスクリプタの種類:ストリング
-
製品の種類:HIDDrv(HIDドライバ)
bStringフィールドのサイズにより設定値が異なります。
ベンダにより任意に設定できる領域のため,サイズや設定値は一定ではありません。
アプリケーション・ノート ZUD-CB-09-0193
(d)String 3
フィールド
サイズ
設定値
説
明
(バイト)
bLength 注1
bDescriptorType
bString
注1.
2.
注2
1
0x16
ディスクリプタのサイズ:22バイト
1
20
0x03
ディスクリプタの種類:ストリング
-
シリアル番号:0_98765432
bStringフィールドのサイズにより設定値が異なります。
ベンダにより任意に設定できる領域のため,サイズや設定値は一定ではありません。
(6) HID・ディスクリプタ
HID(ヒューマン・インタフェース・デバイス)ディスクリプタは,レポート・ディスクリプタ
およびフィジカル・ディスクリプタの数と形式を定義するためのディスクリプタです。
GET_DESCRIPTOR_HIDリクエストを受信すると,サンプル・ドライバはHIDディスクリプタを
コントロール・エンドポイントから送信します。
表 3−6 HID・ディスクリプタの設定
フィールド
サイズ
設定値
説
明
(バイト)
bLength
1
0x09
ディスクリプタのサイズ:9 バイト
bDescriptorType
1
0x21
ディスクリプタの種類:HID
bcdHID
2
0x0110
bCountryCode
1
0x00
地域識別番号:なし
bNumDescriptors
1
0x01
クラス・ディスクリプタ数:1
bDescriptorType
1
0x22
クラス従属ディスクリプタの種類:HID レポート
wDescriptorLength
2
0x002E
HID バージョン(BCD 表現)
クラス従属ディスクリプタのサイズ:46 バイト
(7) レポート・ディスクリプタ
レポート・ディスクリプタは,ホストとファンクション・デバイス間で送受信するデータ(HID
データ)の形式(レポート・プロトコル)を定義するためのディスクリプタです。
GET_DESCRIPTOR_Reportリクエストを受信すると,サンプル・ドライバはレポート・ディスク
リプタをコントロール・エンドポイントから送信します。
各アイテムの詳細についてはUniversal Serial Bus HID Usage Tables Version 1.12を参照して
ください。
アプリケーション・ノート ZUD-CB-09-0193
26
表 3−7 レポート・ディスクリプタの設定
値
3. 2
アイテム
設
定
0x05, 0x01
Usage Page
Generic Desktop
0x09, 0x06
Usage
Keyboard
0xA1, 0x01
Collection
Application
0x05, 0x07
Usage Page
Keyboard
0x19, 0xE0
Usage Minimum
LEFT CTRL
0x29, 0xE7
Usage Maximum
RIGHT GUI
0x15, 0x00
Logical Minimum
0
0x25, 0x01
Logical Maximum
1
0x95, 0x08
Report Size
8 ビット
0x75, 0x01
Report Count
1
0x81, 0x02
Input
Variable
0x95, 0x01
Report Count
1
0x75, 0x08
Report Size
8 ビット
0x81, 0x01
Input
Constant
0x95, 0x06
Report Count
6
0x75, 0x08
Report Size
8 ビット
0x15, 0x00
Logical Minimum
0
0x26, 0xFF, 0x00
Logical Maximum
255
0x05, 0x07
Usage Page
Keyboard
0x19, 0x00
Usage Minimum
0
0x29, 0x91
Usage Maximum
145
0x81, 0x00
Input
–
0xC0
End Collection
–
各部の動作
サンプル・ドライバを実行すると,次のような一連の処理を行います。ここでは,それぞれの処理に
ついて説明します。サンプル・アプリケーションの詳細は第4章 サンプル・アプリケーションの仕様を
参照してください。
27
アプリケーション・ノート ZUD-CB-09-0193
図 3-1 サンプル・ドライバの処理フロー
スタート
CPUの初期化
USBファンクション・コントローラの初期化
サンプル・アプリケーション実行
アプリケーション・ノート ZUD-CB-09-0193
28
3. 2. 1 CPU初期化処理
USBファンクション・コントローラを使用するために必要な項目を設定します。
図 3-2
CPU初期化の処理フロー
CPU初期化開始
クロック・ジェネレート設定
ポート設定
CPU初期化終了
(1) クロック・ジェネレート設定
CPUの内部クロックの動作を設定します。ここでは、5つのレジスタにアクセスします。
(a) CMC レジスタに “0x41” を書き込みます。この設定により、X1 発振モード、10MHz < fMX <=
20MHz が設定されます。
(b) CSC レジスタの MSTOP ビットに “0” を書き込みます。この設定により、X1 発振回路の動作を
開始させます。
(c) OSTC レジスタにより発振安定時間を確認します。
(d) PLLC レジスタに “0x01” を書き込みます。この設定により、PLL の動作を停止させます。
(e) CKC レジスタに “0x38” を書き込みます。この設定により、CPU/周辺ハードウエア・クロックを
メイン・システム・クロック(fMAIN)に、メイン・システム・クロックを高速システム・クロック(fMX)
に、分周比を fMX に設定します。
(f) CSC レジスタの HIOSTOP ビットに “1” を書き込みます。この設定により、高速内蔵発振回路を
停止させます。
(g) PLLC レジスタの PLLM ビットに “1” を書き込みます。この設定により、PLL への供給クロック
の逓倍率を 12 逓倍に設定します。
(h) PLLC レジスタの PLLSTOP ビットに “0” を書き込みます。この設定により、PLL の動作を開始
させます。
29
アプリケーション・ノート ZUD-CB-09-0193
(2) ポート設定
(a) スイッチに接続しているポートのプルアップオプションの設定を行います。P17、P43、P42、P70、
P71、P72、P73、P74 に”1 を”書き込みます。
(b) 常時シュミット入力タイプの端子がオープンになると貫通電流が流れる為、未使用端子にはリセ
ット解除後に処置が必要になります。サンプルドライバ(64pin 版の設定)では、P05、P06、P30、
P44、P46、P47、P54、P55、P65、P66、P67 に対して ”0” を書き込みます。
注意:48pin
の場合、上記端子に加え、P42、P43、P53、P74、P75、P77、P110、P142、P143 に
も処置が必要になります。
(c) LED の設定。PM2、PM5 、PM110、PM110 に ”0” を書き込みます。LED 消灯の為に、P2、P5
に ”0xff” を書き込みます。P110 に ”0” を書き込んだ後、”1 を”書き込み、LED(7SegA)を消灯さ
せます。次に、再び、P2、P5 に ”0xff” を書き込み、P111 に ”0” を書き込んだ後、”1 を”書き込
み、LED(7SegB)を消灯させます。
アプリケーション・ノート ZUD-CB-09-0193
30
3. 2. 2 USBファンクション・コントローラ初期化処理
USBファンクション・コントローラの使用を開始するために必要な項目を設定します。
図 3-3
USBファンクション・コントローラ初期化の処理フロー
USB初期化開始
USBクロック供給
D+信号未接続設定
USBバッファ無効・フローティング対策有効
コントロール・エンドポイントのNAK設定
リクエスト・データ・レジスタ領域の初期化
インタフェースとエンドポイント設定
コントロール・エンドポイントの
NAK設定の解除
割り込みマスク・レジスタの設定
ドライバ内部フラグの初期化
USBバッファ有効・フローティング対策無効
D+信号プルアップ設定
USB初期化終了
(1) USB クロック供給
UCKCレジスタに ”0x80” を設定し、USBファンクション・コントローラへUSBクロックを供給します。
31
アプリケーション・ノート ZUD-CB-09-0193
(2) D+信号未接続設定
UF0GPRレジスタに ”0x02” を設定し、ホスト側にデバイスが接続されていることを検知されないよう
にします。
(3) USB バッファ無効・フローティング対策有効
UF0BCレジスタに “0x00” を設定し、USBバッファ無効、フローティング対策有効に設定しUSBファン
クション・コントローラを動作不可にします。
(4) コントロール・エンドポイントの NAK 設定
すべてのリクエストに対するNAK応答の動作を切り替えます。ここではUF0E0NAレジスタのEP0NKA
ビットに "1" を書き込みます。この設定により,自動応答リクエストを含むすべてのリクエストに対し
てハードウエアがNAKで応答します。このビットは,自動応答リクエストで使用するデータの登録が完
了するまで,ハードウエアが自動応答リクエストに対して意図しないデータを返さないようにするため
に,ソフトウエアが使用します。
(5) リクエスト・データ・レジスタ領域の初期化
GET_DESCRIPTORリクエストに自動応答するためのディスクリプタ・データなどを各種レジスタに登
録します。ここでは次に示すレジスタにアクセスします。
(a) UF0DSTLレジスタに "0x02" を書き込みます。USBファンクション・コントローラはバス・パワ
ード・デバイスとして動作し、リモート・ウエイクアップ機能を使用する設定となります。
(b) UF0EnSLレジスタ(n = 0,7)に "0x00" を書き込みます。この設定により,Endpoint nが正常
に動作していることを示します。
(c) UF0DSCLレジスタに,必要なディスクリプタのデータ長の合計(バイト数)を書き込みます。
この設定により,使用されるUF0CIEnレジスタ(n = 0-255)の範囲が決まります。
(d) UF0DDnレジスタ(n = 0-7)にデバイス・ディスクリプタのデータを書き込みます。
(e) UF0CIEnレジスタ(n = 0-255)にコンフィギュレーション・ディスクリプタ,インタフェース・
ディスクリプタ,およびエンドポイント・ディスクリプタのデータを書き込みます。
(f) UF0MODCレジスタに "0x00" を書き込みます。この設定により,GET_DESCRIPTOR_
configurationリクエストへの自動応答が許可されます。
(6) インタフェースとエンドポイントの NAK 設定
サポートするインタフェースの数,オルタナティブ設定の状態,インタフェースとエンドポイントの関
係などの情報を各種レジスタに設定します。ここでは次に示すレジスタにアクセスします。
(a) UF0AIFNレジスタに "0x00" を書き込みます。この設定により,1つのインタフェースを有効にし
ます。
(b) UF0AASレジスタに "0x00" を書き込みます。この設定により,オルタナティブ設定を無効にしま
す。
(c) UF0E7IMレジスタに "0x20" を書き込みます。この設定により,Endpoint7がInterface0にリンクさ
れます。
(7) コントロール・エンドポイントの NAK 設定の解除
すべてのリクエストに対するNAK応答の動作を切り替えます。ここではUF0E0NAレジスタのEP0NKA
ビットに "0" を書き込みます。この設定により,自動応答リクエストを含むすべてのリクエストに対し
て,それぞれに応じた応答が再開されます。
(8) 割り込みマスク・レジスタの設定
USBファンクション・コントローラの割り込み要因ごとのマスクを設定します。ここでは次に示すレジ
スタにアクセスします。
アプリケーション・ノート ZUD-CB-09-0193
32
(a) UF0ICn レジスタ(n=0-7)に “0x00” を書き込みます。この設定により、すべての割り込み要因
がクリアされます。
(b) UF0FICn レジスタ(n=0, 1)に “0x00” を書き込みます。この設定により、すべての転送用 FIFO
がクリアされます。
(c) UF0IM0 レジスタに “0x3B” を書き込みます。この設定により、UF0IS0 レジスタに示される割り
込み要因のうち、BUSRST、RSUSPDM、SETRQ 割り込み以外の要因がすべてマスクされます。
(d) UF0IM1 レジスタに “0x7E” を書き込みます。この設定により、UF0IS1 レジスタに示される割り
込み要因のうち、CPUDEC 割り込み以外の要因がすべてマスクされます。
(e) UF0IM2 レジスタに “0xF3” を書き込みます。この設定により、UF0IS2 レジスタに示される割り
込み要因がすべてマスクされます。
(f) UF0IM3 レジスタに “0xFF” を書き込みます。この設定により、UF0IS3 レジスタに示される割り
込み要因がすべてマスクされます。
(g) UF0IM4 レジスタに “0xFF” を書き込みます。この設定により、UF0IS4 レジスタに示される割り
込み要因がすべてマスクされます。
(h) CPU の KRM レジスタに“0x03” を書き込みます。この設定により、キー割り込み信号を検出しま
す。
(i) CPU の USBIF ビットに “0” を書き込みます。この設定により、INTUSB 割り込みがクリアされま
す。
(j) CPU の RSUMIF ビットに “0” を書き込みます。この設定により、INTRSUM 割り込みがクリアさ
れます。
(k) CPU の KRIF ビットに “0” を書き込みます。
この設定により、INTKR 割り込みがクリアされます。
(l) CPU の USBMK ビットに “0” を書き込みます。この設定により、INTUSB 割り込みがマスク解除
されます。
(m) CPU の RSUMMK ビットに “0” を書き込みます。この設定により、INTRSUM 割り込みがマスク
解除されます。
(n) CPU の KRMK ビットに “0” を書き込みます。この設定により、INTKR 割り込みがマスク解除さ
れます。
(9) ドライバ内部フラグの初期化
D+信号からハイ・レベルを出力して,ホスト側にデバイスが接続されたことを通知します。サンプル・
ドライバでは図 3-4に示すような接続を想定し,次に示すレジスタにアクセスします。
33
アプリケーション・ノート ZUD-CB-09-0193
(10) USB バッファ有効・フローティング対策無効
UF0BCレジスタに “0x03” を設定し、USBバッファ有効、フローティング対策無効に設定しUSBファン
クション・コントローラを動作可能にします。
(11) D+信号プルアップ設定
UF0GPRレジスタに ”0x02” を設定し、ホスト側にデバイスが接続されたことを通知します。
図 3-4
USBファンクション・コントローラ接続例
EVDD
K0R/KC3-H
K0R/KE3-H
USBPUC
IC
CONNECT
UF0GPR
1.5 kΩ±5%
USBP
27 Ω±5%
USBM
27 Ω±5%
D+
D−
50 kΩ以上
(フローティング防止)
アプリケーション・ノート ZUD-CB-09-0193
34
3. 2. 3 INTUSB割り込み処理
USBファンクション・コントローラからの割り込み要求(INTUSB)は、初期化時にマスク解除された割
り込みについてのみ通知されます。必要な割り込みについては、初期化時にマスク解除してください。通
知された割り込みについて、それぞれ必要な処理を行います。
図 3-5
INTUSB割り込み処理フロー
INTUSB割り込み処理の開始
RSUSPD割り込みの処理
BUSRST割り込みの処理
SETRQ割り込みの処理
CPUDEC割り込みの処理
INTUSB割り込み処理の終了
(1) RSUSPD 割り込みの処理
Suspend/Resume 割り込みが発生した場合、通知されます。
以下の手順で処理を行います。
(a) この割り込みが Suspend 割り込みによって発生(UF0EPS1 が ”0x00” である事を確認)し、
usbf78k0r_usbstate_flg フラグの値が“0x04” (Configured 状態)であれば usbf78k0r_usbstate_flg
フラグに ”0x06”(Suspend 状態) を書き込みます。
(b) usbf78k0r_stop_mode()関数を呼び出します。
(2) BUSRST 割り込みの処理
Bus Resetが発生した場合、通知されます。
以下の手順で処理を行います。
(a) UF0IC0 レジスタに “0x7F” を書き込みます。この設定により、BUSRST 割り込みがクリアされま
す。
35
アプリケーション・ノート ZUD-CB-09-0193
(b) usbf78k0r_busrst_flg フラグに “1” を書き込みます。
(c) usbf78k0r_buff_init() 関数を呼び出します。
(3) SETRQ 割り込みの処理
自動処理対象のSET_XXXXリクエストを受信し、自動処理を行った場合、通知されます。
以下の手順で処理を行います。
(a) UF0IC0 レジスタに “0xFB” を書き込みます。この設定により、SETRQ 割り込みがクリアされま
す。
(b) UF0SET レジスタの SETCON ビットと UF0MODS レジスタの CONF ビットが共にセット (”1”)
されている事を確認します。共にセットされている場合、SET_CONFIGURATION リクエストに
より、CONFIGURATION が “1” に設定されていることを示します。
(c) usbf78k0r_busrst_flg フラグに “0” を書き込みます。この設定により、リセット状態から通常状態
に移行したことを通知します。
(4) CPUDEC 割り込みの処理
(a) UF0IC1 レジスタに “0xFD” を書き込みます。この設定により、PROT 割り込みがクリアされま
す。
(b) UF0E0ST レジスタを 8 回読み出し、リクエストデータを取り込んでデコードします。
(c) リクエストがクラス・リクエストなら、usbf78k0r_classreq() 関数を呼び出し、クラス・リクエ
スト処理を行います。
(d) リクエストがクラス・リクエストでなければ、usbf78k0r_standardreq() 関数を呼び出し、標準リ
クエスト処理を行います。
アプリケーション・ノート ZUD-CB-09-0193
36
関数の仕様
3. 3
ここでは,サンプル・ドライバに実装されている各種関数について説明します。
3. 3. 1 関数一覧
サンプル・ドライバでは,ソース・ファイルそれぞれに次のような関数が実装されています。
表 3-8 サンプル・ドライバ内の関数
ソース・ファイル
main.c
usbf78k0r.c
関数名
説明
cpu_init
CPUの初期化
main
メイン・ルーチン
usbf78k0r_init
USBファンクション・コントローラの初期化
usbf78k0r_intusbf0
INTUSB割り込み処理
usbf78k0r_intkr
INTKR割り込み処理
usbf78k0r_intrsum
INTRSUM処理
usbf78k0r_stop_mode
STOPモード処理
usbf78k0r_standardreq
標準リクエスト処理
usbf78k0r_getdesc
GET_DESCRIPTOR(String、HID、Report)処理
usbf78k0r_send_EP0
Endpoint0の送信処理
usbf78k0r_receive_EP0
Endpoint0の受信処理
usbf78k0r_sendnullEP0
Endpoint0のNULLパケット送信処理
usbf78k0r_sendstallEP0
Endpoint0のSTALL応答処理
バルク/インタラプト・イン・エンドポイントのFIFO状態
usbf78k0r_ep_status
通知処理
バルク/インタラプト・イン・エンドポイントのNULLパケ
usbf78k0r_send_null
usbf78k0r_hid.c
37
ット送信処理
usbf78k0r_data_send
バルク/インタラプト・イン・エンドポイントの送信処理
usbf78k0r_classreq
HIDクラス・リクエスト処理関数
usbf78k0r_get_report
Get Reportリクエストの処理
usbf78k0r_get_idle
Get Idleリクエストの処理
usbf78k0r_get_protocol
Get Protocolリクエストの処理
usbf78k0r_set _report
Set Reportリクエストの処理
usbf78k0r_set_idle
Set Idleリクエストの処理
usbf78k0r_set_protocol
Set Protocolリクエストの処理
アプリケーション・ノート ZUD-CB-09-0193
3. 3. 2 関数の相関関係
関数によっては,処理の中で別の関数を呼び出しているものもあります。関数の呼び出し関係を次
に示します。
図 3-6 メイン・ルーチンでの関数の呼び出し
main
init
cpu init
usbf78k0r init
usbf78k0r data send
アプリケーション・ノート ZUD-CB-09-0193
38
図 3-7
USBファンクション・コントローラ用処理での関数の呼び出し
usbf78k0r intusb
usbf78k0r stop mode
usbf78k0r sendstallEP0
usbf78k0r classreq
usbf78k0r get report
usbf78k0r get idle
usbf78k0r get protocol
usbf78k0r set report
usbf78k0r set idle
usbf78k0r set protocol
usbf78k0r standardreq
usbf78k0r sendstallEP0
usbf78k0r getdesc
usbf78k0r sendstallEP0
usbf78k0r send EP0
usbf78k0r sendstallEP0
39
アプリケーション・ノート ZUD-CB-09-0193
図 3-8
USB HID・クラス用処理での関数の呼び出し(1)
usbf78k0r classreq
usbf78k0r get report
usbf78k0r sendstallEP0
usbf78k0r send EP0
usbf78k0r sendnullEP0
usbf78k0r get idle
usbf78k0r send EP0
usbf78k0r sendnullEP0
usbf78k0r get protocol
usbf78k0r sendstallEP0
usbf78k0r set report
usbf78k0r sendstallEP0
usbf78k0r set idle
usbf78k0r sendnullEP0
usbf78k0r sendstallEP0
usbf78k0r set protocol
usbf78k0r sendstallEP0
アプリケーション・ノート ZUD-CB-09-0193
40
3. 3. 3 関数の機能
ここでは,サンプル・ドライバに実装されている各種関数について解説します。
(1) 関数解説フォーマット
解説は,関数ごとに次の形式で記述されます。
関数名称
【概要】
概要説明
【C言語記述形式】
C言語上の記述形式
【パラメータ】
パラメータ(引数)の説明
パラメータ
パラメータ型,名称
説
明
説
明
パラメータ概要説明
【戻り値】
戻り値の説明
シンボル
戻り値型,名称
戻り値概要説明
【機能】
機能説明
41
アプリケーション・ノート ZUD-CB-09-0193
メイン・ルーチンの関数
main
【概要】
メイン処理
【C言語記述形式】
void main(void)
【パラメータ】
なし
【戻り値】
なし
【機能】
サンプル・ドライバを実行すると最初に呼び出される関数です。CPUの初期化処理、USB
ファンクション・コントローラの初期化処理、および、サンプル・アプリケーション処理を
順に実行します。
アプリケーション・ノート ZUD-CB-09-0193
42
cpu_init
【概要】
CPU初期化処理
【C言語記述形式】
void cpu_init(void)
【パラメータ】
なし
【戻り値】
なし
【機能】
メイン処理で呼び出される関数です。
クロック周波数や動作モードなど、78K0R/Kx3でUSBファンクション・コントローラを使
用するために必要な項目を設定します。
43
アプリケーション・ノート ZUD-CB-09-0193
USBファンクション・コントローラ用処理の関数
usbf78k0r_init
【概要】
USBファンクション・コントローラ初期化処理
【C言語記述形式】
void usbf78k0r_init(void)
【パラメータ】
なし
【戻り値】
なし
【機能】
初期化処理で呼び出される関数です。
割り込み要求のマスクなど、USBファンクション・コントローラの使用を開始するため
に必要な項目を設定します。
アプリケーション・ノート ZUD-CB-09-0193
44
usbf78k0r_intusb
【概要】
INTUSB割り込み処理
【C言語記述形式】
__interrupt void usbf78k0r_intusb (void)
【パラメータ】
なし
【戻り値】
なし
【機能】
INTUSB割り込みにより呼び出される割り込みサービスルーチンです。
USBファンクション・コントローラのマスクされていない割り込みについて、割り込み
要求を確認しながら、発生している割り込みについて処理を行います。
45
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_intkr
【概要】
INTKR割り込み処理
【C言語記述形式】
__interrupt void usbf78k0r_intkr (void)
【パラメータ】
なし
【戻り値】
なし
【機能】
INTKR割り込みにより呼び出される割り込みサービスルーチンです。
キーを押された事を示すフラグを更新します。
アプリケーション・ノート ZUD-CB-09-0193
46
usbf78k0r_rsum
【概要】
INTRSUM割り込み処理
【C言語記述形式】
__interrupt void usbf78k0r_rsum(void)
【パラメータ】
なし
【戻り値】
なし
【機能】
INTRSUM割り込みにより呼び出される割り込みサービスルーチンです。
レジューム信号が発生された事を示すフラグを更新します。
47
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_stop_mode
【概要】
Suspend時にStopモードに入る為の処理
【C言語記述形式】
void usbf78k0r_stop_mode (void)
【パラメータ】
なし
【戻り値】
なし
【機能】
INTUSB割り込み処理のCPUDEC割り込み要因の処理から呼び出される関数です。
USBクロック等を停止して、STOPモードに入ります。INTRSUM割り込み、INTKR割り
込みにより解除されます。
アプリケーション・ノート ZUD-CB-09-0193
48
usbf78k0r_standardreq
【概要】
USBファンクション・コントローラが自動応答しない標準リクエストの処理
【C言語記述形式】
void usbf78k0r_standardreq (USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
INTUSB割り込み処理のCPUDEC割り込み要因の処理から呼び出される関数です。
デコードされたリクエストがGET_DESCRIPTORの場合、GET_DESCRIPTORリクエス
ト処理関数(usbf78k0r_getdesc)を呼び出します。それ以外のリクエストの場合は、
Endpoint0用STALL応答処理関数(usbf78k0r_sendstallEP0)を呼び出します。
49
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_getdesc
【概要】
GET_DESCRIPTORリクエスト処理
【C言語記述形式】
void usbf78k0r_getdesc (USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
USBファンクション・コントローラが自動応答しない標準リクエストの処理で呼び出さ
れる関数です。デコードされたリクエストがストリング・ディスクリプタを要求している
場合、Endpoin0用USBデータ送信関数(usbf78k0r_send_EP0)を呼び出して、Endpoint0
からストリング・ディスクリプタを送信させます。それ以外のディスクリプタを要求して
いる場合は、Endpoint0用STALL応答処理関数(usbf78k0r_sendstallEP0)を呼び出しま
す。
アプリケーション・ノート ZUD-CB-09-0193
50
usbf78k0r_send_EP0
【概要】
Endpoint0用USBデータ送信処理
【C言語記述形式】
INT32 usbf78k0r_send_EP0(UINT8* data, INT32 len)
【パラメータ】
パラメータ
UINT8* data
INT32 len
【戻り値】
説明
送信データ・バッファ・ポインタ
送信データサイズ
シンボル
説明
DEV_OK
正常終了
DEV_ERROR
異常終了
【機能】
送信データ・バッファに格納されているデータをEndpoint0用送信FIFOに1バイトずつ格
納します。
51
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_receive_EP0
【概要】
Endpoint0用USBデータ受信処理
【C言語記述形式】
INT32 usbf78k0r_receive_EP0(UINT8* data, INT32 len)
【パラメータ】
パラメータ
UINT8* data
INT32 len
【戻り値】
説明
受信データ・バッファ・ポインタ
受信データサイズ
シンボル
説明
DEV_OK
正常終了
DEV_ERROR
異常終了
【機能】
Endpoint0用受信FIFOから1バイトずつ読み出し、受信データ・バッファに格納します。
アプリケーション・ノート ZUD-CB-09-0193
52
usbf78k0r_sendnullEP0
【概要】
Endpoint0用NULLパケット送信処理
【C言語記述形式】
void usbf78k0r_sendnullEP0(void)
【パラメータ】
なし
【戻り値】
なし
【機能】
Endpoint0用の送信FIFOをクリアし、データ終了を示すビットをセット(1)することで、
USBファンクション・コントローラからNULLパケットを送信させます。
53
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_sendstallEP0
【概要】
endpoint0用STALL応答処理
【C言語記述形式】
void usbf78k0r_sendstallEP0(void)
【パラメータ】
なし
【戻り値】
なし
【機能】
Endpoint0用のSTALLハンドシェーク使用を示すビットをセット (1)することで、USBフ
ァンクション・コントローラからSTALL応答させます。
アプリケーション・ノート ZUD-CB-09-0193
54
usbf78k0r_ep_status
【概要】
バルク / インタラプト・イン・エンドポイント用FIFO状態通知処理
【C言語記述形式】
INT32 usbf78k0r_ep_status(INT8 ep)
【パラメータ】
パラメータ
説明
データ送信エンドポイント番号
INT8 ep
【戻り値】
シンボル
説明
DEV_OK
正常終了(FIFO empty)
DEV_ERROR
異常終了(FIFO full)
DEV_RESET
Bus Reset処理中
【機能】
指定されたエンドポイント(送信用)のFIFO状態を通知します。
55
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_send_null
【概要】
バルク / インタラプト・イン・エンドポイント用NULLパケット送信処理
【C言語記述形式】
INT32 usbf78k0r_send_null(INT8 ep)
【パラメータ】
パラメータ
説明
データ送信エンドポイント番号
INT8 ep
【戻り値】
シンボル
説明
DEV_OK
正常終了
DEV_ERROR
異常終了
【機能】
指定されたエンドポイント(送信用)のFIFOをクリアし、データ終了を示すビットをセッ
ト(1)することで、USBファンクション・コントローラからNULLパケットを送信させます。
アプリケーション・ノート ZUD-CB-09-0193
56
usbf78k0r_data _send
【概要】
バルク / インタラプト・イン・エンドポイント用USBデータ送信処理
【C言語記述形式】
INT32 usbf78k0r_data_send(UINT8* data, INT32 len, INT8 ep)
【パラメータ】
パラメータ
説明
UINT8* data
送信データ・バッファ・ポインタ
INT32 len
送信データサイズ
データ送信エンドポイント番号
INT8 ep
【戻り値】
シンボル
説明
len ( >= 0 )
正常に送信したデータサイズ
DEV_ERROR
異常終了
【機能】
送信データ・バッファに格納されているデータを指定されたエンドポイント用の送信
FIFOに1バイトずつ格納します。
57
アプリケーション・ノート ZUD-CB-09-0193
USBヒューマン・インタフェース・デバイス・クラス用処理の関数
usbf78k0r_classreq
【概要】
クラス・リクエストの処理
【C言語記述形式】
void usbf78k0r_classreq(USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
INTUSB割り込み処理のCPUDEC割り込み要因の処理から呼び出される関数です。
デコードされたリクエストがヒューマン・インタフェース・デバイス・クラスのリクエス
トの場合、各リクエスト処理関数を呼び出します。それ以外のリクエストの場合は、
Endpoint0用STALL応答処理関数(usbf78k0r_sendstallEP0)を呼び出します。
アプリケーション・ノート ZUD-CB-09-0193
58
usbf78k0r_get_report
【概要】
Get Reportリクエスト処理
【C言語記述形式】
void usbf78k0r_get_report (USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
クラス・リクエストの処理でデコードされたリクエストが Get Report リクエストだった
場合、呼び出される関数です。レポート ID が 0 のリクエストを受信した場合のみ,現在
記録されているキー・コードを Endpoint0 から送信します。それ以外は,STALL 応答し
ます。
59
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_get_idle
【概要】
Get Idleリクエスト処理
【C言語記述形式】
void usbf78k0r_get_idle(USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
リクエストデータ格納ポインタ・アドレス
【戻り値】
なし
【機能】
クラス・リクエストの処理でデコードされたリクエストが Get Idle だった場合、呼
び出される関数です。アイドル率を Endpoint0 から送信します。サンプル・ドライ
バのアイドル率は 0 固定(変化があったときだけ送信)です。
アプリケーション・ノート ZUD-CB-09-0193
60
usbf78k0r_get_protocol
【概要】
Get Protocolリクエスト処理
【C言語記述形式】
void usbf78k0r_get_protocol(USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
クラス・リクエストの処理でデコードされたリクエストがGet Protocolだった場合、呼び
出される関数です。STALL応答します。
61
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_set_report
【概要】
Set Reportリクエスト処理
【C言語記述形式】
void usbf78k0r_set_report (USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
クラス・リクエストの処理でデコードされたリクエストがSet Reportだった場合、呼び出
される関数です。STALL応答します。
アプリケーション・ノート ZUD-CB-09-0193
62
usbf78k0r_set_idle
【概要】
Set Idleリクエスト処理
【C言語記述形式】
void usbf78k0r_set_idle(USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
クラス・リクエストの処理でデコードされたリクエストがSet Reportだった場合、呼び出され
る関数です。ホストが送信したアイドル率が0の時、Nullパケットを送信し、それ以外の時に
は、STALL応答します。
63
アプリケーション・ノート ZUD-CB-09-0193
usbf78k0r_set_protocol
【概要】
Set Protocolリクエスト処理
【C言語記述形式】
void usbf78k0r_set_protocol(USB_SETUP *req_data)
【パラメータ】
パラメータ
説明
USB_SETUP *req_data
【戻り値】
なし
リクエストデータ格納ポインタ・アドレス
【機能】
クラス・リクエストの処理でデコードされたリクエストがSet Protocolだった場合、呼び出さ
れる関数です。STALL応答します。
アプリケーション・ノート ZUD-CB-09-0193
64
第4章 サンプル・アプリケーションの仕様
この章では,サンプル・ドライバに含まれるサンプル・アプリケーションについて説明します。
4. 1
概
要
サンプル・アプリケーションは、USBヒューマン・インタフェース・デバイス・クラス用ドライバの利
用の簡単な例として用意されたもので、サンプル・ドライバのメイン・ルーチンに組み込まれています。
このサンプル・アプリケーションは、TK-78K0R/KE3L+USB ボード上のスイッチSW2(PUSH)、が
押された時にアルファベット「a」~「z」を送信、SW2(UP)が押された時に「Enter」を送信する処理
を実行します。この処理の過程で、サンプル・ドライバの各種関数を利用します。
4. 2
動
作
サンプル・アプリケーションでは,次のようなフローで一連の処理が行われます。
65
アプリケーション・ノート ZUD-CB-09-0193
図 4-1 サンプル・アプリケーションの処理フロー
サンプル・アプリケーション処理の開始
SW2が押された?
SW2のUPが押され、
NO
NO
離された?
YES
アルファベット・キーデータ送信処理
アルファベット・キーデータの更新
SW2 PUSHが押され、
NO
離された?
YES
Enterキーデータ送信処理
アルファベット・キーデータの更新
キー監視フラグの更新
(1) SW2 が押されたかを確認
TK-78K0R/KE3L+USB ボード上のスイッチSW2のUP、またはSW2のPUSHが押されたかを、キー
押下確認用フラグ(usbf78k0r_keytouch_flg)によって確認し、フラグの値が ”1” であれば、キーデ
ータ送信処理へと進み、フラグの値が ”0” であれば何もしません。
(2) SW2 の UP が押されたのかの確認
P70が “0” であれば、SW2のUPが押されたと判断し、離されるまで待ちます。
アプリケーション・ノート ZUD-CB-09-0193
66
(3) アルファベット・キーデータ送信処理
usbf78k0r_ep_status関数で送信用エンドポイントのFIFOが空である事を確認し、アルファベット・
キーデータとリリース・キーデータをusbf78k0r_data_send関数で送信します。
(4) アルファベット・キーデータ情報更新
アルファベット・キーデータを更新(トグル)します。キーデータが「z」であれば「a」にします。
(5) SW2 の PUSH が押されたのかの確認
P71が “0” であれば、SW2のPUSHが押されたと判断し、離されるまで待ちます。
(6) Enter キーデータ送信処理
usbf78k0r_ep_status関数で送信用エンドポイントのFIFOが空である事を確認し、Enterキーデータ
とリリース・キーデータをusbf78k0r_data_send関数で送信します。
(7) アルファベット・キーデータ情報更新
アルファベット・キーデータを更新(「a」に戻す)します。
(8) キー押下確認用フラグ更新
キー押下確認用フラグ(usbf78k0r_keytouch_flg)を更新( ”0x00” に設定)します。
4. 3
関数の利用
このサンプル・アプリケーションを含むソース・ファイル "main.c" では,サンプル・ドライバの関数
を利用するために次のように記述しています。なお,各関数の詳細は3. 3 関数の仕様を参照してくだ
さい。
(1) 各種定義と宣言
サンプル・ドライバの関数を使用するため、”usbf78k0r.h” ヘッダ・ファイルをインクルードして
います。また、キーデータ格納用配列(keycode)を用意しています。
(2) CPU 初期化処理
CPU初期化処理関数(cpu_init)を呼び出します。
(3) USB ファンクション・コントローラ初期化処理
USBファンクション・コントローラ初期化処理関数(usbf78k0r_init)を呼び出します。
(4) FIFO 状態確認
67
アプリケーション・ノート ZUD-CB-09-0193
FIFO状態確認用関数(usbf78k0r_ep_status)でFIFOの状態を確認します。
(5) データ送信処理
データ、データのサイズ、エンドポイントを指定して、データ送信関数(usbf78k0r_data_send)
でデータを送信します。
リスト 4-1 サンプル・アプリケーションの記述(部分)
void main( void )
{
UINT8 keycode[REPORT_DATA_LENGTH];
UINT8 keydata = A_KEY;
init();
memset(keycode, 0, sizeof(keycode));
usbf78k0r_keytouch_flg = F_SW_OFF;
/* Key Data Clear */
/* Key Flag Clear */
while(1)
{
if ( usbf78k0r_keytouch_flg == F_SW_ON ) {
if((P7 & 0x01) == 0x00) {/* SW2 UP */
while((P7 & 0x01) == 0x00){
/* SW2 OFF WAIT */
}
keycode[KEY1_SCAN_CODE] = keydata; /* Press Key Data */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
memset(keycode, 0, sizeof(keycode));
/* Release Key Data */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
keydata++;
/* a to z */
if(keydata == EXCLAMATION_KEY) {
keydata = A_KEY;
}
}
if((P7 & 0x02) == 0x00) {/* SW2 PUSH */
while((P7 & 0x02) == 0x00){
/* SW2 OFF WAIT */
}
keycode[KEY1_SCAN_CODE] = ENTER_KEY;/* Press Key Data(Enter) */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
memset(keycode, 0, sizeof(keycode));
/* Release Key Data */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
keydata = 0x04;
}
usbf78k0r_keytouch_flg = F_SW_OFF;
}
}
}
アプリケーション・ノート ZUD-CB-09-0193
68
第5章 開発環境
この章では,78K0R/Kx3-L向けUSBヒューマン・インタフェース・デバイス・クラス用サンプル・ドラ
イバを利用したアプリケーション・プログラムを開発する際の環境構築の例と,そこでのデバッグの手順
について説明します。
5. 1
開発環境
ここでは,ハードウエア・ツールとソフトウエア・ツールの製品構成例を示します。
5. 1. 1 プログラム開発
サンプル・ドライバを利用したシステムを開発する際には,次のようなハードウエアとソフトウエ
アが必要です。
表 5-1 プログラム開発環境構成例
構成品
製品例
備
考
PC/AT互換機 (OS : Windows XP)
ハードウエア
ホスト・マシン
-
ソフトウエア
統合開発ツール
PM+
V6.31
コンパイラ
CC78K0R
W2.12
アセンブラ
RA78K0R
W1.33
5. 1. 2 デバッグ
サンプル・ドライバを利用したシステムをデバッグする際には,次のようなハードウエアとソフト
ウエアが必要です。
表 5-2 デバッグ環境構成例
ハードウエア
構成品
製品例
備
ホスト・マシン
-
PC/AT互換機 (OS : Windows XP)
ターゲット
TK-78K0R/KE3L+USB
インサーキット・エミュレータ
MINICUBE2
USBケーブル
ソフトウエア
ファイル
-
注1.
2.
69
miniBコネクタ・Aコネクタ
統合開発ツール
PM+
V6.31
デバッガ
ID78K0R-QB
V3.60
デバイス・ファイル
DF78102664.78K
78K0R/Kx3-L用
プロジェクト関連ファイル
-
考
注1
製品や入手方法については弊社までお問い合わせください。
PM+で構築した場合のファイルがサンプル・ドライバに同梱されています。
アプリケーション・ノート ZUD-CB-09-0193
5. 2
環境設定
ここでは,5. 1 開発環境に示した製品構成で開発やデバッグを行うための準備について説明します。
5. 2. 1 ホスト環境整備
ホスト・マシン上に専用のワークスペースを作成します。
統合開発ツールのインストール
PM+をインストールします。詳細はPM+のユーザーズ・マニュアルを参照してください。
ドライバ類のダウンロード
サンプル・ドライバの提供ファイル一式を,フォルダ構成を変えずに任意のディレクトリに格納
します。また,デバイス・ドライバを任意のディレクトリに格納します。
図 5-1 サンプル・ドライバのフォルダ構成
任意フォルダ
include
NEC_project
src
インクルード
・ファイル格納フォルダ
納フォルダ
NECコンパイラ用プロジェクト格
ソース・ファイル格納フォルダ
アプリケーション・ノート ZUD-CB-09-0193
70
ワークスペースの設定
ここではサンプル・ドライバに同梱のプロジェクト関連ファイルを使用する場合の手順を示しま
す。
<1> PM+を起動し,「ファイル」メニューから「ワークスペースを開く」を選択します。
<2> 「ワークスペースを開く」ダイアログが開きます。サンプル・ドライバを格納したディレク
トリの「NEC_project」フォルダにあるワークスペース・ファイルを指定します。
71
アプリケーション・ノート ZUD-CB-09-0193
デバイス・ファイルのインストール
ここでは78K0R/Kx3-L用のデバイス・ファイルを使用する場合の手順を示します。
<1> PM+の「プロジェクト」メニューから「プロジェクトの設定」を選択します。
<2> 「プロジェクトの設定」ダイアログが開きます。「プロジェクト情報」タブの「デバイス登
録」ボタンを押下してDevice File Installerを起動します。
アプリケーション・ノート ZUD-CB-09-0193
72
<3> 「Device File Installer」ダイアログが開きます。「インストール」ボタンを押下してインス
トール・ウィザードを起動します。
<4> 「インストール情報ファイルの指定」ダイアログが開きます。
「参照」ボタンを押下します。
73
アプリケーション・ノート ZUD-CB-09-0193
<5> 「ファイルを開く」ダイアログが表示されます。デバイス・ファイルを格納したディレクト
リを開き,"NECSETUP.INI" ファイルを選択して「開く」ボタンを押下します。
<6> 使用許諾に関するメッセージが表示されます。「次へ」ボタンを押下します。
<7> 「ファイルの種類の選択」ダイアログが開きます。該当するデバイス・ファイルを選択して
「次へ」ボタンを押下します。
※ 画面は開発途中のものであり、実際の画面とは異なる事があります。
アプリケーション・ノート ZUD-CB-09-0193
74
<8>
「インストール先の指定」ダイアログが開きます。パスが表示されていますので,そのまま「次
へ」ボタンを押下します。
<9> 「インストール開始」ダイアログが開きます。「次へ」ボタンを押下します。
※ 画面は開発途中のものであり、実際の画面とは異なる事があります。
75
アプリケーション・ノート ZUD-CB-09-0193
<10> デバイス・ファイルがプロジェクトにインストールされます。環境により,時間がかかる
場合があります。
<11> インストールが終わると「インストール終了」ダイアログが開きます。「完了」ボタンを
押下します。
ビルド・ツールの設定
ここではビルド・ツールとしてCC78K0R、RA78K0Rを,デバッグ・ツールとしてID78K0R-QB
を使用する場合の手順を示します。
<1> PM+の「プロジェクト」メニューから「プロジェクトの設定」を選択します。
アプリケーション・ノート ZUD-CB-09-0193
76
<2> 「プロジェクトの設定」ダイアログが開きます。「ツールバージョン設定」タブの「詳細設
定」ボタンを押下します。
<3> 「ツールバージョン詳細設定」ダイアログが開きます。「CC78K0R」「RA78K0R」の欄で
使用するコンパイラのバージョンを,「ID78K0R-QB」の欄で使用するデバッガのバージョ
ンを選択し「OK」ボタンを押下します。
77
アプリケーション・ノート ZUD-CB-09-0193
5. 2. 2 ターゲット環境整備
デバッグに使用するターゲット・デバイスを接続します。
(1) ターゲット・デバイスの接続
TK-78K0R/KE3L+USBの2つのUSBポートとホスト・マシンのUSBポートをUSBケーブルでそれ
ぞれ接続します。
図 5-2 TK-78K0R/KE3L+USBの接続
USB2:デバッグ・ポート
USB1:78K0R USBポート
備考 TK-78K0R/KE3L+USBの外形やポートについては,付録A スタータ・キットを参照してください。
5. 3
オンチップ・デバッグ
ここでは,5. 2 環境設定に示したワークスペースで開発したアプリケーション・プログラムのデバ
ッグ手順について説明します。
78K0R/Kx3-Lでは,内蔵のフラッシュ・メモリにプログラムを書き込み,デバッガなどから直接実
行させて動作を検証すること(オンチップ・デバッグ)が可能です。
5. 3. 1 ロード・モジュール生成
ターゲット・デバイスにプログラムを書き込むには,C言語やアセンブリ言語で記述されたファイル
をCコンパイラなどで変換してロード・モジュールを生成します。
アプリケーション・ノート ZUD-CB-09-0193
78
PM+では,「ビルド」メニューから「リビルド」を選択すると,ロード・モジュールが生成されま
す。
5. 3. 2 ロードと実行
生成したロード・モジュールをターゲットに書き込んで(ロード)実行させます。
(2) ロード・モジュールの書き込み
ここではPM+を介してTK-78K0R/KE3L+USBにロード・モジュールを書き込む手順を示します。
<1> 「ビルド」メニューから「デバッグ」を選択してID78K0R-QBを起動します。
79
アプリケーション・ノート ZUD-CB-09-0193
<2> 「Configuration」ダイアログが開きます。「OK」ボタンを押下して下さい。
<3> サンプル・ドライバに同梱のプロジェクト・ファイルを使用している場合は,次の画面が表
示されます。「はい」ボタンを押下してロード・モジュール・ファイルの書き込みを開始さ
せます。
アプリケーション・ノート ZUD-CB-09-0193
80
プログラムの実行
ID78K0R-QBの
択します。
81
ボタンを押下します。または「実行」メニューから「継続して実行」を選
アプリケーション・ノート ZUD-CB-09-0193
5. 4
動作確認
サンプル・ドライバをロードしたターゲット・デバイスとホスト・マシンがUSBで接続されていれば,
ドライバ内のサンプル・アプリケーションの実行結果を確認できます。
ホスト上でエディタ・ソフト(メモ帳など)を起動し,動作を確認してください。TK-78K0R/KE3L+USB
上のSW2のPUSHで「Enter」キーを,UPでアルファベット「a」~「z」を順次トグルして(「z」の次
は「a」)、送信します。
備考 サンプル・アプリケーションの詳細は第4章 サンプル・アプリケーションの仕様を参照してく
ださい。
アプリケーション・ノート ZUD-CB-09-0193
82
第6章 サンプル・ドライバの応用
この章では,78K0R/Kx3-L向けUSBヒューマン・インタフェース・デバイス・クラス用サンプル・ドラ
イバを利用する際に,知っておいていただきたい情報について説明します。
6. 1
概
要
サンプル・ドライバの利用には,主に次の2つの方法が考えられます。
(1) カスタマイズ
次に示す部分を必要に応じて書き換えます。
・ ”main.c” ファイル内のサンプル・アプリケーション部
・ “usbf78k0r.h” ファイル内の各種レジスタの設定値
・ “usbf78k0r_desc.h” ファイル内の各種ディスクリプタの内容
備考 サンプル・ドライバのファイル構成については1.1.3 サンプル・ドライバの構成 を参照して
ください。
(2) 関数の利用
アプリケーション・プログラム内で必要に応じて呼び出します。実装されている関数の詳細は 3.3
関数の仕様 を参照してください。
83
アプリケーション・ノート ZUD-CB-09-0193
6. 2
カスタマイズ
ここでは,サンプル・ドライバの利用にあたり,必要に応じて書き換える部分について説明します。
6. 2. 1 アプリケーション部
“main.c” ファイルの次に示す部分は、サンプル・ドライバの利用例として簡単な処理を記述したもので
す。実際にアプリケーションで使用する処理をこの部分に記述することで、その前後の初期化処理や送受
信処理をそのまま利用できます。
リスト 6-1 サンプル・アプリケーションの記述
void main( void )
{
UINT8 keycode[REPORT_DATA_LENGTH];
UINT8 keydata = A_KEY;
init();
memset(keycode, 0, sizeof(keycode));
usbf78k0r_keytouch_flg = F_SW_OFF;
/* Key Data Clear */
/* Key Flag Clear */
while(1)
{
if ( usbf78k0r_keytouch_flg == F_SW_ON ) {
if((P7 & 0x01) == 0x00) {/* SW2 UP */
while((P7 & 0x01) == 0x00){
/* SW2 OFF WAIT */
}
keycode[KEY1_SCAN_CODE] = keydata; /* Press Key Data */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
memset(keycode, 0, sizeof(keycode));
/* Release Key Data */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
keydata++;
/* a to z */
if(keydata == EXCLAMATION_KEY) {
keydata = A_KEY;
}
}
if((P7 & 0x02) == 0x00) {/* SW2 PUSH */
while((P7 & 0x02) == 0x00){
/* SW2 OFF WAIT */
}
keycode[KEY1_SCAN_CODE] = ENTER_KEY;/* Press Key Data(Enter) */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
memset(keycode, 0, sizeof(keycode));
/* Release Key Data */
while (usbf78k0r_ep_status(C_INT1) != DEV_OK) {}
usbf78k0r_data_send(keycode, sizeof(keycode), C_INT1);
keydata = 0x04;
}
usbf78k0r_keytouch_flg = F_SW_OFF;
}
}
}
アプリケーション・ノート ZUD-CB-09-0193
84
6. 2. 2 レジスタの設定
サンプル・ドライバが使用する(書き込みを行う)レジスタの設定値は、”usbf78k0r.h” ファイルに定
義されています。これらのファイル内の値を実際のアプリケーションでの使用法に合わせて書き換えるこ
とで、サンプル・ドライバを通してターゲット・デバイスの動作を設定できます。
6. 2. 3 ディスクリプタの内容
初期化処理時にサンプル・ドライバがUSBファンクション・コントローラに登録するデータ(3. 1. 3 デ
ィスクリプタの設定参照)が "usbf78k0r_desc.h" ファイルに定義されています。このファイル内の値
を実際のアプリケーションでの使用法に合わせて書き換えることで,サンプル・ドライバを通してター
ゲット・デバイスの属性などの情報を設定できます。
また,ストリング・ディスクリプタには任意の情報を登録できます。サンプル・ドライバでは製造元
や製品情報を定義していますので,適宜書き換えてください。
6. 3
関数の利用
使用頻度と汎用性の高い処理が定義済みの関数として用意されていますので、アプリケーションの記
述を単純化でき、コード・サイズの節減にもつながります。各関数の詳細は 3. 3 関数の仕様 を参照し
てください。
85
アプリケーション・ノート ZUD-CB-09-0193
第7章 スタータ・キット
この章では,テセラ・テクノロジー社製の78K0R/Kx3-L向けスタータ・キット TK-78K0R/KE3L+USBに
ついて説明します。
7. 1
概
要
TK-78K0R/KE3L+USBは,78K0R/KE3-Lを使用したアプリケーション・システムの開発を体験できる
キットです。ホスト・マシンに開発ツールやUSBドライバをインストールしてこのキットをUSB接続す
るだけで,プログラム作成からビルド,デバッグ,動作確認といった一連の開発フローに対応できます。
このキットではモニタ・プログラムを使用しており,エミュレータを接続しない状態でのデバッグ(オ
ンチップ・デバッグ)を実現します。
図 7-1 TK-78K0R/KE3L+USBの接続イメージ
USB2:デバッグ・ポート
USB1:78K0RUSBポート
7. 1. 1 特
徴
TK-78K0R/KE3L+USBには次のような特徴があります。
・ 内蔵USBファンクション・コントローラ用USB miniBコネクタを装備
・ コンパクトな名刺サイズ
・ 統合開発環境(PM+)と組み合わせて効率的な開発を実現
アプリケーション・ノート ZUD-CB-09-0193
86
7. 2
主な仕様
TK-78K0R/KE3Lの主な仕様は次のとおりです。
○CPU
μ PD78F1026(78K0R/KE3-L)
○動作周波数
20 MHz(USB:48 MHz)
○インタフェース USBコネクタ(miniB)×2基
MINICUBE2用コネクタ
周辺ボード・コネクタ 2基(パットのみ)
○対応機種
ホスト・マシン:USBインタフェース付きDOS/V機
OS:Windows XP
○動作電圧
5.0 V(内部動作3.3 V)
○本体寸法
W89×D52(mm)
87
アプリケーション・ノート ZUD-CB-09-0193
〔メ
モ〕
アプリケーション・ノート ZUD-CB-09-0193
88
【発 行】
NECエレクトロニクス株式会社
〒211-8668 神奈川県川崎市中原区下沼部1753
電話(代表):044(435)5111
お問い合わせ先
【ホームページ】
NECエレクトロニクスの情報がインターネットでご覧になれます。
URL(アドレス)
http://www.necel.co.jp/
営業関係,技術関係お問い合わせ先】
半導体ホットライン
(電話:午前 9:00~12:00,午後 1:00~5:00)
電
話 :044-435-9494
E-mail :[email protected]
【資料請求先】
NECエレクトロニクスのホームページよりダウンロードいただくか,NECエレクトロニクスの販売特約店へお申し付けください。
89
アプリケーション・ノート ZUD-CB-09-0193