プロジェクトの作成/インポート
このセクションでは、Utilitiesプラグインのさまざまなオプションを試すために、VK-RA6E1 を使用してプロジェクトを作成する方法について説明します。VK (Voice Kit) ボードには、データ収集用のマイクが付属しています。理想的には、データを収集し、機械学習モデルをテストするために、さまざまなルネサスRA MCU/ボードにセンサーを接続する必要があります。
このサンプルプロジェクトは説明のみを目的としています。RAシリーズの他のボード/MCUでも同じ手順を再現できます。このユーザーマニュアルには、参照可能な完全にセットアップされたサンプルプロジェクトも付属しています。
新規プロジェクトの作成
-
上部ナビゲーションメニューで、File > New をクリックします。
-
File > New に移動し、Renesas C/C++ Project を選択してから、Renesas RA を選択します。
-
新規プロジェクトウィザードウィンドウで、Renesas RA C/C++ Project を選択し、Next をクリックします。

-
プロジェクト名を指定して、Next をクリックします。
-
BSPおよびFSPのインストール環境に一致する FSP バージョン(例:5.5.0)を選択し、接続するボードを設定します。以下の例では、AIK-RA6M3 を使用しています。Debuggerが JLink ARM に設定されていることを確認し、Next をクリックします。

-
次のウィンドウでは、Executable と No RTOS が選択されたままにします。Next をクリックします。
-
新しいプロジェクトが作成されると、e² Studio はルネサスRAプロジェクトの開発に最適化されたレイアウトに切り替わります。
- FSP Configuration ペインの下部にある Stacks タブを選択します。

- FSP Configuration ペインの下部にある Stacks タブを選択します。
-
- New Stack メニューにアクセスし、Connectivity > I2C Communication Device (rm_comms_i2c) を選択します。 Properties タブを使用して、この新しいモジュールに対して以下のプロパティを設定します:
I2C Communication Device のプロパティ
| Name | Slave Address | Callback |
|---|---|---|
| g_comms_i2c_device1 | 0x68 | rm_icm42670_comms_i2c_callback |
なぜ rm_comms_i2c なのか?
センサーで使用されるI2C通信インターフェースを実装するためのミドルウェアだからです。このモジュールは Communications Middleware Interface を実装しています。
特徴:
- I2Cバスを介したデータの読み書き
- I2Cバスへの書き込み後、リスタートして読み取り
- 複数のデバイスで使用される単一のI2Cバス
設定 (Configurations)
rm_comms_i2c のビルド時設定
以下のビルド時設定は fsp_cfg/rm_comms_i2c_cfg.h で定義されています。
rm_comms_i2c のビルド時設定
| Configuration | Options | Default | Description |
|---|---|---|---|
| Parameter Checking | Default (BSP) / Enabled / Disabled | Default (BSP) | 選択した場合、パラメータチェック用のコードがビルドに含まれます。 |
Connectivity > I2C Shared Bus (rm_comms_i2c) の設定
このモジュールは New Stack > Connectivity > I2C Shared Bus (rm_comms_i2c) から追加できます。
I2C Shared Bus (rm_comms_i2c) の設定
| Configuration | Options | Default | Description |
|---|---|---|---|
| Name | 有効なCシンボルである必要があります | g_comms_i2c_bus0 | モジュール名。 |
| Bus Timeout | 非負整数 ≤ 0xFFFFFFFF | 0xFFFFFFFF | RTOSでのバスロックのタイムアウトを設定します。 |
| Semaphore for Blocking (RTOS only) | Unuse / Use | Use | RTOSでのブロッキング用セマフォを設定します。 |
| Recursive Mutex for Bus (RTOS only) | Unuse / Use | Use | RTOSでのバスロック用ミューテックスを設定します。 |
| Channel | 手動入力 | 0 | IICチャンネル |
| Rate | Standard / Fast-mode / Fast-mode plus | Standard | 下位レベルドライバの転送レート。 |
Connectivity > I2C Communication Device (rm_comms_i2c) の設定
このモジュールは New Stack > Connectivity > I2C Communication Device (rm_comms_i2c) から追加できます。
I2C Communication Device (rm_comms_i2c) の設定
| Configuration | Options | Default | Description |
|---|---|---|---|
| Name | 有効なCシンボル | g_comms_i2c_device0 | モジュール名。 |
| Semaphore Timeout (RTOS only) | 整数 ≤ 0xFFFFFFFF | 0xFFFFFFFF | RTOSでのブロッキングのタイムアウトを設定します。 |
| Slave Address | 非負整数 | 0x00 | スレーブアドレスを指定します。 |
| Address Mode | 7-Bit / 10-Bit | 7-Bit | I2Cアドレスモードを選択します。 |
| Callback | 有効なCシンボル | comms_i2c_callback | ユーザーコールバック関数。 |
ピン設定: このモジュールは、I2C Master、SCI I2C、IICA Master、および SAU I2C の SDA ピンと SCL ピンを使用します。
- I2C Communication Device モジュールの g_comms_i2c_bus1 I2C Shared Bus (rm_comms_i2c) で、Properties タブを使用して以下を設定します:
g_comms_i2c_bus1 のプロパティ
| Name | Value |
|---|---|
| Name | g_comms_i2c_bus1 |
| Channel | 1 |
| Rate | Fast-mode |

- I2C Communications Peripherals の追加
I2C Communication Device モジュールで、スタックアイコンをクリックして Add I2C Communications peripherals を選択し、New をクリックして I2C Master (r_iic_master) を選択します。
Properties タブを使用して、この新しいモジュールの以下のプロパティを設定します。
I2C Master のプロパティ
| Property | Value |
|---|---|
| Common > DTC on Transmission and Reception | Enabled |
| Name | g_i2c_master1 |
| Interrupt priority | 12 |
| Timeout Mode | Short Mode |
- 送信用の DTC Driver の追加 (オプション)
I2C Communication Device モジュールで、Add DTC Driver for Transmission [optional] の スタックアイコン をクリックし、New をクリックして Transfer (r_dtc) を選択します。
- 再度 New Stack メニューにアクセスし、Input > External IRQ (
r_icu) を選択します。
Properties タブを使用して、この新しいモジュールの以下のプロパティを設定します。
External IRQ のプロパティ
| Property | Value |
|---|---|
| Name | g_external_irq6_pmod1 |
| Channel | 6 |
| Trigger | Rising |
| Pin Interrupt Priority | Priority 12 |
注意: Channel を 6 に変更すると、ピン IRQ06 が P000 に更新されるはずです。
再度 New Stack メニューにアクセスし、AI > Data Shipper (rm_rai_data_shipper) を追加します。
なぜ rm_rai_data_shipper なのか?
これは、Reality AI アプリケーション用の Data Shipper を実装するためのミドルウェアです。 このモジュールは Data Shipper Interface を実装しています。
概要
RAI Data Shipper は主に、RAI Data Collector によって収集されたデータをPCに送信し、Reality AI モデルのトレーニングに使用できるようにするためのものです。 これは Communications Middleware Interface を利用しており、すべての通信は 完全に非同期 です。
転送されるデータは、以下の任意の組み合わせになります:
- センサーデータ
- システムイベント/エラー
- デバッグデータおよび診断情報(RAIランタイム出力を含む)
センサーデータは、データ準備完了コールバック (data ready callback) を介して Data Collector インスタンス から提供されます。 システムイベントとデバッグデータはアプリケーションによって準備されます。 通信が終了したことをアプリケーションに通知するためにコールバックが使用されます。 センサーデータバッファが使用されない場合は、解放する必要があります。 データ送信中にエラーが発生した場合、エラーフラグが設定されます。
特徴
- 最大 8つの Data Collector インスタンス をサポートします。
- 以下のインターフェースをサポートします:
RM_COMMS_UART(CRC-8 あり/なし)RM_COMMS_USB_PCDC(CRC-8 あり/なし)
設定 (Configurations)
fsp_cfg/rm_rai_data_shipper_cfg.h で定義されています。
rm_rai_data_shipper のビルド時設定
| Configuration | Options | Default | Description |
|---|---|---|---|
| Parameter Checking | Default (BSP) | Enabled | Disabled | Default (BSP) | 選択した場合、パラメータチェック用のコードがビルドに含まれます。 |
| Max Number Of DC Instances | 正の整数 (1–8) | 8 | 送信するDCインスタンスの最大数。 |
AI > Data Shipper (rm_rai_data_shipper) の設定
このモジュールは Stacks タブから New Stack > AI > Data Shipper (rm_rai_data_shipper) を介して追加できます。
AI > Data Shipper の設定
| Configuration | Options | Default | Description |
|---|---|---|---|
| Name | 有効なCシンボル | g_rai_data_shipper0 | モジュール名 |
| Frame Rate Divider | 非負の値 | 0 | 書き込み要求をスキップする頻度 |
| Callback | 有効なCシンボル | rai_data_shipper0_callback | データ送信時またはエラー時のユーザーコールバック関数 |
クロック設定 (Clock Configuration)
このモジュールには 必須のクロック設定はありません。
ピン設定 (Pin Configuration)
このモジュールはI/Oピンを 使用しません。
制限事項
- 双方向通信は サポートされていません — データは常にデバイスからホストへ送信されます。
- ユーザーは、複数の Data Collector インスタンスを使用する場合、競合状態を回避する必要があります。
RM_COMMS_USB_PCDCを Full Speed モード および DMA で使用する場合、8ビットチャンネルが使用されるときは、フレームバッファ長は2の倍数である必要があります。RM_COMMS_USB_PCDCを High Speed モード および DMA で使用する場合:- 16ビットチャンネルの場合、フレームバッファ長は2の倍数である必要があります。
- 8ビットチャンネルの場合、フレームバッファ長は4の倍数である必要があります。
- RAI Data Collector (スナップショットモード) と
RM_COMMS_USB_PCDCは異なるタイマーを使用する必要があります — これらは独立して動作します。
g_rai_data_collector0へのアクセス
Properties タブを使用して、この新しいモジュールの以下のプロパティを設定します。
Data Collector (g_rai_data_collector0) のプロパティ
| Property | Value |
|---|---|
| General > Frame Buffer Length | 512 |
| Data Feed Mode > Channels | 3 |
| Data Feed Mode > Channels 0–2 | チャンネル0、1、2のData Typeを Single Float に設定 |
なぜ g_rai_data_collector なのか?
Reality AI アプリケーション用の Data Collector を実装するためのミドルウェアだからです。このモジュールは Data Collector Interface を実装しています。
概要
Data Collector は、データサンプルがアプリケーションで利用可能になる前に固定長フレームに蓄積されるように、センサーからのデータ収集を抽象化します。バックグラウンドおよび協調的なデータ収集に対応するには、スナップショットモード と データフィードモード のサポートが必要です。各モードは最大 8つのセンサーチャンネル をサポートします。各センサーチャンネルは、個別のフレームバッファにキャプチャされます。フレームバッファは同じ量のデータサンプルを持つ必要がありますが、データ型は異なる場合があります (int32_t, float, uint8_t など)。ユーザーは、フレームバッファが同じレートで満たされるようにする必要があります。
すべてのフレームバッファが満たされると、データ準備完了コールバック (data ready callback) を介してアプリケーションに提供されます。それらが消費された後、アプリケーションは RM_RAI_DATA_COLLECTOR_BufferRelease() を呼び出してそれらを解放する必要があります。シームレスな操作のために、PING-PONG バッファが使用されます。理想的には、もう一方のバッファセットが満たされる前にバッファが解放されます。ただし、アプリケーションがデータの処理に時間がかかりすぎると、フレームバッファオーバーランが発生する可能性があります。これが発生した場合、アプリケーションはエラーコールバックを介して バッファオーバーラン (buffer-overrun) イベントで通知されます。ユーザーの介入は必要ありません。フレームバッファが解放されると、バッファオーバーランは解消されます。すべてのセンサーチャンネルが同じペースで動作するように構成されていない場合、アプリケーションは バッファ非同期 (buffer-out-of-sync) エラーを受け取ります。ユーザーはセンサーチャンネルを再構成し、すべてのチャンネルが同じペースで動作することを確認する必要があります。センサーチャンネルが同じレートで動作できない場合は、複数の Data Collector インスタンスが必要です。
特徴
- スナップショットモードとデータフィードモードがサポートされています。
- 各モードで最大8つのセンサーがサポートされています。
- ミックスモードがサポートされています(スナップショットとデータフィードの両方が有効)。
スナップショットモード (Snapshot Mode)
スナップショットモードは、ユーザー指定のソースから定期的にデータをプルし、指定されたフレームバッファに保存します。これには DTC モジュールと タイマー モジュールが必要です。DTCはチェーンモードで動作し、非線形でサイズの異なる可能性のあるさまざまなソースからのデータ収集を可能にします。タイマー(GPTまたは非同期汎用タイマー)は、DTCを定期的に動作させるための起動ソースを提供します。この起動ソースを選択するには、タイマーモジュールで関連する割り込みを設定する必要があります。アプリケーションは、センサーソースアドレスが登録された後、タイマーを開始してDTCを有効にする必要があります。
データフィードモード (Data Feed Mode)
データフィードモードでは、データの準備ができるたびに、データプロデューサーが指定されたフレームバッファにデータを直接プッシュする必要があります。データは同期的または非同期的にプッシュできます。
- 同期モード: フレームバッファへの短いデータコピー用。
- 非同期モード: データ転送にDTC/DMACを使用します。アプリケーションはDTC/DMACモジュールを追加し、非同期転送用の転送記述子を初期化する必要があります。
使用上の注意
- データフィードモードの Data Collector インスタンスには、DTCスタックとタイマースタックを追加 しないでください。
- ユーザーは、Data Collector インスタンスのすべてのチャンネルが同じペースで動作することを確認する必要があります。
- Data Collector インスタンス内のタイマースタックの割り込み優先レベルは、RM COMMS USB PCDC GPT Overflow 割り込みよりも高く(数値的に低く)なければなりません。
設定 (Configurations)
fsp_cfg/rm_rai_data_collector_cfg.h で定義されています。
rm_rai_data_collector のビルド時設定
| Configuration | Options | Default | Description |
|---|---|---|---|
| Parameter Checking | Default (BSP) / Enabled / Disabled | Default (BSP) | 選択した場合、パラメータチェック用のコードがビルドに含まれます。 |
| Max Number Of Channels | 正の整数 ≤ 16 | 16 | チャンネルの最大数。 |
AI > Data Collector (rm_rai_data_collector) の設定
New Stack > AI > Data Collector (rm_rai_data_collector) から追加します。
AI > Data Collector の設定
| Category | Setting / Field | Options / Constraints | Default Value | Description |
|---|---|---|---|---|
| General | Name | 有効なCシンボルである必要あり | g_rai_data_collector0 | モジュール名 |
| General | ID | 正の整数 | 0 | インスタンスID |
| General | Frame Buffer Length | 正の整数 > 0 | 100 | データサンプル単位のフレームバッファ長 |
| General | Data Ready Callback | 有効なCシンボルである必要あり | rai_data_collector0_callback | データ準備完了時のコールバック関数 |
| General | Error Callback | 有効なCシンボルである必要あり | rai_data_collector0_error_callback | エラーイベント用のコールバック関数 |
| Data Feed | Channel 0 Name | 有効なC変数名 | dc0_data_feed_ch0 | チャンネル名 |
| Data Feed | Channel 0 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 1 Name | 有効なC変数名 | dc0_data_feed_ch1 | チャンネル名 |
| Data Feed | Channel 1 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 2 Name | 有効なC変数名 | dc0_data_feed_ch2 | チャンネル名 |
| Data Feed | Channel 2 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 3 Name | 有効なC変数名 | dc0_data_feed_ch3 | チャンネル名 |
| Data Feed | Channel 3 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 4 Name | 有効なC変数名 | dc0_data_feed_ch4 | チャンネル名 |
| Data Feed | Channel 4 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 5 Name | 有効なC変数名 | dc0_data_feed_ch5 | チャンネル名 |
| Data Feed | Channel 5 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 6 Name | 有効なC変数名 | dc0_data_feed_ch6 | チャンネル名 |
| Data Feed | Channel 6 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channel 7 Name | 有効なC変数名 | dc0_data_feed_ch7 | チャンネル名 |
| Data Feed | Channel 7 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Data Feed | Channels (count) | 0〜8の整数 | 0 | データフィードモードのチャンネル数 |
| Snapshot | Snapshot Channel 0 Name | 有効なC変数名 | dc0_snapshot_ch0 | チャンネル名 |
| Snapshot | Snapshot Channel 0 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 1 Name | 有効なC変数名 | dc0_snapshot_ch1 | チャンネル名 |
| Snapshot | Snapshot Channel 1 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 2 Name | 有効なC変数名 | dc0_snapshot_ch2 | チャンネル名 |
| Snapshot | Snapshot Channel 2 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 3 Name | 有効なC変数名 | dc0_snapshot_ch3 | チャンネル名 |
| Snapshot | Snapshot Channel 3 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 4 Name | 有効なC変数名 | dc0_snapshot_ch4 | チャンネル名 |
| Snapshot | Snapshot Channel 4 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 5 Name | 有効なC変数名 | dc0_snapshot_ch5 | チャンネル名 |
| Snapshot | Snapshot Channel 5 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 6 Name | 有効なC変数名 | dc0_snapshot_ch6 | チャンネル名 |
| Snapshot | Snapshot Channel 6 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Snapshot Channel 7 Name | 有効なC変数名 | dc0_snapshot_ch7 | チャンネル名 |
| Snapshot | Snapshot Channel 7 Data Type | MCU固有のオプション | — | チャンネルデータ型 |
| Snapshot | Channels (count) | 0〜8の整数 | 0 | スナップショットモードのチャンネル数 |
| Snapshot | DTC Transfer Count | 正の整数 > 0 | 1 | 各アクティベーション時のDTC転送カウント |
| Clock Config | — | — | — | このモジュールには必須のクロック設定はありません |
| Pin Config | — | — | — | このモジュールはI/Oピンを使用しません |
- COMMS Driver — USB PCDC (
rm_comms_usb_pcdc) の追加
Data Shipper モジュールの下で:
- Add COMMS Driver をクリックします。
- New → USB PCDC Communication Device (
rm_comms_usb_pcdc) をクリックします。

概要 USB_PCDC上の汎用通信インターフェースを実装するためのミドルウェアです。このモジュールは Communications Middleware Interface を実装しています。
特徴
- ベアメタル用のノンブロッキングAPI。
- RTOS用のノンブロッキングおよびブロッキングAPI。
g_timer0Timer (General PWM -r_gpt) の設定
Timer g_timer0 のプロパティ
| Property | Value |
|---|---|
| General > Period | 500 |
| General > Period Unit | Microseconds |
| Interrupts > Overflow/Crest Interrupt Priority | Priority 12 |
なぜ r_gpt なのか?
RA MCU上のGPT32およびGPT16ペリフェラル用のドライバだからです。このモジュールは Timer Interface を実装しています。
概要
GPTモジュールは、イベントのカウント、外部入力信号の測定、定期的な割り込みの生成、またはGTIOCピンへの定期的またはPWM信号の出力に使用できます。
このモジュールは、GPTペリフェラル GPT32EH, GPT32E, GPT32, および GPT16 をサポートします。
GPT16 は16ビットタイマーです。他のペリフェラル(GPT32EH, GPT32E, および GPT32)は32ビットタイマーです。APIの観点からは、32ビットタイマーはすべてこのモジュールで同じように扱われます。
特徴
- 周期モード、ワンショットモード、PWMモードをサポート。
- PCLK、GTETRGピン、GTIOCピン、またはELCイベントのカウントソースをサポート。
- GTIOCピンのデバウンスフィルタをサポート。
- 信号をピンに出力可能。
- 設定可能な周期(タイマーサイクルあたりのカウント数)。
- PWMモードでの設定可能なデューティサイクル。
- 周期のランタイム再設定をサポート。
- PWMモードでのデューティサイクルのランタイム再設定をサポート。
- コンペアマッチ値のランタイム再設定をサポート。
- カウンタの開始、停止、リセットを行うAPIを提供。
- 現在の周期、ソースクロック周波数、カウント方向を取得するAPIを提供。
- 現在のタイマーステータスとカウンタ値を取得するAPIを提供。
- GTETRGピン、GTIOCピン、またはELCイベントからの外部ソースによる開始、停止、クリア、カウントアップ、カウントダウン、およびキャプチャをサポート。
- 対称および非対称PWM波形生成をサポート。
- ワンショット同期パルス波形生成をサポート。
- デッドタイムの自動付加をサポート。
- コンペアマッチ値でADCスキャンを開始するためのELCイベント生成(Event Link Controller (
r_elc) を参照)およびコンペアマッチ値の更新をサポート。 - POEGチャンネルとのリンクをサポートし、エラー状態が検出されたときにGPT出力を自動的に無効化。
- タイマー停止中のカウンタ値設定をサポート。
- 出力ピンの有効化と無効化をサポート。
- 一度に最大7つのオーバーフロー/アンダーフロー(山/谷)割り込みのスキップをサポート。
- 各コンペアマッチおよびサイクル終了時のピンの出力レベルを設定することにより、カスタムPWM波形の生成をサポート。
r_usb_basicの設定
r_usb_basic のプロパティ
| Property | Value |
|---|---|
| Module > USBFS Interrupt Priority | Priority 10 |
| Module > USBFS Resume Priority | Priority 10 |
| Module > USBFS D0FIFO Interrupt Priority | Priority 10 |
| Module > USBFS D1FIFO Interrupt Priority | Priority 10 |
g_timeout_timer2Timer (General PWM -r_gpt) の設定
Timer g_timeout_timer2 のプロパティ
| Property | Value |
|---|---|
| General > Name | g_timeout_timer2 |
| General > Channel | 2 |
| General > Mode | One-Shot |
| General > Period | 250 |
| General > Period Unit | Millisecond |
| Interrupts > Callback | gpt_timeout_callback |
| Interrupts > Overflow/Crest Interrupt Priority | Priority 13 |
g_led_timer1Timer (General PWM -r_gpt) の設定
Timer g_led_timer1 のプロパティ
| Property | Value |
|---|---|
| General > Name | g_led_timer1 |
| General > Channel | 1 |
| General > Mode | Periodic |
| General > Period | 250 |
| General > Period Unit | Millisecond |
| Interrupts > Callback | rai_led_timer_callback |
| Interrupts > Overflow/Crest Interrupt Priority | Priority 15 |
- RA Configuration の適用
このセクションの RA Configuration は完了です。Configuratorウィンドウの右上にある Generate Project Content ボタンをクリックして、変更をプロジェクトソースに適用します。
Proceed with save and generate というプロンプトが表示されたら、Always save and generate without asking の横にあるボックスにチェックを入れ、Proceed をクリックします。

- コードの生成
FSP Configurator は必要なすべてのドライバを抽出し、Properties タブで提供された設定に基づいてコードを生成します。 これで、必要な Reality AI Model ファイルを追加し、プロジェクトを実行してモデルをテストし、データを収集できます。
既存プロジェクトのインポート
このオプションを使用して、既存のプロジェクト(このドキュメントで提供されているサンプルプロジェクトを含む)を読み込みます。
- 上部ナビゲーションメニューで、File > Import をクリックします。

- Import ダイアログボックスで、General > Existing Projects into Workspace を選択します。

- Select root directory をクリックし、Browse をクリックしてプロジェクトの場所に移動します。

- 必要なプロジェクトを選択し、Finish をクリックします。