Renesas Synergy™

FAQ 2000016 : USBXを使用したシリアル通信の方法は?

このガイドでは、Synergyデバイス上でUSBを介したシリアルプロトコル通信を行うために必要な手順を紹介します。
このガイドはお客様がe2studioとSynergyツールチェーンの基本について理解されていることを前提として、説明しています。
ワークスペースの設定と最初のプロジェクトの実行についての詳細は、<SSPユーザズマニュアル>のStarting Developmentセクションをご参照ください。

このガイドに記載された手順により、シリアルUSBエミュレーションを使用したデータの送受信ができるようになります。
通信フレームワークを備えたUSBXをプロジェクトに実装して、提供されたAPIを使用することで、Synergyボードをシリアル通信デバイスにできるようになります。
このサンプルを完了すれば、データを送受信するために選択したシリアルモニタ(すなわち、PuTTY)へデバイスを接続できるようになります。

手順
初期設定
USBを介して通信を行うため、まず初めにSynergyソフトウェアツールとSSPをPCにインストールして、Synergyのターゲットボードを利用できるようにする必要があります。
そうでない場合は、以下に示すSSPユーザズマニュアルへのリンクに従って進み、SSP OverviewセクションおよびStarting Developmentセクションをお読みください。

<Synergyソフトウェアプラットフォームユーザズマニュアル>
プロジェクトを作成する
上記手順を行うことで、Synergyプラットフォームのツールフローが実行され、非スレッド形式のBlinkyバージョンでターゲットボードを動作させることができます。

以上で、USBXと通信フレームワークを使用したThreadXベースのサンプルに対応する準備は完了です。

1.e2 studioを開いて、Synergyプロジェクトを新規作成します(必要に応じてSSPユーザズマニュアルを再度ご参照ください)。
2.ボードをターゲットにして、BSPオプションを選択します。
3.本プロジェクトの土台となるBSPテンプレートを選択します。

必要なコンポーネントを追加する
この手順では、シリアルUSBエミュレーションをSynergyで行うために必要なコンポーネントを、プロジェクトに組み込むための設定を行います。

1.ConfigurationウィンドウのThreadsタブを開きます。
2.新しいスレッドをプロジェクトに追加します。これにより、ThreadX RTOSが使用可能になります。
3.新しいスレッドに以下のモジュールを追加します。
◦ USBXをuxへ(フレームワーク/USBの下)
◦ USBX Port HSとFSをsf_el_uxへ(Framework/USB)
◦ USBX Device Class CDC ACMをux_device_class_cdc_acmへ(フレームワーク/USB)
◦ 通信フレームワークをsf_el_ux_commsへ(フレームワーク/接続性)
4.モジュールリストでUSBX Port HSとFSを選択し、Propertiesタブへ進みます。優先順位を選択してUSBFS INT割り込みを有効にします。

5.Generate Project Contentボタンを押します。
6.srcディレクトリにnew_thread_entry.cファイル(にしくは同様のもので、作成したスレッドに付けた名前に依存する)を確認します。

7.new_thread_entry.cを開いて、Whileループ内に以下のコードを追加します。
static uint8_t serial_in;
g_sf_comms.p_api->read(g_sf_comms.p_ctrl, &serial_in, 1, TX_WAIT_FOREVER);
g_sf_comms.p_api->write(g_sf_comms.p_ctrl, (uint8_t *) &"Renesas Synergy!\n\r", 18, TX_WAIT_FOREVER);

8.ファイルに対して行った変更を保存し、プロジェクトのデバッグコンフィギュレーションをビルドします。
9.デザインは、エラーを発生することなくビルドされます。エラーが発生する場合は、追加したコードを慎重に確認してください。何らかの文字抜けや追加が生じている可能性があります。
エラーを発生することなくビルドされたら、ターゲットボード上でシリアルUSB通信を行うことができます。

シリアルUSBで通信する
1.USBマイクロケーブルを2本、ボードに接続します。1本はプログラマとデバッガに使用し、もう1本はシリアル通信に使用します。

2.デバッガを初期化し、新しいプロジェクトのビルドコンフィギュレーションを選択します。
3.Debugボタンをクリックして、デバッグパースペクティブを立ち上げます。
4.デバッグセッションは、デザイン開始時は停止していますので、Resumeボタンを2回押してボード上での実行を開始します。
5.選択したシリアルモニタリングソフトウェアを立ち上げます。Synergyボードに割り当てたものと一致する有効COMポートが選択されていることを確認します(デバイスマネージャで確認)。
6.任意の文字をターミナルウィンドウに入力すると、ボードの通信が元に戻ります。

シリアルUSBの仕組み
Synergyコンフィギュレータが生成したコードによって、USBを介したシリアル伝送をエミュレートするようにデバイスが設定されます。
スレッド設定中(synergy_genフォルダ内)、フレームワークはUSB CDCのデフォルト設定で初期化されます。
一度ユーザコードが実行されると、デバイスは入力されるデータ(1バイト)を無限に待ち続けます(TX_WAIT_FOREVER)。
1バイトを受信するとserial_in変数に保管し、プログラムを進めて「Renesas Synergy!」をシリアルモニタに書き込み、それに続く復帰とキャリッジリターンをシリアルモニタに書き込みます。
再び、受信側が利用可能(TX_WAIT_FOREVER)になるまでボードが待機してから、データを送ります。

入力を解釈するコードが存在しないため、受信した値にかかわらず、プログラムは続いて書き戻しを行います。
ユーザコードが永久Whileループ(while(1))に配置されるため、前述の処理が無限に繰り返されます。

このサンプルの通信フレームワークAPIの主要エレメントは、以下のreadとwriteです。

g_sf_comms.p_api->read(g_sf_comms.p_ctrl, p_dest, length, timeout);
g_sf_comms.p_api->write(g_sf_comms.p_ctrl, p_source, length, timeout);

両関数とも、以下の類似した引き数を要求します。:フレームワーク制御構造へのポインタ、それに続くデータ構造/目的地へのポインタ、データ項目の長さ(バイト)、およびタイムアウト期間(TX_NO_WAITやTX_WAIT_FOREVERなど)。

このAPIの使用方法の詳細ついては、Synergyソフトウェアパッケージユーザマニュアルをご覧ください。

 

適用製品

Renesas Synergy™ プラットフォーム
Renesas Synergy™ マイクロコントローラ
Renesas Synergy™ ソフトウェア
他にご質問がございましたら、リクエストを送信してください