Skip to main content

创建/导入项目

本节介绍如何使用 VK-RA6E1 创建项目,以探索 Utilities 插件中的各种选项。VK (Voice Kit) 板带有用于数据收集的麦克风。理想情况下,您需要将某种传感器连接到各种瑞萨 RA MCU/板卡以收集数据并测试机器学习模型。

示例项目仅用于说明目的。您可以使用 RA 系列中的其他板卡/MCU 重复相同的步骤。本用户手册还附带了一个设置完整的示例项目供您参考。

创建新项目

  1. 在顶部导航菜单上,点击 文件 (File) > 新建 (New)

  2. 转到 文件 (File) > 新建 (New) 并选择 Renesas C/C++ Project,然后选择 Renesas RA

  3. 在新项目向导窗口中,选择 Renesas RA C/C++ Project 并点击 下一步 (Next)新建 C/C++ 项目

  4. 指定项目名称并点击 下一步 (Next)

  5. 选择与您的 BSP 和 FSP 安装匹配的 FSP 版本(例如 5.5.0),并将 Board 设置为您连接的板卡。在下面的示例中,我们使用的是 AIK-RA6M3。确认 Debugger 设置为 JLink ARM 并点击 下一步 (Next)Renesas RA C/C++ 项目

  6. 在下一个窗口中,保留选中 ExecutableNo RTOS。点击 下一步 (Next)

  7. 创建新项目后,e² Studio 将切换到针对开发瑞萨 RA 项目优化的布局。

    • FSP Configuration 窗格底部选择 Stacks (栈) 选项卡。 FSP 配置
    1. 访问 New Stack (新栈) 菜单并选择 Connectivity > I2C Communication Device (rm_comms_i2c)。 使用 Properties (属性) 选项卡为该新模块配置以下属性:

I2C 通信设备属性

NameSlave AddressCallback
g_comms_i2c_device10x68rm_icm42670_comms_i2c_callback

为什么选择 rm_comms_i2c

用于实现传感器使用的 I2C 通信接口的中间件。此模块实现了 通信中间件接口

特性:

  • 通过 I2C 总线读取和写入数据
  • 写入 I2C 总线,然后通过 restart 读取
  • 多个设备使用单个 I2C 总线

配置

rm_comms_i2c 的构建时配置 以下构建时配置在 fsp_cfg/rm_comms_i2c_cfg.h 中定义。

rm_comms_i2c 的构建时配置

ConfigurationOptionsDefaultDescription
Parameter CheckingDefault (BSP) / Enabled / DisabledDefault (BSP)如果选中,构建中将包含参数检查代码。

配置 Connectivity > I2C Shared Bus (rm_comms_i2c)

可以通过 New Stack > Connectivity > I2C Shared Bus (rm_comms_i2c) 添加此模块。

I2C 共享总线 (rm_comms_i2c) 的配置

ConfigurationOptionsDefaultDescription
Name名称必须是有效的 C 符号g_comms_i2c_bus0模块名称。
Bus Timeout非负整数 ≤ 0xFFFFFFFF0xFFFFFFFF设置 RTOS 中锁定总线的超时时间。
Semaphore for Blocking (RTOS only)Unuse / UseUse设置 RTOS 中阻塞用的信号量。
Recursive Mutex for Bus (RTOS only)Unuse / UseUse设置 RTOS 中锁定总线用的互斥锁。
Channel手动输入0IIC 通道
RateStandard / Fast-mode / Fast-mode plusStandard底层驱动程序的传输速率。

配置 Connectivity > I2C Communication Device (rm_comms_i2c)

可以通过 New Stack > Connectivity > I2C Communication Device (rm_comms_i2c) 添加此模块。

I2C 通信设备 (rm_comms_i2c) 的配置

ConfigurationOptionsDefaultDescription
Name有效的 C 符号g_comms_i2c_device0模块名称。
Semaphore Timeout (RTOS only)整数 ≤ 0xFFFFFFFF0xFFFFFFFF设置 RTOS 中阻塞的超时时间。
Slave Address非负整数0x00指定从机地址。
Address Mode7-Bit / 10-Bit7-Bit选择 I2C 地址模式。
Callback有效的 C 符号comms_i2c_callback用户回调函数。

引脚配置: 此模块使用 I2C Master, SCI I2C, IICA Master 和 SAU I2C 的 SDA 和 SCL 引脚。


  1. 在 I2C Communication Device 模块的 g_comms_i2c_bus1 I2C Shared Bus (rm_comms_i2c) 中,使用 Properties 选项卡配置以下内容:

g_comms_i2c_bus1 的属性

NameValue
Nameg_comms_i2c_bus1
Channel1
RateFast-mode

I2C 通信设备

  1. 添加 I2C 通信外设

I2C Communication Device 模块中,点击 栈图标Add I2C Communications 外设,然后点击 New 并选择 I2C Master (r_iic_master)

使用 Properties 选项卡为该新模块配置以下属性。

I2C Master 属性

PropertyValue
Common > DTC on Transmission and ReceptionEnabled
Nameg_i2c_master1
Interrupt priority12
Timeout ModeShort Mode
  1. 添加传输用的 DTC 驱动程序(可选)

I2C Communication Device 模块中,点击 Add DTC Driver for Transmission [optional]栈图标,然后点击 New 并选择 Transfer (r_dtc)

  1. 再次访问 New Stack 菜单并选择:Input > External IRQ (r_icu)

使用 Properties 选项卡为该新模块配置以下属性。

External IRQ 属性

PropertyValue
Nameg_external_irq6_pmod1
Channel6
TriggerRising
Pin Interrupt PriorityPriority 12

注意: 当您将 Channel 更改为 6 时,您应该看到引脚 IRQ06 更新为 P000

再次访问 New Stack 菜单并选择 Add AI > Data Shipper (rm_rai_data_shipper)。

为什么选择 rm_rai_data_shipper

这是用于实现 Reality AI 应用程序 Data Shipper 的中间件。 此模块实现了 Data Shipper 接口

概述

RAI Data Shipper 主要用于将 RAI Data Collector 收集的数据发送到 PC,以便用于 Reality AI 模型训练。 它利用了 通信中间件接口,所有通信都是 完全异步的

传输的数据可以是以下内容的任意组合:

  • 传感器数据
  • 系统事件/错误
  • 调试数据和诊断信息(包括 RAI 运行时输出)

传感器数据由 Data Collector 实例 通过 data ready callback(数据就绪回调) 提供。 系统事件和调试数据由应用程序准备。 回调用于在通信完成时通知应用程序。 如果未使用传感器数据缓冲区,则必须释放它们。 如果在数据传输过程中出现任何错误,将设置错误标志。

特性

  1. 最多支持 8 个 Data Collector 实例
  2. 支持以下接口:
    • RM_COMMS_UART 带/不带 CRC-8
    • RM_COMMS_USB_PCDC 带/不带 CRC-8

配置

fsp_cfg/rm_rai_data_shipper_cfg.h 中定义。

rm_rai_data_shipper 的构建时配置

ConfigurationOptionsDefaultDescription
Parameter CheckingDefault (BSP) | Enabled | DisabledDefault (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 的配置

ConfigurationOptionsDefaultDescription
Name有效的 C 符号g_rai_data_shipper0模块名称
Frame Rate Divider非负值0跳过写入请求
Callback有效的 C 符号rai_data_shipper0_callback发送数据或出错时的用户回调函数

时钟配置

此模块 没有必需的时钟配置

引脚配置

此模块 使用 I/O 引脚。

限制

  1. 不支持 双向通信——数据始终从设备发送到主机。
  2. 使用多个 Data Collector 实例时,用户必须避免竞争条件。
  3. 要在 Full Speed 模式DMA 下使用 RM_COMMS_USB_PCDC,使用 8 位通道时帧缓冲区长度必须是 2 的倍数。
  4. 要在 High Speed 模式DMA 下使用 RM_COMMS_USB_PCDC
    • 对于 16 位通道,帧缓冲区长度必须是 2 的倍数。
    • 对于 8 位通道,帧缓冲区长度必须是 4 的倍数。
  5. RAI Data Collector(快照模式)RM_COMMS_USB_PCDC 必须使用不同的计时器——它们独立运行。

  1. 访问 g_rai_data_collector0

使用 Properties 选项卡为该新模块配置以下属性。

Data Collector (g_rai_data_collector0) 属性

PropertyValue
General > Frame Buffer Length512
Data Feed Mode > Channels3
Data Feed Mode > Channels 0–2将 Channels 0, 1, 和 2 的 Data Type 设置为 Single Float

为什么选择 g_rai_data_collector

用于实现 Reality AI 应用程序 Data Collector 的中间件。此模块实现了 Data Collector 接口

概述

Data Collector 抽象了从传感器收集数据的过程,以便在数据样本可供应用程序使用之前将其累积到固定长度的帧中。需要支持 快照模式 (snapshot mode)数据馈送模式 (data feed mode) 以适应后台和协作数据收集。每种模式最多支持 8 个传感器通道。每个传感器通道将被捕获到一个单独的帧缓冲区中。帧缓冲区应具有相同数量的数据样本,但数据类型可以不同(int32_tfloatuint8_t 等)。用户必须确保帧缓冲区以相同的速率填充。

当所有帧缓冲区填满时,它们将通过 data ready callback 提供给应用程序。在使用完它们后,应用程序必须通过调用 RM_RAI_DATA_COLLECTOR_BufferRelease() 释放它们。为了实现无缝操作,将使用 PING-PONG 缓冲区。理想情况下,缓冲区在另一组缓冲区填满之前释放。但是,如果应用程序处理数据的时间较长,则可能会发生帧缓冲区超限。如果发生这种情况,应用程序将通过错误回调收到 buffer-overrun 事件通知。无需用户干预;当释放帧缓冲区时,缓冲区超限将消失。如果并非所有传感器通道都配置为以相同的速度工作,应用程序将收到 buffer-out-of-sync 错误。用户必须重新配置传感器通道并确保所有通道以相同的速度工作。如果传感器通道不能以相同的速率工作,则需要多个 data collector 实例。

特性

  • 支持快照模式和数据馈送模式。
  • 每种模式最多支持 8 个传感器。
  • 支持混合模式(同时启用快照和数据馈送)。

快照模式 (Snapshot Mode)

快照模式定期从用户指定的源提取数据并保存到指定的帧缓冲区。它需要一个 DTC 模块和一个 timer (计时器) 模块。DTC 将在链模式下工作,从而能够从各种可能非线性且大小不同的源收集数据。计时器(GPT 或异步通用计时器)提供激活源以使 DTC 定期工作。要选择此激活源,必须在计时器模块中配置相关中断。注册传感器源地址后,应用程序必须启动计时器以启用 DTC。

数据馈送模式 (Data Feed Mode)

数据馈送模式要求数据生成者在数据就绪时直接将数据推送到指定的帧缓冲区。数据可以同步或异步推送。

  • 同步模式 (Synchronous mode):用于将短数据复制到帧缓冲区。
  • 异步模式 (Asynchronous mode):使用 DTC/DMAC 进行数据传输。应用程序必须添加 DTC/DMAC 模块并初始化异步传输的传输描述符。

使用说明

  1. 不要 将 DTC 栈和计时器栈添加到数据馈送模式的 data collector 实例中。
  2. 用户必须确保 data collector 实例的所有通道以相同的速度运行。
  3. data collector 实例中计时器栈的中断优先级级别必须高于(数值上低于)RM COMMS USB PCDC GPT Overflow 中断。

配置

fsp_cfg/rm_rai_data_collector_cfg.h 中定义。

rm_rai_data_collector 的构建时配置

ConfigurationOptionsDefaultDescription
Parameter CheckingDefault (BSP) / Enabled / DisabledDefault (BSP)如果选中,构建中将包含参数检查代码。
Max Number Of Channels正整数 ≤ 1616最大通道数。

配置 AI > Data Collector (rm_rai_data_collector)

通过 New Stack > AI > Data Collector (rm_rai_data_collector) 添加。

AI > Data Collector 的配置

CategorySetting / FieldOptions / ConstraintsDefault ValueDescription
GeneralNameName must be a valid C symbolg_rai_data_collector0模块名称
GeneralIDPositive integer0实例 ID
GeneralFrame Buffer LengthPositive integer > 0100数据样本中的帧缓冲区长度
GeneralData Ready CallbackName must be a valid C symbolrai_data_collector0_callback数据就绪时的回调函数
GeneralError CallbackName must be a valid C symbolrai_data_collector0_error_callback错误事件的回调函数
Data FeedChannel 0 NameValid C variable namedc0_data_feed_ch0通道名称
Data FeedChannel 0 Data TypeMCU-specific options通道数据类型
...............
Data FeedChannels (count)Integer between 0 and 80数据馈送模式通道数
SnapshotSnapshot Channel 0 NameValid C variable namedc0_snapshot_ch0通道名称
SnapshotSnapshot Channel 0 Data TypeMCU-specific options通道数据类型
...............
SnapshotChannels (count)Integer between 0 and 80快照模式通道数
SnapshotDTC Transfer CountPositive integer > 01每次激活的 DTC 传输计数
Clock Config此模块没有必需的时钟配置
Pin Config此模块不使用 I/O 引脚

  1. 添加 COMMS 驱动程序 — USB PCDC (rm_comms_usb_pcdc)

Data Shipper 模块下:

  1. 点击 Add COMMS Driver
  2. 点击 New → USB PCDC Communication Device (rm_comms_usb_pcdc)

添加 COMMS 驱动程序

概述 用于通过 USB_PCDC 实现通用通信接口的中间件。此模块实现了通信中间件接口。

特性

  • 用于裸机的非阻塞 API。
  • 用于 RTOS 的非阻塞和阻塞 API。

  1. 配置 g_timer0 计时器 (General PWM - r_gpt)

计时器 g_timer0 属性

PropertyValue
General > Period500
General > Period UnitMicroseconds
Interrupts > Overflow/Crest Interrupt PriorityPriority 12

为什么选择 r_gpt

RA MCU 上 GPT32 和 GPT16 外设的驱动程序。此模块实现了计时器接口。


概述

GPT 模块可用于计数事件、测量外部输入信号、生成周期性中断,或向 GTIOC 引脚输出周期性或 PWM 信号。

此模块支持 GPT 外设 GPT32EHGPT32EGPT32GPT16GPT16 是 16 位计时器。其他外设(GPT32EHGPT32EGPT32)是 32 位计时器。从 API 角度来看,32 位计时器在此模块中的处理方式都相同。


特性

  • 支持周期模式、单次模式和 PWM 模式。
  • 支持 PCLK、GTETRG 引脚、GTIOC 引脚或 ELC 事件的计数源。
  • 支持 GTIOC 引脚上的去抖动滤波器。
  • 信号可以输出到引脚。
  • 可配置周期(每个计时器周期的计数)。
  • 可配置 PWM 模式下的占空比。
  • 支持运行时重新配置周期。
  • 支持运行时重新配置 PWM 模式下的占空比。
  • 支持运行时重新配置比较匹配值。
  • 提供了用于启动、停止和重置计数器的 API。
  • 提供了用于获取当前周期、源时钟频率和计数方向的 API。
  • 提供了用于获取当前计时器状态和计数器值的 API。
  • 支持从 GTETRG 引脚、GTIOC 引脚或 ELC 事件通过外部源启动、停止、清除、向上计数、向下计数和捕获。
  • 支持对称和非对称 PWM 波形生成。
  • 支持单次同步脉冲波形生成。
  • 支持自动添加死区时间。
  • 支持生成 ELC 事件以在比较匹配值处启动 ADC 扫描(参见事件链接控制器 (r_elc))并更新比较匹配值。
  • 支持与 POEG 通道链接,以便在检测到错误条件时自动禁用 GPT 输出。
  • 支持在计时器停止时设置计数器值。
  • 支持启用和禁用输出引脚。
  • 支持一次跳过最多七个溢出/下溢(波峰/波谷)中断。
  • 支持通过配置每个比较匹配和周期结束时的引脚输出电平来生成自定义 PWM 波形。

  1. 配置 r_usb_basic

r_usb_basic 属性

PropertyValue
Module > USBFS Interrupt PriorityPriority 10
Module > USBFS Resume PriorityPriority 10
Module > USBFS D0FIFO Interrupt PriorityPriority 10
Module > USBFS D1FIFO Interrupt PriorityPriority 10

  1. 配置 g_timeout_timer2 计时器 (General PWM - r_gpt)

计时器 g_timeout_timer2 属性

PropertyValue
General > Nameg_timeout_timer2
General > Channel2
General > ModeOne-Shot
General > Period250
General > Period UnitMillisecond
Interrupts > Callbackgpt_timeout_callback
Interrupts > Overflow/Crest Interrupt PriorityPriority 13

  1. 配置 g_led_timer1 计时器 (General PWM - r_gpt)

计时器 g_led_timer1 属性

PropertyValue
General > Nameg_led_timer1
General > Channel1
General > ModePeriodic
General > Period250
General > Period UnitMillisecond
Interrupts > Callbackrai_led_timer_callback
Interrupts > Overflow/Crest Interrupt PriorityPriority 15

  1. 应用 RA 配置

此部分的 RA 配置已完成。点击 Configurator 窗口右上角的 Generate Project Content 按钮,将更改应用到项目源代码。

当提示 Proceed with save and generate 时,勾选 Always save and generate without asking 旁边的框并点击 Proceed

生成项目内容


  1. 生成代码

FSP Configurator 将提取所有必要的驱动程序,并根据 Properties 选项卡中提供的配置生成代码。 现在,您可以添加所需的 Reality AI Model 文件并运行项目以测试模型和收集数据。


导入现有项目

使用此选项加载现有项目(包括本文档提供的示例项目)。

  1. 在顶部导航菜单上,点击 File > Import

导入项目

  1. 在 Import 对话框中,选择 General > Existing Projects into Workspace

选择 Existing Projects into Workspace

  1. 点击 Select root directory,然后点击 Browse 导航到您的项目位置。

选择根目录

  1. 选择所需的项目并点击 Finish