【RA-Eco-RA2L1开发板评测】RA2L1 经典小车快速入门:UART/I2C/OLED/PWM 一个项目全学会,全套开源
【RA-Eco-RA2L1开发板评测】RA2L1 经典小车快速入门:UART/I2C/OLED/PWM 一个项目全学会,全套开源,瑞萨 RA2L1 智能小车从零搭建
适用人群:有 Arduino 或 STM32 基础,想上手瑞萨 RA 系列。
难度:会接杜邦线、会用 Keil 即可。
总成本:约 68 元(不含调试器)。
快速复刻
如果你想跳过手动搭建、直接用 AI 一次性搞定:
- 本项目已封装为 Claude Code Skill(
ra2l1-smartcar),包含完整 FSP 配置、引脚规划、PWM 控制、OLED 驱动、串口指令系统 - 配合 Claude Code 的
/workflow功能,可自动完成:工程生成 -> 代码移植 -> 编译修复 -> 文档输出 - 完整 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
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)