这是一篇基于RL78/G15 Fast Prototyping Board的Arduino IDE开发记录
RL78/G15 Fast Prototyping Board
硬件简介(背景)
RL78/G15 快速原型开发板配备 RL78/G15 微控制器,是一种专门用于各种应用开发试产的原型开发板。 它只需连接 USB 线即可编写/调试程序,无需任何其他工具即可着手评估。 此外,它还可以使用传统 E2 仿真器和 E2 仿真器 Lite 实现高性能调试(有关方法,请参考用户手册)。 标配 Arduino Uno 和 Pmod™ 接口,具有高度的可扩展性,譬如能够访问微控制器的所有引脚。1
可以在RL78/G15快速入门指南下载对应的快速入门指南,这里有硬件相关的一些内容,也是测评前对硬件必须要的基础的了解:
可以看到,RL78/G15 Fast Prototyping Board是沿用基于Arduino的布局风格,甚至于引脚和UNO-R3是完全兼容的,所以,可以替代R3作为基板对以前的模块开发进行快速功能验证。
更多的,硬件上,RL78/G15 Fast Prototyping Board设计了PMOD接口,用户可以根据这个接口设计不同的模块来快速接入,和测试,弥补了UNO-R3方式开发杜邦线接来接去的困恼!可以看到PMOD涵盖了SPI/IIC/UART多种通信协议,几乎可以通用所有的模块设计,除了用户自己按着引脚开发拓展套件外,也期待一下后续RENESAS官方的设计和扩展这个系列的模组板。
基础测试(方法说明/操作说明)
拿到开发板之后,首先还是需要对关键的电源引脚进行简单测试,避免因为SMT生产过程中产生连锡等,造成短路,特别是VCC和GND,推荐使用万用表短路档进行测试:
测试均无SMT不良等现象产生时,可以允许接入个人电脑中。这一个步骤是非常关键的——特别是对于USB-HUB没有隔离硬件的时候,如果出现PWR-GND短路现象,是非常容易产生不可挽回的损失的。
在对硬件进行检查时,更多的或许需要依赖硬件原理图进行,对应的原理图等PCB设计文档下载链接:RL78/G15 Fast Prototyping Board Design and Gerber Files
当然为了方便调试,这里直接提供PNG格式的原理图供快速查看:
开发环境搭建(方法说明/操作说明+代码+结果)
本次选择的开发环境是Arduino IDE 1.8.19,(当然也可以使用RENCESAS官方原生的开发环境,官方开发环境中也可以对RL78/G15进行开发)。
为了避免环境太高导致无法适配GITHUB开源的项目库,推荐使用1.8.19版本,笔者是在Windows Store商店直接下载的,也可以到链接Arduino IDE下载(注意:历史版本需要往下拉,下方会提供以往的版本共给用户下载,其中右上角可以选择对应的系统环境):
完成IDE平台软件的安装后,可以进行RENESAS系列板项目库拉取,其链接:RENESAS系列板项目库,在这个项目库中,可以选择合适的板子进行URL拉取,其中本次测评RL78/G15,因此选择RL78/G15 boards manager URL进行拉取。
Arduino IDE RL78/G15的拉取方法:
(1)文件–首选项–
将上述链接添加到附加开发板管理器网址中
(如果不会获取,可以拷贝此处链接:RL78/G15 boards manager URL)
(2)工具–开发板–开发板管理器–关键字“RL”–搜索并安装RL78/G15-20p…
如果发生下列错误,解决方法是手动下载工具存档(可以从包索引文件中提取存档下载URL),然后将其放入开发板管理器的下载缓存中。
比如WINDOW系统,手动下载后,放置在arduino IDE的缓存文件夹下,参考C:\Users<用户名>\AppData\Local\Arduino15\packages,如果更改了,也是在类似的地址,将zip放置在该文件夹中,可以跳过IDE联网下载环节,进入解压安装环节。
如果手动都下不了的朋友,请从这里获取:
Library-rl78g15-fpb-1.2.1.zip
llvm-17.0.1.202406-rl78-elf.zip
win32-tool-rl78g1x-1.1.0.zip
(3)给硬件上电,设备管理器获取串口
(4)工具–端口–选择硬件端口–选择设备管理器中新增的串口COMxx
(5)工具–选择开发板–选择RL78/G15…
(6)文件–示例
打开示例后,会发现,没有示例!
但是这就是兼容UNO的,所以,UNO能用的,RL78/G15全部映射完成了(当用户安装完成(Library-rl78g15-fpb-1.2.1.zip)之后),因此,可以直接使用内置示例进行开发使用即可。
通用示例测试(方法说明/操作说明+代码+结果)
从原理图中,可以知道:
LED1—P20—PIN7
LED2—P21—PIN4
话不多说,直接上代码:
const int LED1Pin = 7;
const int LED2Pin = 4;
void setup() {
// put your setup code here, to run once:
pinMode(LED1Pin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED1Pin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(LED1Pin, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
在Arduino IDE中进行验证,上传,注意等待
,不要cao之过急:
等待烧录进去Write Complete 时,即可观察实验现象:
对应现象:可以看到LED1每隔1000ms进行一次闪烁,这里故意定义了两个LED,但是只使用其中一个,以说明LED的映射是正确的。
拓展代码:
const int LED2Pin = 4;
void setup() {
// put your setup code here, to run once:
pinMode(LED1Pin, OUTPUT);
pinMode(LED2Pin, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED1Pin, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(LED2Pin, LOW);
delay(500); // wait for a second
digitalWrite(LED1Pin, LOW); // turn the LED off by making the voltage LOW
digitalWrite(LED2Pin, HIGH);
delay(500); // wait for a second
}
对应现象:LED1和LED2进行交替闪烁
测评ADC任务功耗
进行ADC基础实验
接下来开始,编写ADC相关的部分,ADC,模数转换,使用到相关的Analog引脚。直接上代码:
#include <Arduino.h>
const int analogInPin = A0; // A0---P23定义模拟输入引脚
int adcValue = 0; // 存储模拟输入的值
float voltage = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
adcValue = analogRead(analogInPin); // 读取模拟输入的值
voltage = adcValue * (5.0 / 1023.0); // 将模拟输入的值转换为电压值
// 打印输出
Serial.print("sensor = ");
Serial.print(adcValue);
Serial.print("\t vol = ");
Serial.print(voltage);
Serial.println("V");
delay(2); // 延迟2毫秒
}
对应的实物,如上图连接。将A0探测脚,连接到板载的3V3引脚上,观察实验输出:
可以看到,在未进行校准时,输出接近3V3。
接下来将测量输入引脚,接到我们开源的一款LDO载板上,观察+1V8的采集:
同样的,将测量输入引脚,接到我们开源的一款LDO载板上,观察+3V3的采集:
显然的,板载的3V3输出比模块板的LDO要稳定得多。
进行功耗测试实验
本实验使用到电流表,这里使用DMM6500作为电流表,接线图如下图所示,将DCI作为电流表,连接到电路系统供电路中,进行功耗测试,单独采集板载3V3时,观察其整板功耗:(使用DMM6500 DCI档位,测低端采样电流)
从采集数据中,可以看到,上电后,单通道ADC任务,整体功耗16mA@5V,包含板载其他器件(LED等)。
取区间80s到100s,放大可以看到,整体的功耗波动也非常平稳。
心得体会
再次感谢瑞萨嵌入式小百科公众号的测评名额,本文中,主要使用了Arduino IDE对RL78/G15进行环境搭建与开发。在开发过程中,实际上比较苦恼语言问题,在github中大多数的讲解说明都是以日本语作为主要语言,并且在官网中,关于Arduino IDE平台的基础示例几乎没有。在深度了解后,惊然发现,Renesas官方在Arduino IDE库中几乎对所支持的Arduino系列的Renesas板子如RL78/G15等,几乎所有适配的引脚都进行了高度映射,几乎完美兼容原生UNO的所有函数和API。
实际上,在官网中,也有关于Arduino API从e2studio到Arduino IDE的移植指南:
最后,比较让我意外的是,RL78/G15即使使用Arduino IDE平台的高度封装的语言,也在ADC寻常模式应用时可以保持如此低的功耗,并且可以将模块LDO的纹波都可以采集到,说明其采样精度和稳定性也非常高。
下一步计划是配置多通道ADC,采集外部多路电压,并且调度MCU进入低功耗模式,搭建系统,相信这RL78/G15 20P一定会给我带来惊喜。
本文就到此完成,喜欢关注我,我会持续更新RL78/G15的使用!