【RA-Eco-RA2L1开发板评测】RA2L1 经典小车快速入门:UART/I2C/OLED/PWM 一个项目全学会,全套开源,瑞萨 RA2L1 智能小车从零搭建

适用人群:有 Arduino 或 STM32 基础,想上手瑞萨 RA 系列。
难度:会接杜邦线、会用 Keil 即可。
总成本:约 68 元(不含调试器)。


快速复刻

如果你想跳过手动搭建、直接用 AI 一次性搞定:

  1. 本项目已封装为 Claude Code Skillra2l1-smartcar),包含完整 FSP 配置、引脚规划、PWM 控制、OLED 驱动、串口指令系统
  2. 配合 Claude Code 的 /workflow 功能,可自动完成:工程生成 -> 代码移植 -> 编译修复 -> 文档输出
  3. 完整 AI 对话流程和 Skill 定义文件已开源在 GitHub 仓库 ra2l1-smartcar-skill.md
    通过网盘分享的文件:RA2L1_SmartCar_FSP6.4.0.zip
    链接: https://pan.baidu.com/s/1tjdTdusbjgVvciG1dw4-zg?pwd=XPQH 提取码: XPQH
    习惯传统方式的继续往下看,每一步手动操作都有说明。

以下直接选取市面上最常见的模块和底盘
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述

推荐使用无线烧入,非常便捷,如果认为费用高昂,可以使用有线的平替

请添加图片描述

一、为什么选 RA2L1

提到新手小车,大家第一反应是 STM32F103C8T6 + L298N + OLED + 蓝牙。

但 STM32F103C8T6 是 2007 年的芯片。瑞萨 RA2L1 是 2020 年后出的 Cortex-M23:

对比 STM32F103C8T6 RA2L1 (R7FA2L1AB)
内核 Cortex-M3 Cortex-M23 (ARMv8-M)
主频 72 MHz 48 MHz
Flash/RAM 64K / 20K 256K / 32K
价格 10~35 元 12~15 元
配置工具 STM32CubeMX FSP (RASC)
中文教程 海量 几乎没有

RA2L1 的 Flash 和 RAM 比 F103 大了几倍,价格还更低,FSP 配置器用起来和 CubeMX 差不多。问题就是没教程。本文就是填这个坑的。


二、硬件清单和接线

物料

序号 物品 参考型号 数量
1 RA2L1 最小系统板 R7FA2L1AB3CFL 48脚 1
2 L298N 电机驱动 红色小板 1
3 0.96寸 OLED SSD1306 I2C 接口 1
4 TT 马达 两个(也可以直接买底盘) 1:48 减速比 4
5 蓝牙串口模块 HC-05 或 JDY-31 1
6 底盘+四个轮子 淘宝搜智能小车底盘 1
7 锂电池 12V 10

接线

RA2L1 引脚         L298N            OLED (I2C)
P212 (GPT0 A) ---> IN1  左电机正转    P400 ---> SCL
P213 (GPT0 B) ---> IN2  左电机反转    P401 ---> SDA
P109 (GPT1 A) ---> IN3  右电机正转    3.3V --> VCC
P110 (GPT1 B) ---> IN4  右电机反转    GND  --> GND
ENA/ENB 跳线帽插上(常开)
+12V 接电池 7~12V
L298N 的 GND 和 MCU 的 GND 共地

串口/蓝牙:
P100 (RXD) <--- 蓝牙 TX
P101 (TXD) ---> 蓝牙 RX

注意事项:

  • L298N 和 MCU 必须共地
  • L298N 的 +12V 接电池正极,不是 5V
  • ENA/ENB 跳线帽插上,IN 脚上做 PWM
  • OLED 用 3.3V,不要接 5V

小车完整安装状态 小车完整接线

在这里插入图片描述
小车上电状态

三、FSP 配置

打开桌面上的 RA Smart Configurator (RASC)。

新建项目

File -> New -> Renesas RA

  • Device: R7FA2L1AB3CFL
  • IDE: Keil MDK V5
  • Toolchain: ARM Compiler 6
  • Template: Bare Metal - Minimal

Clocks

HOCO = 48 MHz
ICLK = 48M, PCLKB = 24M, PCLKD = 48M

Pins 引脚分配

引脚 功能
P100 SCI0 RXD
P101 SCI0 TXD
P109 GPT1 GTIOCA
P110 GPT1 GTIOCB
P212 GPT0 GTIOCA
P213 GPT0 GTIOCB
P400 IIC0 SCL
P401 IIC0 SDA

Stacks 驱动栈

点 New Stack 依次加:

模块 名称 设置
UART (r_sci_uart) g_uart0 CH0, 9600-8N1, Callback: uart0_callback
I2C Master (r_iic_master) g_i2c_master0 CH0, Fast, 0x3C, Callback: g_i2c_master0_callback
General PWM (r_gpt) g_timer_pwm0 CH0, Mode=PWM, Period=1000, Sawtooth
General PWM (r_gpt) g_timer_pwm1 CH1, 同上

每个 GPT 的 GTIOCA 和 GTIOCB 属性里,Output Enabled 必须手动改成 True。这一步很容易漏,漏了电机不转。

点 Generate Project Content,生成 Keil 工程。


四、代码

生成好的工程里,把 src 下的用户文件覆盖掉即可。

文件结构

src/
  hal_entry.c           -- 主程序(状态机、PWM控制、界面)
  debug_uart/
    bsp_debug_uart.c    -- printf 重定向、串口指令接收
    bsp_debug_uart.h
  oled/
    oled.c/h            -- SSD1306 驱动(Keysking 移植)
    font.c/h            -- 字库
  key/                  -- 按键(可选)
  systick/              -- 滴答定时器(可选)

Keil 设置

Options -> C/C++ -> Include Paths 加上:

.\src
.\src\debug_uart
.\src\oled
.\src\key
.\src\systick

Options -> Linker -> 勾选 Use MicroLIB。

核心代码

PWM 电机控制,一个 GPT 通道的 A/B 脚控制一个电机的正反转:

// 左电机: GTIOCA=正转  GTIOCB=反转
R_GPT_DutyCycleSet(&g_timer_pwm0_ctrl, (L > 0) ? duty : 0, GPT_IO_PIN_GTIOCA);
R_GPT_DutyCycleSet(&g_timer_pwm0_ctrl, (L < 0) ? duty : 0, GPT_IO_PIN_GTIOCB);
// 右电机: GTIOCA=正转  GTIOCB=反转
R_GPT_DutyCycleSet(&g_timer_pwm1_ctrl, (R > 0) ? duty : 0, GPT_IO_PIN_GTIOCA);
R_GPT_DutyCycleSet(&g_timer_pwm1_ctrl, (R < 0) ? duty : 0, GPT_IO_PIN_GTIOCB);

L298N 的逻辑:IN1=HIGH、IN2=LOW 时电机正转,反之反转。GPT0 的 A 接 IN1、B 接 IN2,一个通道搞定一个电机。

串口指令接收,UART 中断里缓冲字符,收到换行时置标志:

if (ch == '\r' || ch == '\n') {
    uart_cmd_buf[cmd_idx] = '\0';
    uart_cmd_ready = true;
}

主循环轮询,解析指令,驱动状态机。

OLED 用的是 Keysking(波特律动)的驱动库,MCU 无关,只需要改 OLED_Send() 一个底层函数就能移植到任何平台。

串口指令

波特率 9600-8N1,蓝牙或 USB 转串口都可以。

指令 动作 左电机 右电机
GO 前进 +500 +500
BACK/DOWN 后退 -500 -500
L 左转 +500 -500
R 右转 -500 +500
CR 绕圈 +250 +400
S 急停 0 0

MCU 每 100ms 回传一次: P:左值,右值。正数表示前进方向,负数表示后退方向。

上电演示

开机后自动跑一段演示:GO 前进 -> BACK 后退 -> L 左转 -> R 右转 -> 回到空闲等待指令。发送任意指令会打断演示。


五、烧录

DAPLink (CMSIS-DAP)

pyocd flash -t r7fa2l1ab Debug/010_RA2L1_I2C_FSP.elf

也可以用 Keil 直接 F8 下载。

串口测试

串口助手 9600-8N1,发 GO,小车前进。发 S,急停。OLED 上会实时显示每侧电机的速度和方向。


请添加图片描述

请添加图片描述

六、进阶玩法

  • 蓝牙遥控:HC-05 替换 USB 串口,手机装蓝牙串口 APP
  • 红外循迹:加 TCRT5000 两个,ADC 读
  • 超声波避障:HC-SR04 + GPT 输入捕获
  • WiFi 图传:ESP32-CAM 独立供电

七、致谢

  • OLED 驱动移植自波特律动 Keysking (https://led.baud-dance.com),MCU 无关的 SSD1306 驱动框架,只改一个底层函数就能移植。
  • FSP 框架来自 Renesas

完整工程和代码见 GitHub(链接见评论区)。
通过网盘分享的文件:RA2L1_SmartCar_FSP6.4.0.zip
链接: https://pan.baidu.com/s/1tjdTdusbjgVvciG1dw4-zg?pwd=XPQH 提取码: XPQH

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐