USB Peripheral Communications Device Class Driver (PCDC)

アプリケーションノート
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R01AN0273JJ0210
Rev.2.10
2013.4.1
要旨
本資料は、Renesas USB MCU and USB ASSP USB Basic firmware を使用した USB Peripheral コミュニケー
ションデバイスクラスドライバ(PCDC)のアプリケーションノートです。
動作確認デバイス
RX62N グループ, RX621 グループ,RX63N グループ,RX631 グループ, RX630 グループ,RX63T グループ,
R8A66597, R8A66593
動作確認デバイスと同様の USB モジュールを持つ他の RX600 シリーズでも本プログラムを使用すること
ができます。このアプリケーションノートのご使用に際しては十分な評価を行ってください。
なお、本プログラムは Renesas Starter Kit で動作確認を行っています。
目次
1.
はじめに ............................................................................................................................................ 2
2.
デバイスクラスドライバの登録........................................................................................................ 4
3.
ソフトウェア構成.............................................................................................................................. 4
4.
ペリフェラル用 CDC サンプルアプリケーション(APL) .............................................................. 9
5.
コミュニケーションデバイスクラス(CDC)、PSTN and ACM .................................................. 23
6.
USB ペリフェラルコミュニケーションデバイスクラスドライバ(PCDC) ................................ 28
7.
コミュニケーションポートドライバ(CPD)................................................................................ 45
8.
uITRON/non-OS への登録方法 .................................................................................................... 60
9.
制限事項 .......................................................................................................................................... 61
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 1 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
はじめに
1.
1.1
資料概要
本資料は、Renesas USB MCU and USB ASSP USB Basic firmware を使用した USB Peripheral コミュニケー
ションデバイスクラスドライバ(PCDC)および、コミュニケーションポートドライバのサンプルドライバに
対するアプリケーションノートです。
1.2
機能と特長
PCDC は、USB コミュニケーションデバイスクラス仕様(以降 CDC と記述)の Abstract Control Model に準
拠し、USB ホストとの通信を行うことができます。
本クラスドライバは弊社の USB Basic firmware RTOS 版と non-OS 版と組み合わせて使用することを前提に
しています。
1.3
関連ドキュメント
RX600 シリーズ USB Peripheral Communications Device Class Driver (PCDC) 導入ガイド(ドキュメント No.
R01AN0531JJ)
2. Renesas USB MCU and USB ASSP USB Basic Firmware アプリケーションノート(ドキュメント No.
R01AN0512JJ)
3. Universal Serial Bus Revision 2.0 specification
4. USB Class Definitions for Communications Devices Revision 1.2
5. USB Communications Class Subclass Specification for PSTN Devices Revision 1.2
【http://www.usb.org/developers/docs/】
6. RX62N グループ、RX621 グループユーザーズマニュアル ハードウェア編(ドキュメント No.
R01DS0052JJ)
7. RX630 グループ ユーザーズマニュアル ハードウェア編 (ドキュメント No. R01UH0040JJ)
8. RX63N グループ ユーザーズマニュアル ハードウェア編 (ドキュメント No. R01UH0041JJ)
9. RX63T グループユーザーズマニュアル ハードウェア編 (ドキュメント No. R01UH0331JJ)
10. R8A66597 データシート(ドキュメント No. RJJ03F0130)
11. R8A66593 データシート(ドキュメント No. R19DS0071JJ0100)
12. RX600 シリーズ用リアルタイム OS RI600/4 V.1.00 ユーザーズマニュアル
1.
⎯ ルネサス エレクトロニクスホームページ
【http://japan.renesas.com/】
⎯ USB デバイスページ
【http://japan.renesas.com/prod/usb/】
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 2 of 62
Renesas USB MCU and USB ASSP
1.4
USB Peripheral Communications Device Class Driver (PCDC)
用語一覧
本資料で使用される用語と略語は以下のとおりです。
ANSI
ACM
APL
ASSP(assp)
CDC
CDCC
CDCD
CPD
cstd
HEW
H/W
uITRON, ITRON
non-OS
PCD
PCDC
PCDCD
PDCD
PP
pstd
PSTN
RTOS
RX62N-RSK
RX63N-RSK
RX630-RSK
RX63T-RSK
R8A66597
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
R8A66593
SCI
SW1/SW2/SW3
USB
USB-BASIC-FW
タスク
スケジューラ
スケジューラマクロ
:
:
:
:
:
:
:
:
ANSI-C File I/O システムコール
Abstract Control Model.
Application program
Application Specifec Standard Produce
Communications Devices Class
Communications Devices Class Communications Interface Class
Communications Devices Class Data Class Interface
Serial Communication Port Driver
Peripheral & Host USB-BASIC-FW用の関数およびファイルのプレフィックス
High-performance Embedded Workshop
Renesas USB device
Industrial The Real-time Operating system Nucleus
USB basic firmware for OS less system
Peripheral control driver of USB-BASIC-FW
Periperal用 Communications Devices Class
Periperal Communications Devices Class Driver
Peripheral device class driver (device driver and USB class driver)
プリプロセス定義
Peripheral USB-BASIC-FW用の関数およびファイルのプレフィックス
Public Switched Telephone Network, contains the ACM (above) standard.
USB basic firmware for uITRON system
Renesas Starter Kits for RX62N
Renesas Starter Kits for RX63N
Renesas Starter Kits for RX630
Renesas Starter Kits for RX63T
Renesas Hi-Speed USB2.0 ASSP R8A66597 基板
(RX62N-RSKと組合わせて使用します)
Renesas Hi-Speed USB2.0 ASSP Peripheral only.
Serial Communication Interface
User switches on the RX62N-RSK / RX63N-RSK/RX630-RSK (注1)
Universal Serial Bus
USB basic firmware for Renesas USB MCU and USB ASSP (non-OS/ RTOS)
処理の単位
non-OSでタスク動作を簡易的にスケジューリングするもの
non-OSでスケジューラ機能を呼び出すために使用されるもの
(注 1) R8A66597 と RX62N-RSK を組み合わせて使用する場合、RX62N-RSK の SW1 で使用するポートが
R8A66597 の割り込みに割り当てられるため、SW1 は使用しないでください。
1.5
本書の読み方
デモプログラムを動作させる場合は、“RX600 シリーズ USB Peripheral Communications Device Class Driver
(PCDC) 導入ガイド”をお読みください。
3.2章にソース一覧を掲載しています。MCU固有ソースは、"¥ WorkSpace¥¥HwResourceForUSB_device"にあ
ります。アプリケーションに必要なファイルを確認してください。
4章はペリフェラルCDCアプリケーションの動作を説明しています。ユーザ独自のソリューションを作成す
るためにはアプリケーションの変更が必要です。
すべてのコードモジュールはタスクに分割されます。タスク間でメッセージの受け渡しが行われていると
を予めご理解ください。関数(タスク)の実行順序はスケジューラが決定します。このため重要なタスクに優先
権を持たせることができます。また、タスクに登録されたコールバックメカニズムを使用することで、各タ
スクは並列処理(ノンブロッキング)で動作します。タスクのメカニズムは1.3章の"Renesas USB MCU and USB
ASSP USB Basic Firmwareアプリケーションノート"で説明しています。PCDCのタスクについては3.3章を参照
してください。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 3 of 62
Renesas USB MCU and USB ASSP
2.
USB Peripheral Communications Device Class Driver (PCDC)
デバイスクラスドライバの登録
作成したデバイスクラスドライバは、USB ドライバに登録することでデバイスクラスドライバとして機能
します。
r_usb_pcdc_apl.c 内の関数 usb_pcdc_registration()を参考に、USB ドライバに登録してください。
詳細は、Renesas USB MCU and USB ASSPUSB Basic Firmware アプリケーションノートの「3.1 ペリフェラ
ルクラスドライバの登録方法」を参照してください。
3.
3.1
ソフトウェア構成
モジュール構成
PCDCに関係したモジュール構成をFigure 3-1に示します。また、各モジュール機能概要をTable 3-1に示しま
す。
Table 3-1 各モジュール機能概要
モジュール名
APL
PCDC
PCD
CPD
機能概要
ユーザアプリケーションプログラムです。
APL からの CDC に関するリクエストおよび、データ通信を PCD へ要求します。
USB Peripheral H/W 制御ドライバです。
シリアルポートの制御ドライバです。
Figure 3-1 モジュール構成図
APL と PCDC は、それぞれ uITRON 上でタスクとして、動作を行います。
(non-OS 版ではスケジューラから呼び出されます。)
PCDC は、PCD を介してホストとのデータ通信を行います。
APL では、PCDC を介して USB 通信を、CPD を介してシリアルポート通信を行います。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 4 of 62
Renesas USB MCU and USB ASSP
3.2
3.2.1
USB Peripheral Communications Device Class Driver (PCDC)
ファイル構成一覧
フォルダ構成
以下に本デバイスクラスで提供するファイルのフォルダ構成を示します。
各デバイス、評価ボードに依存するソースコードは各 H/W リソースフォルダ(HwResourceForUSB_デバイ
ス名)に格納しています。
WorkSpace
(PCDC sample code)
+―――CDCFW [Communication device class driver]
|
+―――include
ペリフェラル CDC ヘッダファイル
|
+―――PCDC
ペリフェラル CDC ドライバ
+―――SmplMain
サンプルアプリケーション
+―――HwResourceForUSB
選択したハードウエアリソース
+―――HwResourceForUSB_RX62N
RX62N/RX631 グループ用ハードウエアリソース
+―――HwResourceForUSB_RX62N_597assp
RX62N+R8A66597 用ハードウエアリソース
+―――HwResourceForUSB_RX63N
RX63N/RX631 グループ用ハードウエアリソース
+―――HwResourceForUSB_RX630
RX630 用ハードウエアリソース
+―――HwResourceForUSB_RX63T
RX63T 用ハードウエアリソース
(ANSI-C File I/O System Calls) [open(), close(), read(), write() etc of the USB class driver]
+―――ANSI
(uITRON) [uITRON OS code]
+―――RI600_4
uITRON フォルダ(non-OS 版にはありません)
(USB-BASIC-FW) [Common USB code that is used by all USB firmware]
+---USBSTDFW
USB 基本 FW
※1. 使用するデバイスの H/W リソースフォルダ名を「HwResourceForUSB_デバイス名」から
「HwResourceForUSB」に変更してください。
※2.R8A66593 をご使用の場合は、HwResourceForUSB RX62N_597assp をご使用ください。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 5 of 62
Renesas USB MCU and USB ASSP
3.2.2
USB Peripheral Communications Device Class Driver (PCDC)
ファイル一覧
Table 3-2にPCDCで提供するファイル構成を示します。なお、水色で強調されたファイルは、ユーザが変更
可能なファイルです
Table 3-2 ファイル構成
Holder
SmplMain/APL
SmplMain/APL
CDCFW/PCDC
CDCFW/PCDC
CDCFW/PCDC
CDCFW/ include
CDCFW/ include
ファイル名
r_usb_pcdc_apl.c
r_usb_pcdc_descriptor.c
r_usb_pcdc_ansi.c
r_usb_pcdc_api.c
r_usb_pcdc_driver.c
r_usb_pcdc_define.h
r_usb_pcdc_extern.h
R01AN0273JJ0210 Rev.2.10
2013.4.1
概要
サンプルアプリケーションプログラム
CDC ディスクリプタ・テーブル
PCDC 用 ANSI 関数
CDC API 関数
CDC ドライバ関数
CDC 型定義、マクロ定義
CDC プロトタイプ、外部参照
備考
Sample
Sample
Page 6 of 62
Renesas USB MCU and USB ASSP
3.3
3.3.1
USB Peripheral Communications Device Class Driver (PCDC)
システムリソース
uITRON 版動作時のシステムリソース定義
RTOSの場合、PCDCおよび、サンプルAPLで使用するRTOS資源をTable 3-3に示します。
これらについては、"r_usb_peri.cfg"ファイルに定義します。
定義方法詳細については「7.1 uITRON への組み込みについて」を参照してください。
Table 3-3 uITRON リソース定義
タスク
スタックサイズ:
USB_TSK_STK(512)
名称
USB_PCDC_TSK
USB_PCDCSMP_TSK
USB_PCD_TSK
メールボックス
最大優先度:1
待ちタスクキュー:FIFO 順
メッセージキュー:FIFO 順
固定長メモリプール
ブロック数:10
ブロックサイズ:64
待ちタスクキュー:FIFO 順
uITRON のベースタイマ
R01AN0273JJ0210 Rev.2.10
2013.4.1
USB_PCDC_MBX
USB_PCDCSMP_MBX
USB_PCD_MBX
USB_PCDC_MPL
USB_PCDCSMP_MPL
概要
PCDC メインタスク(usb_pcdc_Task)
タスク優先順位:7
APL メインタスク(usb_pcdc_main_task)
タスク優先順位:8
PCD タスク(R_usb_pstd_PcdTask)
タスク優先順位:3
PCDC -> PCDC
/ APL -> PCDC 用メール BOXID
PCDC -> APL 用メール BOXID
PCD 用メール BOXID
PCDC 用メモリプール ID
APL 用メモリプール ID
PCD 用メモリプール ID
HW タイマ
1ms
Page 7 of 62
Renesas USB MCU and USB ASSP
3.3.2
USB Peripheral Communications Device Class Driver (PCDC)
non-OS 動作時のシステムリソース定義
PCDCをスケジューラに登録して使用するために定義したID、優先度をTable 3-4に示します。
これらについては、"r_usb_cKernelId.h"ヘッダファイルで定義します。
定義方法詳細については「7.2 non-OS スケジューラへの組み込みについて」を参照してください。
Table 3-4 スケジューラ登録 ID 一覧
スケジューラ登録タスク
名称
USB_PCDC_TSK
USB_PCDCSMP_TSK
USB_PCD_TSK
メールボックス ID
固定長メモリプール ID
USB_PCDC_MBX
(デフォルト値
USB_PCDC_TSK)
USB_PCDCSMP_MBX
(デフォルト値
USB_PCDCSMP_TSK)
USB_PCD_MBX
(デフォルト値 USB_PCD_TSK)
USB_PCDC_MPL
(デフォルト値
USB_PCDC_TSK)
USB_PCDCSMP_MPL
(デフォルト値
USB_PCDCSMP_TSK)
USB_PCD_MPL
(デフォルト値 USB_PCD_TSK)
R01AN0273JJ0210 Rev.2.10
2013.4.1
概要
PCDC メインタスク(usb_pcdc_Task)
タスク優先順位: USB_PRI_3( = 3)
APL メインタスク(usb_pcdc_main_task)
タスク優先順位: USB_PRI_4( = 4)
PCD タスク(R_usb_pstd_PcdTask)
タスク優先順位: USB_PRI_0( = 0)
PCDC -> PCDC
/ APL -> PCDC 用メール BOXID
PCDC -> APL 用メール BOXID
PCD 用メール BOXID
PCDC 用メモリプール ID
APL 用メモリプール ID
PCD 用メモリプール ID
Page 8 of 62
Renesas USB MCU and USB ASSP
4.
USB Peripheral Communications Device Class Driver (PCDC)
ペリフェラル用 CDC サンプルアプリケーション(APL)
ペリフェラル用 CDC サンプルアプリケーションプログラム(APL)の説明を以下に示します。
4.1
動作環境について
本ソフトウェアの動作環境例を下図に示します。
Figure 4-1 動作環境例
USB ホストに WindowsPC を使用する場合、システム定義ファイル(CDC_Demo.inf/CDC_Demo_Win7.inf)
のインストールが必要です。このファイルをペリフェラル CDC デバイスに設定した PID,VID に合わせて編
集する必要があります。テキストエディタ等でドライバファイルの以下の箇所を編集してください。
[Model]
%STRING_MODEL%=CDC, USB¥VID_0000&PID_0000
← 4 桁の数値の部分を 16 進数 4 桁で編集します。
VID が 0x1234 で、PID が 0x5678 の場合
[Model]
%STRING_MODEL%=CDC, USB¥VID_1234&PID_5678
← 4 桁の数値の部分を 16 進数 4 桁で編集します。
ペリフェラルデバイスの PID,VID 定義は r_usb_pcdc_descriptor.c ファイルの"USB_VENDORID"および"
USB_PRODUCTID"で定義します。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 9 of 62
Renesas USB MCU and USB ASSP
4.2
USB Peripheral Communications Device Class Driver (PCDC)
アプリケーションプログラム機能概要
PCDC のサンプルアプリケーションプログラム(APL)は、 USB-シリアル変換機能(通常モード)及び、
USB ループバック通信機能(エコーモード)を実装しています。
APL は ANSI インタフェースを使用した場合と、ANSI インタフェースを使用しない場合の 2 種類を用意し
ています。
ANSI インタフェースを使用した APL では、USB 通信可能か“open”API で確認します。
USB 通信が可能なら USB への送信は“write”API,受信は“read”API、USB 通信終了を“close”API で行
います。
APL の主な機能は以下のとおりです。
1)
2)
3)
4)
スイッチ押下による、USB・シリアル変換モードと、エコーモードのモード変更
USB ホストから受信したデータをシリアルポートへ送信(通常モード時)
シリアルポートから受信したデータを USB ホストへ送信(通常モード時)
USB ホストから受信したデータを、USB ホストへ折り返し送信(エコーモード時)
スイッチ入力の仕様をTable 4-1に示します。
Table 4-1 スイッチ入力による APL 動作内容
スイッチ名称
操作説明スイッチ
モード切り替えスイッチ
動作内容
RSK 上で使用するスイッチ
(SW)番号
SW2
SW3
USB ホスト PC へ操作説明メッセージを送信
スイッチが押されるたびに、エコーモードと通常
モードを変更
※詳しくは、各 RSK のアプリケーションノート、各マイコンハードウェアマニュアルを参照ください。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 10 of 62
Renesas USB MCU and USB ASSP
4.3
USB Peripheral Communications Device Class Driver (PCDC)
アプリケーションプログラム動作説明
アプリケーションプログラムの動作説明を以下に記します。
4.3.1
ユーザースイッチ
(1). USB ホストへの SW 押下要求メッセージ周期送信
USB ホストに以下のメッセージを一定周期で送信します。
Renesas USB CDC Sample, Press Switch SW2.
操作説明スイッチが押下されるとメッセージ送信を止めます。
(2). 操作説明スイッチ押下による操作説明メッセージ送信
操作説明スイッチ押下により、USB ホストに以下のメッセージを送信します。
[Renesas Serial-USB converter.]
Connect serial terminal (e.g. PC COM1) DB9 cable to PC and RSK,
and USB cable to PC and to mini-B on RSK.
Support COM Speed 1200bps-115200bps
Sw2 - Show instructions
Sw3 - Start Echo of everthing typed <-> Stop Echo
(3). エコーモード設定
モード切り替えスイッチ押下により、動作モードをエコーモードにして、USB ホストに以下のメッセージ
を送信します。
Starting Echo:-
(4). エコーモード解除
エコーモード時、モード切り替えスイッチ押下により、動作モードを通常モードにして、USB ホストに以
下のメッセージを送信します。
Finished Echo.
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 11 of 62
Renesas USB MCU and USB ASSP
4.3.2
USB Peripheral Communications Device Class Driver (PCDC)
通常モード (シリアル-USB 変換モード)
通常モードでは、USB-シリアル変換機として動作します。本モードは、USB ホストから受信したデータを
UART ポートに送ります。また、UART ポートに送られてきたデータを USB COM ポートに送ります。
(1). CDC ホストへのデータ送信処理
PCDC が提供する API を使用して USB ホストへメッセージデータおよび、シリアルポートからの受信デー
タを送信します。
CDC ホスト送信処理が終了するまで、次のデータを送信することはできません。
APL は"write()"/"R_usb_pcdc_SendData()"のコールバックを待って次のデータ送信を行います。
PCDC が提供する USB 受信 API は ANSI/非 ANSI で異なります。
・ANSI インタフェースの場合:write() ※CDCD でオープンしたファイル番号を指定します。
・非 ANSI インタフェースの場合:R_usb_pcdc_SendData()
(2). CDC ホストからのデータ受信処理
PCDC が提供する API を使用して USB ホストからのデータ受信を行います。
PCDC が提供する USB 受信 API は ANSI/非 ANSI で異なります。
・ANSI インタフェースの場合:read() ※CDCD でオープンしたファイル番号を指定します。
・非 ANSI インタフェースの場合:R_usb_pcdc_ReceiveData()
受信したデータは CPD が提供する"usb_cpu_Sci_DataSend()"を使用してシリアルポートへ送信します。
シリアルポートへの送信速度は USB ホストからの受信速度と比べて低速なため、シリアル送信バッファが
一杯となり受信データが格納出来なくなる可能性があります。
回避策として、送信バッファ状態を調べビジー状態(残りの領域がわずかの状態)となった場合、USB ホ
ストからの受信を一時停止させ、送信バッファに余裕ができた時点で受信処理を再開させるようにしていま
す。
(3). CDC ホストへのシリアルエラー通知処理
CPD の提供する"usb_cpu_Sci_GetSerialState"でシリアル受信エラーを確認し、エラーを検出した場合、PCDC
の提供する API で USB ホストへクラスノーティフィケーション・シリアルステートを送信します。
PCDC が提供する USB へのシリアルエラー通知 API は ANSI/非 ANSI で異なります。
・ANSI インタフェースの場合:read() ※CDCC でオープンしたファイル番号を指定します。
・非 ANSI インタフェースの場合:R_usb_pcdc_SerialStateNotification()
(4). シリアルポートへの送信処理
CPD が提供する"usb_cpu_SciDataSend()"を使用してシリアルポートへ送信します。
(5). シリアルポートへの受信処理
CPD が提供する"usb_cpu_Sci_DataReceive()"を使用してシリアルポートからの受信データを取り出します。
シリアルポートから受信したデータは USB ホストへ送信します。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 12 of 62
Renesas USB MCU and USB ASSP
4.3.3
USB Peripheral Communications Device Class Driver (PCDC)
エコーモード
エコーモードは、USB ホストから受信したデータを USB ホストへ折り返し送信します。エコーモードでは
UART ポートは使用しません。
(1). エコーモード処理
エコーモードは USB ホストから受信したデータを、
USB ホストへ折り返し送信するモードで、シリアルポー
トを使った通信は行いません。
シリアル送信データを、シリアル受信データにコピーします。
シリアル受信データにコピーされたデータを USB ホストへ送信することで、エコーモード動作を実現しま
す。
4.4
APL メッセージ
APL がメッセージ BOX“USB_PCDCSMP_MBX”で受信し、処理するメッセージを下表に記します。
メッセージ受信時処理内容については本書“4.8 APL処理概要フロー”を参照下さい。
Table 4-2 APL メッセージ受信メッセージ一覧
No.
1
2
3
4
5
6
種別
USB_PCDC_OPEN(ANSI のみ)
送信元
・初期化処理
“usb_papl_task_start”
・APL メイン処理
“usb_pcdc_main_task”
(USB オープン処理失敗時、USB デタッチ検出時)
USB_PCDC_PERIODIC_PROCESS ・APL メイン処理。
“usb_pcdc_main_task”
(USB オープン処理成功時、本メッセージ受信により自
APL 宛てに送信)
USB_PCDC_RX_COMP
・USB 受信完了時に呼び出されるコールバック関数
“usb_pcdc_rx_notification”
USB_PCDC_TX_COMP
・USB 送信完了時に呼び出されるコールバック関数
“usb_pcdc_tx_notification”
USB_PCDC_STATUS_TX_COMP
・シリアル・ステート送信完了時に呼び出されるコールバッ
ク関数“usb_pcdc_state_notification”
USB_PCDC_CLOSE
・USB デタッチ検出で呼び出されるコールバック関数
“usb_pcdc_close”
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 13 of 62
Renesas USB MCU and USB ASSP
4.5
USB Peripheral Communications Device Class Driver (PCDC)
APL 関数一覧
Table 4-3にAPLの関数を示します。
Table 4-3 APL 関数一覧
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
関数名
usb_cstd_task_start
usb_pcdc_task_start
usb_papl_task_start
usb_pcdc_registration
usb_pcdc_open
usb_pcdc_close
usb_pcdc_pr_apl_title
usb_apl_task_switch
usb_pcdc_main_task
usb_pcdc_rx_notification
usb_pcdc_tx_notification
usb_pcdc_state_notification
usb_pcdc_apl_init
usb_pcdc_apl_msg_out
usb_pcdc_smpl_message_send
usb_pcdc_sw_process
usb_pcdc_serial_state_process
usb_pcdc_get_rcv_data_cnt
usb_pcdc_is_connected
R01AN0273JJ0210 Rev.2.10
2013.4.1
説明
タスクスタート処理
ペリフェラル USB 用の各種タスクスタートアップ処理
アプリタスク・スタートアップ処理
PCDC ドライバ登録
PCDC オープン関数
PCDC クローズ関数
タイトル表示
nonOS 用タスクスイッチングループ
デモサンプルアプリケーションメイン処理
USB 受信完了コールバック処理
USB 送信完了コールバック処理
シリアルステータス通知コールバック処理
アプリ変数初期化処理
プリセットメッセージ出力処理
APL タスクへのメッセージ送信処理
スイッチ対応処理
シリアル状態対応処理
USB 受信データ数取得処理
USB ホストへの接続状態を返します
Page 14 of 62
Renesas USB MCU and USB ASSP
4.6
USB Peripheral Communications Device Class Driver (PCDC)
APL データフロー
サンプルアプリケーションプログラムのデータフローを以下に示します。
Figure 4-2 APL データフロー
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 15 of 62
Renesas USB MCU and USB ASSP
4.7
USB Peripheral Communications Device Class Driver (PCDC)
シーケンス
APL は、APL 周期起動メッセージ(USB_PCDC_PERIODIC_PROCESS)受信で自タスク(APL)宛てに周
期起動メッセージを送信しています。(シーケンスでは省略しています。)
サンプルアプリケーションプログラムのシーケンスを以下に示します。
4.7.1
CDC ホストからのデータ受信、シリアルポート送信動作
CDC ホストからのデータ受信を行い、受信したデータをシリアルポートへ送信するシーケンスを以下に記
します。
Figure 4-3 CDC ホストからのデータ受信・シリアルポート送信動作のシーケンス
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 16 of 62
Renesas USB MCU and USB ASSP
4.7.2
USB Peripheral Communications Device Class Driver (PCDC)
シリアルポート受信、CDC ホストへの送信動作
シリアルポートから受信したデータを、USB ホストへ送信するシーケンスを以下に記します。
APL
PCDC
PCD
CPD
メッセージ受信によりAPL周期起動
(USB_PCDC_PERIODIC_PROCESS)
シリアルポートからの受信データ取り出し
usb_cpu_Sci_DataReceive()
受信データ数>0
受信データ
シリアル受信データをCDCホストへ送信
write() / R_usb_pcdc_SendData()
R_usb_pstd_TransferStart()
受信データ数=0
送信完了コールバック
バルクIN転送
転送完了
送信完了コールバック
メッセージ受信によりAPL起動
(USB_PCDC_TX_COMP)
Figure 4-4 シリアルポート受信・CDC ホスト送信動作のシーケンス
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 17 of 62
Renesas USB MCU and USB ASSP
4.7.3
USB Peripheral Communications Device Class Driver (PCDC)
エコーモード動作
エコーモード動作で、USB ホストから受信したデータを、USB ホストへ折り返し送信するシーケンスを以
下に記します。
Figure 4-5 エコーモード動作のシーケンス
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 18 of 62
Renesas USB MCU and USB ASSP
4.7.4
USB Peripheral Communications Device Class Driver (PCDC)
シリアルエラー動作
シリアル受信エラーを検出し、USB ホストへクラスノーティフィケーション(SerialState)を送信するシー
ケンスを以下に記します。
Figure 4-6 シリアルエラー動作のシーケンス
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 19 of 62
Renesas USB MCU and USB ASSP
4.8
USB Peripheral Communications Device Class Driver (PCDC)
APL 処理概要フロー
処理概要フローでの USB-シリアル変換処理及び、USB ループバックでの主な処理経路を以下に記します。
①~⑥はFigure 4-7APL処理概要フローのAPIに記した番号です。
[USB-シリアル変換処理経路]
・USB→シリアル(UART)
①データ受信処理 read() / R_usb_pcdc_ReceiveData()
②シリアルポート送信処理 usb_cpu_Sci_DataSend()
③データ受信処理 read() / R_usb_pcdc_ReceiveData()
②シリアルポート送信処理 usb_cpu_Sci_DataSend()
以降③・②の繰返し
・シリアル(UART)→USB
④シリアル受信データ取り出し処理 usb_cpu_Sci_DataReceive()
⑤シリアル送信処理 write() /R_usb_pcdc_SendData()
以降④・⑤の繰返し
[USB ループバック(エコーモード)処理経路]
・最初のループバック動作
①データ受信処理 read() / R_usb_pcdc_ReceiveData()
②シリアルポート送信処理 usb_cpu_Sci_DataSend()
⑥エコーモード用データコピー処理 usb_cpu_Sci_CopyData_for_Echo()
④シリアル受信データ取り出し処理 usb_cpu_Sci_DataReceive()
⑤シリアル送信処理 write() /R_usb_pcdc_SendData()
・2 回目以降のループバック動作
③データ受信処理 read() / R_usb_pcdc_ReceiveData()
②シリアルポート送信処理 usb_cpu_Sci_DataSend()
⑥エコーモード用データコピー処理 usb_cpu_Sci_CopyData_for_Echo()
④シリアル受信データ取り出し処理 usb_cpu_Sci_DataReceive()
⑤シリアル送信処理 write() /R_usb_pcdc_SendData()
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 20 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
サンプル・アプリケーション・プログラムの処理概要フローを以下に示します。
Figure 4-7 APL 処理概要フロー(1/2)
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 21 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
ANSI 対応で追加となったメッセージ種別対応処理部分
Figure 4-8 APL 処理概要フロー(2/2)
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 22 of 62
Renesas USB MCU and USB ASSP
5.
USB Peripheral Communications Device Class Driver (PCDC)
コミュニケーションデバイスクラス(CDC)、PSTN and ACM
5.1
基本機能
本S/Wは、コミュニケーションデバイスクラス仕様Abstract Control Modelサブクラス(5.2章参照)に準拠して
います。
PCDC の主な機能は、以下のとおりです。
(1) USB ホストからの機能照会に対する応答
(2) USB ホストからのクラスリクエストに対する応答
(3) USB ホストとのデータ通信
(4) USB ホストへのシリアル通信エラー報告
5.2
Abstract Control Model 概要
Abstract Control Model サブクラスは、USB 機器と従来のモデム(RS-232C 接続)との間を埋める技術で、
従来のモデムを使用するアプリケーションプログラムが使用可能です。
以下に本 S/W でサポートするクラスリクエスト・クラスノーティフィケーションを記します。
5.2.1
クラス・リクエスト(ホスト→デバイスへの要求)
本 S/W で対応しているクラスリクエストを下表に示します。
Table 5-1 CDC クラス・リクエスト
リクエスト
SendEncapsulatedCommand
GetEncapsulatedResponse
SetCommFeature
GetCommFeature
ClearCommFeature
SetLineCoding
GetLineCoding
SetControlLineState
SendBreak
コード
説明
0x00 プロトコルで定義された AT コマンド等を送信する。
0x01 SendEncapsulatedCommand で送信したコマンドに対
するレスポンスを要求する。
0x02 機器固有の 2 バイトコードや、カントリー設定の禁止/
許可を設定する。
0x03 機器固有の 2 バイトコードや、カントリー設定の禁止/
許可状態を取得する。
0x04 機器固有の 2 バイトコードや、カントリー設定の禁止/
許可設定をデフォルト状態に戻す。
0x20 通信回線設定を行う。(通信速度、データ長、パリティ
ビット、ストップビット長)
0x21 通信回線設定状態を取得する。
0x22 通信回線制御信号 RTS、DTR の設定を行う。
0x23 ブレイク信号の送信を行う。
対応
×
×
×
×
×
○
○
○
×
Abstract Control Model リクエストについては、USB Communications Class Subclass Specification for PSTN
Devices Revision 1.2 の Table11:Requests-Abstract Control Model を参照して下さい。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 23 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
クラスリクエストのデータフォーマット
5.2.2
本クラスドライバソフトが対応するクラスリクエストのデータフォーマットを以下に記します。
(1). SetLineCoding
UART 回線設定を行う為にホストが送信するクラスリクエストです。
SetLineCoding データフォーマットを以下に示します。
Table 5-2
bmRequestType t
0x21
bReques
SET_LINE_CODING
(0x20)
SetLineCoding フォーマット
wValue wIndex
0x00
0x00
wLength
0x07
Data
Line Coding Structure
Table 5-3 Line Coding
Structureフォーマット参照
Table 5-3 Line Coding Structure フォーマット
Offset
0
4
Field
DwDTERate
BcharFormat
Size
4
1
Value
Number
Number
5
BparityType
1
Number
6
BdataBits
1
Number
Description
データ端末の速度(bps)
ストップビット 0 - 1 Stop bit
1 - 1.5 Stop bit
2 - 2 Stop bit
パリティ
0 - None
1 - Odd
2 - Even
データビット (5、6、7、8)
本 S/W でサポートする設定を以下に示します。
DwDTERate
:1200bps/2400bps/4800bps/9600bps/14400bps/19200bps/38400bps/57600bps/115200bps
BcharFormat
:1Stop bit/2Stop bit
BparityType
:None/Odd/Even
BdataBits
:7bit/8bit
(2). GetLineCoding
UART 回線設定状態を要求する為にホストが送信するクラスリクエストです。
GetLineCoding データフォーマットを以下に示します。
Table 5-4 GetLineCoding フォーマット
bmRequestType t
0xA1
bReques
GET_LINE_CODING
(0x21)
R01AN0273JJ0210 Rev.2.10
2013.4.1
wValue wIndex
0x00
0x00
wLength
0x07
Data
Line Coding Structure
Table 5-3 Line Coding
Structureフォーマット参照
Page 24 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
(3). SetControlLineState
UART のフロー制御用信号を設定する為にホストが送信するクラスリクエストです。
本 S/W では RTS/DTR の制御をサポートしていません。
SET_CONTROL_LINE_STATE データフォーマットを以下に示します。
Table 5-5
bmRequestType t
0x21
SET_CONTROL_LINE_STATE フォーマット
bReques
SET_CONTROL_
LINE_STATE
(0x22)
wValue
Control Signal Bitmap
Table 5-6 Control Signal
Bitmapフォーマット参照
wIndex
0x00
wLength
0x00
Data
None
Table 5-6 Control Signal Bitmap フォーマット
Bit Position
D15~D2
D1
D0
Description
予約(0 にリセット)
DCE の送信機能を制御 0 - RTS OFF
1 - RTS ON
DTE がレディ状態かの通知 0 - DTR OFF
1 - DTR ON
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 25 of 62
Renesas USB MCU and USB ASSP
5.2.3
USB Peripheral Communications Device Class Driver (PCDC)
クラス・ノーティフィケーション(デバイス→ホストへの通知)
本 S/W のクラス・ノーティフィケーション対応/非対応を下表に示します。
Table 5-7 CDC クラス・ノーティフィケーション
ノーティフィケーション
NETWORK_CONNECTION
RESPONSE_AVAILABLE
SERIAL_STATE
コード
0x00
0x01
0x20
説明
ネットワーク接続状況を通知する
GET_ENCAPSLATED_RESPONSE への応答
シリアル回線状態を通知する
対応
×
×
○
(1). SerialState
UART ポートに状態変化を検出した場合、ホストへ状態通知を行います。
本 S/W ではオーバーランエラー、パリティエラー、フレーミングエラー検出をサポートしています。状態
通知は正常状態からエラー検出した場合に行います。エラーを連続検出しても状態通知を連続送信しません。
SerialState データフォーマットを以下に示します。
Table 5-8
bmRequestType t
0xA1
bReques
SERIAL_STATE
(0x20)
SerialState フォーマット
wValue
0x00
wIndex
0x00
wLength
0x02
Data
UART State bitmap
Table 5-9 UART State
bitmapフォーマット参照
Table 5-9 UART State bitmap フォーマット
Bits
D15~D7
D6
D5
D4
D3
D2
D1
D0
Field
bOverRun
bParity
bFraming
bRingSignal
bBreak
bTxCarrier
bRxCarrier
R01AN0273JJ0210 Rev.2.10
2013.4.1
Description
予約
オーバーランエラー検出
パリティエラー検出
フレーミングエラー検出
着信(Ring signal)を感知した
ブレーク信号検出
Data Set Ready:回線が接続されて通信可能
Data Carrier Detect:回線にキャリア検出
対応
-
○
○
○
×
×
×
×
Page 26 of 62
Renesas USB MCU and USB ASSP
5.3
USB Peripheral Communications Device Class Driver (PCDC)
エンドポイント仕様
本 S/W では、以下のエンドポイントを使用しています。
Table 5-10 エンドポイント仕様
bEndpointAddress
アドレス
転送方向
EP0
In/Out
EP1
In
bmAttributes
転送タイプ
Control
Bulk
EP2
Out
Bulk
EP3
In
Intterrupt
5.4
wMaxPacketSize
Max パケットサイズ
64
64(Full-Speed)/
512(Hi-Speed)
64(Full-Speed)/
512(Hi-Speed)
16
説明
標準リクエスト、クラスリクエスト
デバイスからホストへのデータ転送
ホストからデバイスへのデータ転送
デバイスからホストへの状態通知
PC の仮想 COM ポートについて(参考)
Windows OS 搭載 PC は CDC デバイスを仮想 COM ポートとして利用することが可能です。
Windows OS 搭載 PC に本 S/W を実装した RSK ボードを接続すると、エニュメレーション設定に続き、CDC
クラスリクエストの GetLineCoding 及び SetControlLineState を行った後、仮想 COM デバイスとしてデバイス
マネージャに登録されます。
Windows デバイスマネージャに仮想 COM ポートとして登録された後は、Windows XP 標準搭載のハイパー
ターミナル等のターミナルアプリで CDC デバイスとデータ通信が可能です。
ターミナルアプリのシリアルポート設定を行うことで、クラスリクエスト SetLineCoding による UART 設定
が可能です。
ターミナルアプリのウインドウから入力したデータ(又はファイル送信)は EP2 を使用して RSK ボードへ
転送され、RSK ボード側から PC へのデータ転送は EP1 を使用して行われます。
ターミナルアプリによっては最後に受信したデータが MAX パケットサイズ
(Full-Speed:64Byte,Hi-Speed:512Byte)の場合、継続するデータがあると判断して受信データをターミナルに
表示しないことがあります。
MAX パケットサイズ未満のデータを受信することで、それまでに受信したデータがターミナルに表示され
ます。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 27 of 62
Renesas USB MCU and USB ASSP
6.
USB Peripheral Communications Device Class Driver (PCDC)
USB ペリフェラルコミュニケーションデバイスクラスドライバ(PCDC)
6.1
基本機能
PCDC の基本機能は以下のとおりです。
(1) USB ホストとのデータ転送
(2) CDC クラスリクエストに応答
(3) コミュニケーションデバイスクラスノーティフィケーション送信サービスの提供
6.2
PCDC API 一覧
Table 6-1~Table 6-3にPCDC API一覧を示します。
本 S/W は ANSI インタフェース使用がデフォルトとなっております。
ANSIインタフェース使用の場合に使用するAPIをTable 6-1に記します。
以下の関数は、r_usb_usrconfig.h ファイル内の ANSI インターフェース使用/非使用の指定において"使用"を
選択した場合に、使用することができます。
例 (r_usb_usrconfig.h)
#define USB_ANSIIO_PP
USB_ANSIIO_USE_PP
Table 6-1
関数名
:ANSI インターフェイス使用
ANSI インタフェース API 一覧
機能概要
USB デバイスクラス通信が可能か確認する
USB デバイスクラス通信を終了する
USB 受信処理を行う
USB 送信処理を行う
コントロールコードに対応した処理を行う
open
close
read
write
control
ANSIインタフェースを使用しない場合に使用するAPIをTable 6-2に記します。
以下の関数は、r_usb_usrconfig.h ファイル内の ANSI インターフェース使用/非使用の指定において"非使用"
を選択した場合に使用することができます。
例 (r_usb_usrconfig.h)
#define USB_ANSIIO_PP
USB_ANSIIO_NOT_USE_PP
:ANSI インターフェイス非使用
Table 6-2 非 ANSI インタフェースの場合に使用する PCDC API 一覧
関数名
R_usb_pcdc_SendData
R_usb_pcdc_ReceiveData
R_usb_pcdc_SerialStateNotification
機能概要
USB 送信処理
USB 受信処理
USB ホスト装置へクラスノーティフィケーション SerialState
を送信する。
ANSI/非ANSI共通で使用するAPIをTable 6-3に記します。
ANSI&非 ANSI の欄に記載されている関数は、r_usb_usrconfig.h ファイル内の ANSI インターフェース使用/
非使用の設定にかかわらず使用できる関数です。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 28 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
Table 6-3
関数名
R_usb_pcdc_set_interface
R_usb_pcdc_descriptor_change
R_usb_pcdc_usr_ctrl_trans_function
R_usb_pcdc_task
6.3
PCDC API 一覧
機能概要
Set Interface 受信時に呼出されるコールバック関数
接続速度に従ったディスクリプタ設定値変更処理
CDC 用コントロール転送処理
PCDC タスク
PCDC API 説明
PCDC が提供するAPI関数説明を以下に記します。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 29 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
open
USB デバイスクラス通信が可能か確認する
形式
int16_t
引数
open(int8_t *name, uint16_t mode, uint16_t flg)
*name
mode
flg
戻り値
クラスコード : USB_CLASS_PCDCC / USB_CLASS_PCDCD
オープンモード (この引数は使用しません。ゼロを設定してください。)
オープンフラグ (この引数は使用しません。ゼロを設定してください。)
-
ファイル番号 0x10~0x1f:USB オープン成功/ -1:オープン失敗
read()や write()を使った USB デバイスクラス通信を行うためには、
ファイル番号が必要です。そのため、USB デバイスクラス通信を
行う前に、open 関数を呼び出す必要があります
解説
USB デバイスとの接続確認を行います。
接続が確認されたら戻り値にファイル番号(0x10~0x1f)を、失敗した場合は(-1)を返します。
ファイル番号取得後、read()や write()を使った USB デバイスクラス通信を行うことができます。
以下に、PCDC が対応するクラス ID を示します。
クラス
CDC
CDC
クラス ID
USB_CLASS_PCDCC
USB_CLASS_PCDCD
備考
Communications Class Interface
Data Class Interface
補足
1.
本 API はユーザプログラムで呼び出してください。
2.
read()や write()を使った USB デバイスクラス通信を行うためには、ファイル番号が必
要です。そのため、USB デバイスクラス通信を行う前に、open 関数を呼び出す必要
があります。
3.
第 2 引数 flg や第 3 引数 mode は、本関数では使用しませんので、ともに 0(ゼロ)を設
定してください。
4.
PCDC で指定するクラス ID は USB_CLASS_PCDCC、USB_CLASS_PCDCD をオープ
ンする必要があります。
5.
USB_CLASS_PCDCD ではデータ送受信を、USB_CLASS_PCDCC ではシリアル
(UART)状態通知を行う為にオープン処理を行います。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 30 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
使用例
int16_t
data_fn, ctl_fn;
void usb_apl_task()
{
:
data_fn = open((int8_t *)USB_CLASS_PCDCD, 0, 0);
ctl_fn = open((int8_t *)USB_CLASS_PCDCC, 0, 0);
if( (data_fn != -1) && (ctl_fn != -1) )
{
/* PCDC USB 通信可能 */
}
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 31 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
close
USB デバイスクラス通信を終了する
形式
int16_t
引数
close(int16_t fileno)
fileno
戻り値
ファイル番号
-
解説
エラーコード
ファイル番号で指定した USB デバイスクラス通信を終了します。
USB デバイスクラス通信を終了した場合、戻り値に(0)を、失敗した場合は(-1)を返
します。
補足
1.
使用例
本 API は ANSI 用です。
int16_t usb_smp_fn;
void usb_apl_task()
{
USB_ER_t err;
:
err = close(usb_smp_fn);
if(err != USB_OK)
{
USB_PRINTF0("###close error !¥n");
}
usb_smp_fn = -1;
:
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 32 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
read
USB 受信処理を行う
形式
int32_t
引数
read(int16_t fileno, uint8_t *buf, int32_t count)
fileno
*buf
count
戻り値
ファイル番号
データバッファの先頭アドレス
データ転送サイズ
-
解説
エラーコード
ファイル番号で指定した USB デバイスクラスに対し、データ受信要求を行います。
FIFO バッファからデータ転送サイズ(第 3 引数)で指定された長さのデータを読み出します。読み出した
データは、データバッファ(第 2 引数)に格納されます。
受信処理が完了すると、control(USB_CTL_RD_NOTIFY_SET)で設定したコールバック関数がコールされ
ます。
実際の読み出しサイズは、受信処理完了後、control(USB_CTL_RD_LENGTH_GET)にて取得することが
できます。
補足
1.
ユーザプログラムで本関数を呼び出してください。
2.
本 API は、control(USB_CTL_RD_NOTIFY_SET)を使用し、データ転送完了通知用コールバック関
数を登録してから呼び出してください。
3.
この API は、データ受信の要求を行なうだけです。データ受信が完了するまで、この API で処理が
ブロックされることはありません。したがって、戻り値は常に(-1)になります。
使用例
int16_t usb_smp_fn;
void usb_apl_task()
{
:
/* データ受信完了通知用コールバック関数の設定 */
control(usb_smp_fn, USB_CTL_RD_NOTIFY_SET, (void*)&usb_ smp_Read_Notify);
/* データ受信要求 */
read(usb_smp_fn, (uint8_t *)データバッファアドレス, (unsigned int)データサイズ)
/* 受信ステータスチェック */
err = control(usb_spvendor_bulk_fn, USB_CTL_GET_READ_STATE, (void*)&state);
if(err != USB_CTL_ERR_PROCESS_COMPLETE)
{
/* エラー処理 */
}
:
}
void usb_ smp_Read_Notify(USB_UTR_t *ptr, uint16_t data1, uint16_t data2)
{
/* データ受信完了時の処理*/
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 33 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
write
USB 送信処理を行う
形式
int32_t
引数
write(int16_t fileno, uint8_t *buf, int32_t count)
fileno
*buf
count
戻り値
ファイル番号
データバッファの先頭アドレス
データ転送サイズ
-
解説
エラーコード
ファイル番号で指定した USB デバイスクラスに対し、データ送信要求を行います。データ送信関数は、
FIFO バッファへデータ転送サイズ(第 3 引数)で指定された長さのデータを書き込みます。書き込むデー
タは、データバッファ(第 2 引数)から読み出されます。
送信処理が完了すると、control(USB_CTL_WR_NOTIFY_SET)で設定したコールバック関数がコールされ
ます。
実際の書き込みサイズは、送信処理完了後、control(USB_CTL_WR_LENGTH_GET)にて取得することが
できます。
補足
1.
ユーザプログラムで本関数を呼び出してください。
2.
本 API は、control(USB_CTL_WR_NOTIFY_SET)を使用し、データ転送完了通知用コールバック関
数を登録してから呼び出してください。
3.
この API は、データ送信要求を行なうだけです。データ送信が完了するまで、この API で処理がブ
ロックされることはありません。したがって、戻り値は常に(-1)になります。
使用例
int16_t usb_smp_fn;
void usb_apl_task()
{
:
/* データ送信完了通知用コールバック関数の設定 */
control(usb_smp_fn, USB_CTL_WR_NOTIFY_SET, (void*)&usb_ smp_write_Notify);
/* データ送信要求 */
write(usb_smp_fn, (uint8_t *)データバッファアドレス, (unsigned int)データサイズ)
/* 送信ステータスチェック */
err = control( usb_spvendor_bulk_fn, USB_CTL_GET_WRITE_STATE, (void*)&state );
if(err != USB_CTL_ERR_PROCESS_COMPLETE)
{
/* エラー処理 */
}
:
}
void usb_ smp_write_Notify(USB_UTR_t *ptr, uint16_t data1, uint16_t data2)
{
/* データ送信完了時の処理*/
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 34 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
control
コントロールコードに対応した処理を行う
形式
int16_t
引数
control(int16_t fileno, USB_CTRLCODE_t code, void *data)
fileno
code
*data
戻り値
ファイル番号
コントロールコード
データポインタ
-
解説
エラーコード
コントロールコードに対応した処理を行います。対応していないコントロールコードの場合、(-1)を
返します。以下に、control()が対応するコントロールコードを示します。
コントロールコード
USB_CTL_USBIP_NUM
USB_CTL_RD_NOTIFY_SET
*data の型
(uint16_t *)
(void*)
USB_CTL_WR_NOTIFY_SET
(void*)
USB_CTL_RD_LENGTH_GET
(void*)
USB_CTL_WR_LENGTH_GET
(void*)
USB_CTL_GET_RD_STATE
USB_CTL_GET_WR_STATE
USB_CTL_P_RD_TRANSFER_END
(void*)
(void*)
(void*)
USB_CTL_P_WR_TRANSFER_END
(void*)
USB_CTL_P_CHG_DEVICE_STATE
(void*)
USB_CTL_P_GET_DEVICE_INFO
USB_CTL_P_RD_SET_STALL
(void*)
(void*)
USB_CTL_P_WR_SET_STALL
(void*)
R01AN0273JJ0210 Rev.2.10
2013.4.1
概要
USB モジュール番号を取得します。
データ受信が完了したときにコールバックされ
る関数を登録します。第 3 引数に登録する関数
を設定します。
データ送信が完了したときにコールバックされ
る関数を登録します。第 3 引数に登録する関数
を設定します。
データ受信時に、FIFO バッファから読み出した
データ長を取得します。
データ送信時に、FIFO バッファへ書き込んだ
データ長を取得します。
データ受信時のステータスを取得します。
データ送信時のステータスを取得します。
引数で指定したパイプのデータ転送を強制終了
させます。
引数で指定したパイプのデータ転送を強制終了
させます。
USB デバイスを引数で指定した状態へ変更しま
す。
処理を行いません。
引数で指定されたパイプの PID をストールに設
定します。
引数で指定されたパイプの PID をストールに設
定します。
Page 35 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
補足
1.
ユーザプログラムで本関数を呼び出してください。
使用例
int16_t usb_smp_fn;
void usb_apl_task()
{
int16_t num;
:
/* USB モジュール番号の確認 */
control(usb_smp_fn, USB_CTL_USBIP_NUM, (void*) &num);
:
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 36 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_SendData
USB 送信処理
形式
void
R_usb_pcdc_SendData(USB_UTR_t *ptr, uint8_t *Table, uint32_t size,
USB_CB_t complete)
引数
*ptr
*Table
size
complete
戻り値
USB 通信用構造体
転送データアドレス
転送サイズ
処理完了通知コールバック関数
-
解説
-
転送データアドレス Table で指定されたアドレスから、転送サイズ size 分のデータを USB 送信します。
送信完了後、コールバック関数 complete が呼出されます。
補足
1.
2.
3.
4.
ANSI インターフェース使用時は、本 API を使用する必要はありません。
USB 通信用構造体 USB_UTR_t の以下のメンバ設定が必要です。
USB_REGADR_t
ipp
:USB IP のアドレス
uint16_t
ip
:USB IP 番号
USB 送信処理結果はコールバック関数の引数”USB_UTR_t *mess”で得られます。
USB Basic Firmware アプリケーションノートの USB 通信用構造体(USB_UTR_t 構造体)を参照し
て下さい。
使用例
#define USB_PERI_USBIP_NUM USB_USBIP_0
// #define USB_PERI_USBIP_NUM USB_USBIP_1
{
USB_UTR_t
USB_UTR_t
uint8_t
uint16_t
utr;
*ptr;
send_data[] = {0x01,0x02,0x03,0x04,0x05}; /* USB 送信データ */
size = 5;
/* USB 送信データ数 */
ptr = (USB_UTR_t *)&utr;
ptr->ip = USB_PERI_USBIP_NUM;
ptr->ipp = R_usb_cstd_GetUsbIpAdr( ptr->ip );
/* USB IP 番号設定 */
/* USB IP ベースアドレス取得 */
R_usb_pcdc_SendData(ptr, (uint8_t *)send_data, size, (USB_CB_t)&usb_complete)
}
/* USB 送信完了通知用コールバック関数 */
void usb_complete( USB_UTR_t *mess, uint16_t data1, uint16_t data2 );
{
/* USB 送信完了時の処理を記述して下さい。 */
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 37 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_ReceiveData
USB 受信処理
形式
void
R_usb_pcdc_ReceiveData (USB_UTR_t *ptr, uint8_t *Table, uint32_t size,
USB_CB_t complete)
引数
*ptr
*Table
size
complete
戻り値
USB 通信用構造体
転送データアドレス
転送サイズ
処理完了通知コールバック関数
-
解説
-
USB 受信要求を行います。
USB から転送サイズ size 分のデータ受信完了、
又は MAX パケットサイズ未満のデータを受信した場合、
コールバック関数 complete が呼出されます。
USB 受信データは、転送データアドレス Table で指定されたアドレスで指定された領域に格納されます。
補足
1.
2.
3.
4.
ANSI インターフェース使用時は、本 API を使用する必要はありません。
USB 通信用構造体 USB_UTR_t の以下のメンバ設定が必要です。
USB_REGADR_t
ipp
:USB IP のアドレス
uint16_t
ip
:USB IP 番号
USB 受信処理結果はコールバック関数の引数”USB_UTR_t *mess”で得られます。
USB Basic Firmware アプリケーションノートの USB 通信用構造体(USB_UTR_t 構造体)を参照し
て下さい。
使用例
#define USB_PERI_USBIP_NUM USB_USBIP_0
// #define USB_PERI_USBIP_NUM USB_USBIP_1
{
USB_UTR_t utr, *ptr;
uint8_t
receive_data[64];
uint16_t size = 64;
/* USB 受信データ格納領域 */
/* USB 受信要求サイズ */
ptr = (USB_UTR_t *)&utr;
ptr->ip = USB_PERI_USBIP_NUM;
ptr->ipp = R_usb_cstd_GetUsbIpAdr( ptr->ip );
/* USB IP 番号設定 */
/* USB IP ベースアドレス取得 */
R_usb_pcdc_ReceiveData(ptr, (uint8_t *)receive_data, size,
(USB_CB_t)&usb_complete)
}
/* USB 受信完了通知用コールバック関数 */
void usb_complete( USB_UTR_t *mess, uint16_t data1, uint16_t data2 );
{
/* USB 受信完了時の処理を記述して下さい。 */
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 38 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_SerialStateNotification
USB ホスト装置へクラスノーティフィケーション SerialState を送信する
形式
void
R_usb_pcdc_SerialStateNotification(USB_UTR_t *ptr, uint16_t serial_state,
USB_CB_t complete)
引数
*ptr
serial_state
complete
戻り値
USB 通信用構造体
シリアルステータス
処理完了通知コールバック関数
-
解説
-
CDC クラスノーティフィケーション・シリアルステートを USB ホストに送信します。
シリアルステート送信はインタラプトパイプ EP3 を使用します。
送信完了後、コールバック関数 complete が呼出されます。
補足
1.
2.
3.
4.
5.
ANSI インターフェース使用時は、本 API を使用する必要はありません。
シリアルステータスのビットパターンは"Table 5-9 UART State bitmapフォーマット"を参照下さい。
USB 通信用構造体 USB_UTR_t の以下のメンバ設定が必要です。
USB_REGADR_t
ipp
:USB IP のアドレス
uint16_t
ip
:USB IP 番号
USB 送信処理結果はコールバック関数の引数”USB_UTR_t *mess”で得られます。
USB Basic Firmware アプリケーションノートの USB 通信用構造体(USB_UTR_t 構造体)を参照し
て下さい。
使用例
#define USB_PERI_USBIP_NUM USB_USBIP_0
// #define USB_PERI_USBIP_NUM USB_USBIP_1
{
USB_UTR_t utr;
USB_UTR_t *ptr;
uint16_t state;
/* シリアルステータス */
ptr = (USB_UTR_t *)&utr;
ptr->ip = USB_PERI_USBIP_NUM;
ptr->ipp = R_usb_cstd_GetUsbIpAdr( ptr->ip );
/* USB IP 番号設定 */
/* USB IP ベースアドレス取得 */
state = 0x0020;
/* D5:パリティエラー */
R_usb_pcdc_SerialStateNotification(ptr, state, (USB_CB_t)&usb_complete);
}
/* シリアルステート送信完了通知用コールバック関数 */
void usb_complete( USB_UTR_t *mess, uint16_t data1, uint16_t data2 )
{
/* シリアルステート送信完了時の処理を記述して下さい。 */
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 39 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_set_interface
Set Interface 受信時に呼出されるコールバック関数
形式
void
引数
*ptr
mode
data2
R_usb_pcdc_set_interface(USB_UTR_t *ptr, uint16_t data1, uint16_t data2)
USB 通信用構造体
接続速度
USB_NOCONNECT
USB_HSCONNECT
USB_FSCONNECT
USB_LSCONNECT
非使用
Speed undecidedness
Hi-Speed connect
Full-Speed connect
Low-Speed connect
戻り値
-
解説
-
SET_INTERFACE リクエストのステータスステージで呼び出されます。
現在行うべき処理が存在しないため、空関数としています。
本 API はデバイスクラスドラバ・レジストレーションでインタフェース変更時に呼出すコールバック関
数として登録します。
補足
-
使用例
USB_PCDREG_t driver;
/* Interfaced change */
driver. interface = & R_usb_pcdc_set_interface;
R_usb_pstd_DriverRegistration(ptr, &driver);
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 40 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_descriptor_change
接続速度に従ったディスクリプタ設定値変更処理
形式
void
引数
R_usb_pcdc_descriptor_change(USB_UTR_t *ptr, uint16_t mode, uint16_t data2)
*ptr :USB 通信用構造体
mode
接続速度
USB_NOCONNECT
USB_HSCONNECT
USB_FSCONNECT
USB_LSCONNECT
data2
非使用
戻り値
Speed undecidedness
Hi-Speed connect
Full-Speed connect
Low-Speed connect
-
解説
接続速度 mode により、コンフィグレーションディスクリプタ及びパイプ情報テーブル設定を変更しま
す。
本 API はデバイスクラスドライバ・レジストレーションでデフォルトステート遷移時に呼出すコール
バック関数として登録します。
補足
-
使用例
USB_PCDREG_t driver;
/* Device default */
driver. devdefault = & R_usb_pcdc_descriptor_change;
R_usb_pstd_DriverRegistration(ptr, &driver);
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 41 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_usr_ctrl_trans_function
CDC 用コントロール転送処理
形式
void
R_usb_pcdc_usr_ctrl_trans_function(USB_UTR_t *ptr, USB_REQUEST_t *preq,
uint16_t ctsq)
引数
*ptr
*preq
ctsq
USB 通信用構造体
クラスリクエストメッセージへのポインタ
コントロール転送ステージ情報
USB_CS_IDST:Idle or setup stage
USB_CS_RDDS:Control read data stage
USB_CS_WRDS:Control write data stage
USB_CS_WRND:Control write nodata status stage
USB_CS_RDSS:Control read status stage
USB_CS_WRSS:Control write status stage
USB_CS_SQER:Sequence error
戻り値
-
解説
-
リクエストタイプが CDC クラスリクエストの場合、コントロール転送ステージに対応した処理を呼び出
します。
本 API はデバイスクラスドライバ・レジストレーションでコントロール転送時に呼出すコールバック関
数として登録します。
補足
なし。
使用例
USB_PCDREG_t driver;
/* Control Transfer */
driver.ctrltrans = (USB_CB_TRN_t)&R_usb_pcdc_usr_ctrl_trans_function;
R_usb_pstd_DriverRegistration(ptr, &driver);
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 42 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
R_usb_pcdc_Task
PCDC タスク
形式
void
引数
R_usb_pcdc_Task(USB_VP_INT_t stacd)
stacd
戻り値
タスクスタートコード(非使用)
-
解説
-
PCDC 処理タスク。
アプリから要求された処理を行い、アプリに処理結果を通知します。
補足
1.
2.
本 API はユーザプログラムで呼び出してください。
non-OS で動作させる場合、タスクスイッチング処理から本 API がスケジュールされるように登録し
ます。
使用例
void usb_apl_task_switch(void)
{
while( 1 )
{
/* Scheduler */
R_usb_cstd_Scheduler();
if( USB_FLGSET == R_usb_cstd_CheckSchedule() )
{
R_usb_pstd_PcdTask((USB_VP_INT)0);
/* PCD Task */
/* Peripheral Communications Devices Class Task */
R_usb_pcdc_Task(0);
/* Peripheral Communications Class Application Task */
usb_pcdc_main_task(0);
}
}
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 43 of 62
Renesas USB MCU and USB ASSP
6.4
USB Peripheral Communications Device Class Driver (PCDC)
ユーザ定義テーブル
PCD が使用するディスクリプタテーブルおよびパイプ情報テーブルを作成する必要があります。
サンプルの r_usb_pcdc_descriptor.c ファイルを参考に作成してください。
詳細は「Renesas USB MCU and USB ASSP USB Basic Firmware アプリケーションノート」をご参照ください。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 44 of 62
Renesas USB MCU and USB ASSP
7.
USB Peripheral Communications Device Class Driver (PCDC)
コミュニケーションポートドライバ(CPD)
コミュニケーションポートドライバ(以降 CPD と記します。)は、RSK の UART 用に用意したシリアル
通信ドライバです。
RSK 以外の H/W 環境で使用される場合は、使用される環境に合わせたシリアル通信ドライバを御用意下さ
い。
7.1
基本機能
CPD の主な機能は以下のとおりです。
1) シリアルポート HW(SCI)を制御し、通信設定を行います。
2) シリアルポートへのデータ送信および、シリアルポートからのデータ受信を行います。
3) シリアルポート HW を使用せず、仮想シリアル通信を行うエコーモードをサポートします。
7.2
機能概要
CPD が提供する機能を以下に記します。
1) シリアルポート H/W(SCI)への通信設定。
・回線速度 1200bps~115200bps
通信速度は MCU の周辺モジュールクロック”PCLK:48MHz設定”から生成します。
PCLK 設定変更時は、SCI のシリアルモードレジスタ(SMR)CKS[1:0] クロック選択ビット及び、ビッ
トレートレジスタ(BRR)設定の変更が必要です。
・パリティビット(なし、偶数、奇数)
・ストップビット(1 ビット、2 ビット)
・データ長(7 ビット、8 ビット)
2) 送信機能
シリアルポートへの送信動作は、送信データを CPD の有するリングバッファへ格納し、送信データエン
プティ割り込みにより 1 バイトずつ送信を行います。
3) 受信機能
シリアルポートに対する受信動作は、受信データフル割り込みにより受信したデータを CPD の有するリ
ングバッファへ格納します。
CPD の提供する受信データ読み出し API を使用して、受信データ処理を行ってください。
4) 送信バッファビジー判定機能
CPD の有する送信用リングバッファの使用状態を調べ、送信処理要求が受け付けられるか判定します。
5) エコーモード機能
シリアルポート HW を使用しないで、シリアルポートに送信するデータを、シリアルポートからの受信
データとして処理を行うための機能を有します。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 45 of 62
Renesas USB MCU and USB ASSP
7.3
CPD
USB Peripheral Communications Device Class Driver (PCDC)
API 関数
Table 7-1にCPDの関数を示します。
Table 7-1 CPD 関数一覧
関数名
usb_cpu_Sci_DataSend
usb_cpu_Sci_DataReceive
usb_cpu_Sci_StxBuffStatus
usb_cpu_Sci_Buffer_init
usb_cpu_Sci_HW_init
usb_cpu_Sci_enable
usb_cpu_Sci_disable
usb_cpu_Sci_CopyData_for_Echo
usb_cpu_Sci_GetSerialState
R01AN0273JJ0210 Rev.2.10
2013.4.1
説明
シリアルポートデータ送信処理
シリアルポートデータ受信処理
シリアル送信バッファ状態取得処理
CPD 使用変数初期化処理
シリアルポート HW 初期化処理
シリアルポート動作許可
シリアルポート動作禁止
シリアル送信データをシリアル受信データ領域に
コピーする。(エコーモード用)
シリアルポート(エラー)状態を取得する。
Page 46 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_DataSend
シリアルポートデータ送信処理
形式
void
引数
mode
*tranadr
length
戻り値
usb_cpu_Sci_DataSend(uint16_t mode, void *tranadr, uint16_t length)
動作モード指定
0:UART への送信 1:USB ループバック(エコーモード)
送信データアドレス
送信データサイズ(単位 Byte)
-
解説
UART にデータ送信を行います。
tranadr で示されるアドレスから、length で指定された送信データサイズを UART 送信バッファに格納し
ます。
UART 送信バッファに格納されたデータは、UART 割込み処理によって送信されます。
動作モード指定が 0(UART への送信)の場合、UART 送信割込みを許可にします。
補足
動作モード指定が 1(USB ループバック)の場合、UART 送信割込みは禁止のままなので、UART
からの送信は行われません。
2. USB ループバックモードの場合は、エコーモード用データコピー処理
(usb_cpu_Sci_CopyData_for_Echo)によって UART 送信バッファに格納されたデータを UART 受信
バッファに移し、USB へループバック送信を行います。
使用例
1.
uint16_t echo_mode = 0; /* UART へ送信 */
uint8_t send_data[] = {0x01,0x02,0x03,0x04,0x05}; /* UART へ送信するデータ */
uint16_t data_cnt = 5; /* UART へ送信するデータ数 */
/* UART へ 5 バイトのデータ送信 */
usb_cpu_Sci_DataSend(_echo_mode, (void*)&send_data , data_cnt);
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 47 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_DataReceive
シリアルポートデータ受信処理
形式
uint16_t
引数
usb_cpu_Sci_DataReceive(uint8_t *tranadr,uint16_t receive_length)
*tranadr
length
戻り値
受信データアドレス
受信要求データサイズ(単位 Byte)
-
解説
受信バッファから取出したサイズ(単位 Byte)
UART データ受信を行います。
UART 受信割込み処理によって、UART 受信バッファに格納された受信データを取出します。
tranadr で示されるアドレスに length で要求したサイズ分、UART 受信バッファからデータを取出し、格
納します。
戻り値には実際に受信したサイズを返します。
補足
-
使用例
uint16_t
uint8_t
uint16_t
rcv_cnt;
/* 取出せた受信データサイズ */
receive_data[64]; /* 受信したデータを格納する領域 */
size;
/* 受信要求データサイズ */
rcv_cnt = 64;
/* 64Byte のデータ受信要求 */
rcv_cnt = usb_cpu_Sci_DataReceive( (void*)receive_data, size );
if( rcv_cnt > 0 )
{
/* receive_data[]に rcv_cnt サイズ分の UART 受信データ格納 */
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 48 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_StxBuffStatus
シリアル送信バッファ状態取得処理
形式
uint16_t
引数
usb_cpu_Sci_StxBuffStatus (void)
-
戻り値
-
解説
0:送信バッファ空きあり 1:送信バッファ空きなし
UART ドライバ送信バッファの状態を取得します。
UART 送信バッファに、USB 受信データを格納するサイズ分の空きがあるかチェックします。USB 受信
データを格納する分の空きがあれば0、空きがなければ1を返します。
補足
1.
本 API は USB-UART 変換のフロー制御を行うことを目的としています。
使用例
if ( usb_cpu_Sci_StxBuffStatus() == 0 )
{
/* 送信バッファ空きあり */
}
else
{
/* 送信バッファ空きなし */
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 49 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_Buffer_init
CPD 使用変数初期化処理
形式
void
引数
usb_cpu_Sci_Buffer_init(void)
-
戻り値
-
-
解説
-
UART ドライバ送受信バッファ領域の初期化を行います。
補足
1.
UART 送受信を開始する前に本関数を呼出してください。
使用例
usb_cpu_Sci_Buffer_init();
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 50 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_HW_init
シリアルポート HW 初期化処理
形式
void
引数
usb_cpu_Sci_HW_init (void)
-
戻り値
-
-
解説
-
UART モジュールのストップ状態を解除し、UART モジュールを動作可能な状態にします。
また UART 割込み許可設定、UART を使用する為のポート設定も行います。
補足
1.
2.
使用例
UART 割込みを使用する為に、UART 割込みベクタを登録する必要があります。
UART割込みベクタ登録は"7.5 HWリソース"を参照して下さい。
usb_cpu_Sci_HW_init();
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 51 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_enable
シリアルポート動作許可
形式
void
引数
usb_cpu_Sci_enable(void)
-
戻り値
-
-
解説
-
UART コントローラに送信動作許可及び受信動作許可設定を行ないます。
補足
-
使用例
usb_cpu_Sci_enable();
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 52 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_disable
シリアルポート動作禁止
形式
void
引数
usb_cpu_Sci_disable (void)
-
戻り値
-
-
解説
-
UART コントローラに送信動作禁止及び受信動作禁止設定を行ないます。
補足
-
使用例
usb_cpu_Sci_disable();
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 53 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_CopyData_for_Echo
シリアル送信データをシリアル受信データ領域にコピーする
形式
uint16_t
引数
usb_cpu_Sci_CopyData_for_Echo(void)
-
戻り値
-
-
解説
エラーコード:USB_OK
USB ホストから受信したデータを、UART 受信バッファに移動します。
UART 受信バッファに移動したデータは、UARTデータ受信処理(usb_cpu_Sci_DataReceive)によって取
出され、USB ホストへ送信されます。
補足
1.
使用例
エラーコードには常に USB_OK を返します。
usb_cpu_Sci_CopyData_for_Echo();
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 54 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
usb_cpu_Sci_GetSerialState
シリアルポート(エラー)状態を取得する
形式
uint16_t
引数
usb_cpu_Sci_GetSerialState(uint16_t *serial_state)
serial_state
戻り値
シリアルステータスレジスタ値格納領域
-
解説
エラーコード 0:UART エラーなし 1:UART エラー検出
シリアルステータスレジスタから読み出したエラー情報を、CDC クラスノーティフィ
ケーション・シリアルステータスのフォーマットに合わせて設定します。
補足
1.
使用例
本関数で設定するエラー種別はオーバーランエラー、フレーミングエラー、パリティエラーです。
void usb_pcdc_serial_state_process(USB_UTR_t *ptr)
{
uint16_t serial_stat;
uint16_t serial_error;
serial_error = usb_cpu_Sci_GetSerialState(&serial_stat);
if( serial_error )
{
if( serial_stat != usb_gpcdc_serial_state )
{
usb_ghcdc_SerialState_Table[4] = serial_stat;
write( usb_spcdc_ctl_fn, (uint8_t*)&usb_ghcdc_SerialState_Table[0],
USB_CDC_SETUP_TBL_BSIZE );
}
}
}
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 55 of 62
Renesas USB MCU and USB ASSP
7.4
USB Peripheral Communications Device Class Driver (PCDC)
CPD 動作説明
送信動作、受信動作、エコーモード動作説明を以下に記します。
7.4.1
送信動作
CPD は送信動作用に Full-Speed の場合 64 バイト×8、Hi-Speed の場合 512 バイト×8 のリングバッファを有
します。
[シリアルポート・データ送信処理での動作]
リングバッファに送信データを格納し、書き込みポインタを更新します。
リングバッファへのデータ格納後、送信割り込み許可・禁止を確認し、送信割り込み許可の場合、処理を
終了します。
送信割り込みが禁止になっている場合、送信割り込みを許可に設定します。
[送信割り込み処理での動作]
書き込みポインタと読み出しポインタを比較し、送信すべきデータが存在するか調べます。
送信データがある場合、データを 1 バイト送信し、読み出しポインタを更新します。
送信データがない場合、送信割り込みを禁止にします。
Figure 7-1 CPD 送信動作
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 56 of 62
Renesas USB MCU and USB ASSP
7.4.2
USB Peripheral Communications Device Class Driver (PCDC)
受信動作
CPD は受信動作用にリングバッファを有します。
[受信割り込み処理での動作]
受信データをリングバッファに格納し、書き込みポインタを更新します。
[シリアルポート・データ受信処理での動作]
書き込みポインタと読み出しポインタを比較し、取り出せる受信データが存在するか調べます。
取り出せるデータがある場合、リングバッファから受信データを取り出し、読み出しポインタを更新しま
す。
Figure 7-2 CPD 受信動作
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 57 of 62
Renesas USB MCU and USB ASSP
7.4.3
USB Peripheral Communications Device Class Driver (PCDC)
エコーモード動作
エコーモード動作はシリアルポート HW を使用せず、シリアルポートに送信するデータを、シリアルポー
トからのデータ受信とみなします。
エコーモードを実現するために、シリアルポート・データ送信処理関数"usb_cpu_Sci_DataSend"にエコー
モードを追加し、送信データを受信データにコピーする関数" usb_cpu_Sci_CopyData_for_Echo"を用意しまし
た。
[シリアルポート・データ送信処理関数:usb_cpu_Sci_DataSend]
引数の動作モードをエコーモードにすることで、動作が次のように変化します。
(1) シリアルポート HW に対する送信処理(データ送信および、送信割り込み許可)を行いません。
[データコピー処理:usb_cpu_Sci_CopyData_for_Echo]
データコピー処理は送信リングバッファから送信データを取り出し、受信リングバッファへ書き込みます。
データコピー処理は、エコーモードの場合にシリアルポート・データ受信処理"usb_cpu_Sci_DataReceive"
の前に処理を行います。
データコピー処理には、ライトポインタがリードポインタを追い越さないようガード処理を入れています。
シリアルポートへの送信データ
usb_gcpu_stxdata[*]
送信データ書き込みポインタ
usb_gpcdc_stx_wp
データコピー処理
usb_cpu_Sci
_CopyData_for_Echo
送信データ読み出しポインタ
usb_gpcdc_stx_rp
シリアルポートからの受信データ
usb_gpcdc_srxdata[*]
受信データ書き込みポインタ
usb_gpcdc_srx_wp
* Full-Speedの場合、64バイト×8
Hi-Speedの場合、512バイト×8
Figure 7-3 CPD エコーモード動作
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 58 of 62
Renesas USB MCU and USB ASSP
7.5
USB Peripheral Communications Device Class Driver (PCDC)
HW リソース
CPD の HW リソースとしてマイコンのシリアル・コミュニケーション・インタフェースを使用します。
シリアル・コミュニケーション・インタフェースの割り込みベクタ(送信バッファエンプティ割り込み、
受信割り込み、受信エラー割り込み)に対応する関数の割当を行います。
Table 7-2 SCI2 割り込みベクタ(RX62N の場合)
ベクタ番号
222
223
224
225
割り込み内容
SCI2 受信エラー割り込み
SCI2 受信割り込み
SCI2 送信バッファエンプティ割り込み
SCI2 送信完了割り込み
Table 7-3
ベクタ番号
214
215
216
114
登録する割り込み処理
usb_cpu_Sci_ER_Int()
usb_cpu_Sci_RX_Int()
usb_cpu_Sci_TX_Int()
usb_cpu_Sci_TE_Int()
SCIO 割り込みベクタ(RX63N,RX630 の場合)
割り込み内容
SCIO 受信割り込み
SCIO 送信バッファエンプティ割り込み
SCIO 送信完了割り込み
グループ 12 割り込み ERIO
(SCIO 受信エラー割り込み)
登録する割り込み処理
usb_cpu_Sci_RX_Int()
usb_cpu_Sci_TX_Int()
usb_cpu_Sci_TE_Int()
usb_cpu_Sci_ER_Int()
通信速度は、MCU の周辺モジュールクロック(PCLK:48MHz設定)を使用して設定します。
Table 7-4
通信速度
SCI 通信速度設定
シリアルモードレジスタ(SMR)
CKS[1:0] クロック選択ビット
1 0:PCLK/16 クロック(3MHz)
ビットレートレジスタ(BRR)
1200bps
77
2400bps
38
4800bps
77
0 1:PCLK/4 クロック(12MHz)
9600bps
155
分周なし
14400bps
103
0 0:PCLK クロック(48MHz)
19200bps
77u
38400bps
38
57600bps
25
115200bps
12
設定値算出方法については使用される MCU ハードウエアマニュアルのビットレートレジスタ(BRR)
説明を参照下さい。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 59 of 62
Renesas USB MCU and USB ASSP
8.
USB Peripheral Communications Device Class Driver (PCDC)
uITRON/non-OS への登録方法
詳細は、Renesas USB MCU and USB ASSPUSB Basic Firmware アプリケーションノートの「9.1 non-OS への
登録方法」、「9.2 RTOS への登録方法」を参照してください。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 60 of 62
Renesas USB MCU and USB ASSP
9.
USB Peripheral Communications Device Class Driver (PCDC)
制限事項
CPD には、以下の制限事項があります。
CTS/RTS 制御ができないため、ターミナルソフトのフロー制御は"none"設定としてください。
Break 信号出力処理は実装していません。
RTS/DTR 制御処理は実装していません。
SetLineCoding データ端末の速度で対応する速度は以下の設定とします。
1200bps, 2400bps, 4800bps, 9600bps, 19200bps, 38400bps, 57600bps,115200bps
5. SetLineCoding ストップビット 1.5 Stop bits は非サポートとします。
6. SetLineCoding データビットは 7Data bits,8Data bits をサポートします。
1.
2.
3.
4.
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 61 of 62
Renesas USB MCU and USB ASSP
USB Peripheral Communications Device Class Driver (PCDC)
ホームページとサポート窓口
ルネサス エレクトロニクスホームページ
http://japan.renesas.com/
お問合せ先
http://japan.renesas.com/inquiry
すべての商標および登録商標は、それぞれの所有者に帰属します。
R01AN0273JJ0210 Rev.2.10
2013.4.1
Page 62 of 62
改訂記録
Rev.
1.00
1.10
発行日
2011.03.22
2011.08.10
ページ
—
表紙,他
4
29
50
2.00
2.01
2.10
2012.7.1
2013.2.1
2013.4.1
—
—
—
改訂内容
ポイント
初版発行
動作確認デバイスに RX630、R8A66597 の追加
上記追加に伴い、RX630 に関する内容、R8A66597(Hi-Speed
USB)に関する内容を追加
2.2 ファイル一覧のシリアルポートドライバのファイル削除
5.ペリフェラル用 CDC サンプルアプリケーション(APL)のアプ
リケーション仕様変更
・SW1 使用禁止
・SW 押下表記を機能スイッチ表記に変更
6.コミュニケーションポートドライバ(CPD)の関数名、定義値の
変更
・”R_usb_ComPort”、”usb_ComPort”を”USB_cpu_Sci”に変更
・”USB_PCDC_”を”USB_SCI”に変更
ファームウエアアップデートによるドキュメントの改訂
“1.5 本書の読み方”を追加、その他ケアレスミスの修正
V.2.10 用 First Release
動作確認デバイスに RX63T, R8A66593 を追加。この追加に伴
いこれらのデバイスに関する内容を追加
A-1
製品ご使用上の注意事項
ここでは、マイコン製品全体に適用する「使用上の注意事項」について説明します。個別の使用上の注意
事項については、本ドキュメントおよびテクニカルアップデートを参照してください。
1.
2.
3.
4.
5.
未使用端子の処理
【注意】未使用端子は、本文の「未使用端子の処理」に従って処理してください。
CMOS 製品の入力端子のインピーダンスは、一般に、ハイインピーダンスとなっています。未使用
端子を開放状態で動作させると、誘導現象により、LSI 周辺のノイズが印加され、LSI 内部で貫通電
流が流れたり、入力信号と認識されて誤動作を起こす恐れがあります。未使用端子は、本文「未使用
端子の処理」で説明する指示に従い処理してください。
電源投入時の処置
【注意】電源投入時は,製品の状態は不定です。
電源投入時には、LSI の内部回路の状態は不確定であり、レジスタの設定や各端子の状態は不定で
す。
外部リセット端子でリセットする製品の場合、電源投入からリセットが有効になるまでの期間、端子
の状態は保証できません。
同様に、内蔵パワーオンリセット機能を使用してリセットする製品の場合、電源投入からリセットの
かかる一定電圧に達するまでの期間、端子の状態は保証できません。
リザーブアドレス(予約領域)のアクセス禁止
【注意】リザーブアドレス(予約領域)のアクセスを禁止します。
アドレス領域には、将来の機能拡張用に割り付けられているリザーブアドレス(予約領域)がありま
す。これらのアドレスをアクセスしたときの動作については、保証できませんので、アクセスしない
ようにしてください。
クロックについて
【注意】リセット時は、クロックが安定した後、リセットを解除してください。
プログラム実行中のクロック切り替え時は、切り替え先クロックが安定した後に切り替えてくださ
い。
リセット時、外部発振子(または外部発振回路)を用いたクロックで動作を開始するシステムでは、
クロックが十分安定した後、リセットを解除してください。また、プログラムの途中で外部発振子
(または外部発振回路)を用いたクロックに切り替える場合は、切り替え先のクロックが十分安定し
てから切り替えてください。
製品間の相違について
【注意】型名の異なる製品に変更する場合は、製品型名ごとにシステム評価試験を実施してくださ
い。
同じグループのマイコンでも型名が違うと、内部 ROM、レイアウトパターンの相違などにより、電
気的特性の範囲で、特性値、動作マージン、ノイズ耐量、ノイズ輻射量などが異なる場合がありま
す。型名が違う製品に変更する場合は、個々の製品ごとにシステム評価試験を実施してください。
ご注意書き
1. 本資料に記載された回路、ソフトウェアおよびこれらに関連する情報は、半導体製品の動作例、応用例を説明するものです。お客様の機器・システムの設計におい
て、回路、ソフトウェアおよびこれらに関連する情報を使用する場合には、お客様の責任において行ってください。これらの使用に起因して、お客様または第三
者に生じた損害に関し、当社は、一切その責任を負いません。
2. 本資料に記載されている情報は、正確を期すため慎重に作成したものですが、誤りがないことを保証するものではありません。万一、本資料に記載されている情報
の誤りに起因する損害がお客様に生じた場合においても、当社は、一切その責任を負いません。
3. 本資料に記載された製品デ-タ、図、表、プログラム、アルゴリズム、応用回路例等の情報の使用に起因して発生した第三者の特許権、著作権その他の知的財産権
に対する侵害に関し、当社は、何らの責任を負うものではありません。当社は、本資料に基づき当社または第三者の特許権、著作権その他の知的財産権を何ら許
諾するものではありません。
4. 当社製品を改造、改変、複製等しないでください。かかる改造、改変、複製等により生じた損害に関し、当社は、一切その責任を負いません。
5. 当社は、当社製品の品質水準を「標準水準」および「高品質水準」に分類しており、
各品質水準は、以下に示す用途に製品が使用されることを意図しております。
標準水準:
コンピュータ、OA機器、通信機器、計測機器、AV機器、
家電、工作機械、パーソナル機器、産業用ロボット等
高品質水準:輸送機器(自動車、電車、船舶等)、交通用信号機器、
防災・防犯装置、各種安全装置等
当社製品は、直接生命・身体に危害を及ぼす可能性のある機器・システム(生命維持装置、人体に埋め込み使用するもの等)、もしくは多大な物的損害を発生さ
せるおそれのある機器・システム(原子力制御システム、軍事機器等)に使用されることを意図しておらず、使用することはできません。
たとえ、意図しない用
途に当社製品を使用したことによりお客様または第三者に損害が生じても、当社は一切その責任を負いません。なお、ご不明点がある場合は、当社営業にお問い
合わせください。
6. 当社製品をご使用の際は、当社が指定する最大定格、動作電源電圧範囲、放熱特性、実装条件その他の保証範囲内でご使用ください。当社保証範囲を超えて当社製
品をご使用された場合の故障および事故につきましては、当社は、一切その責任を負いません。
7. 当社は、当社製品の品質および信頼性の向上に努めていますが、半導体製品はある確率で故障が発生したり、使用条件によっては誤動作したりする場合がありま
す。また、当社製品は耐放射線設計については行っておりません。当社製品の故障または誤動作が生じた場合も、人身事故、火災事故、社会的損害等を生じさせ
ないよう、お客様の責任において、冗長設計、延焼対策設計、誤動作防止設計等の安全設計およびエージング処理等、お客様の機器・システムとしての出荷保証
を行ってください。特に、マイコンソフトウェアは、単独での検証は困難なため、お客様の機器・システムとしての安全検証をお客様の責任で行ってください。
8. 当社製品の環境適合性等の詳細につきましては、製品個別に必ず当社営業窓口までお問合せください。ご使用に際しては、特定の物質の含有・使用を規制する
RoHS指令等、適用される環境関連法令を十分調査のうえ、かかる法令に適合するようご使用ください。お客様がかかる法令を遵守しないことにより生じた損害に
関して、当社は、一切その責任を負いません。
9. 本資料に記載されている当社製品および技術を国内外の法令および規則により製造・使用・販売を禁止されている機器・システムに使用することはできません。ま
た、当社製品および技術を大量破壊兵器の開発等の目的、軍事利用の目的その他軍事用途に使用しないでください。当社製品または技術を輸出する場合は、「外
国為替及び外国貿易法」その他輸出関連法令を遵守し、かかる法令の定めるところにより必要な手続を行ってください。
10. お客様の転売等により、本ご注意書き記載の諸条件に抵触して当社製品が使用され、その使用から損害が生じた場合、当社は何らの責任も負わず、お客様にてご負
担して頂きますのでご了承ください。
11. 本資料の全部または一部を当社の文書による事前の承諾を得ることなく転載または複製することを禁じます。
注1. 本資料において使用されている「当社」とは、ルネサスエレクトロニクス株式会社およびルネサスエレクトロニクス株式会社がその総株主の議決権の過半数
を直接または間接に保有する会社をいいます。
注2. 本資料において使用されている「当社製品」とは、注1において定義された当社の開発、製造製品をいいます。
http://www.renesas.com
■営業お問合せ窓口
※営業お問合せ窓口の住所・電話番号は変更になることがあります。最新情報につきましては、弊社ホームページをご覧ください。
ルネサス エレクトロニクス販売株式会社 〒100-0004 千代田区大手町 2-6-2 (日本ビル)
(03)5201-5307
■技術的なお問合せおよび資料のご請求は下記へどうぞ。
総合お問合せ窓口:http://japan.renesas.com/contact/
© 2013 Renesas Electronics Corporation. All rights reserved.
Colophon 2.0