Arduino UNO R4 Minima 官方文档

Arduino® UNO R4 Minima 技术文档

原版地址:英文文档

Arduino® UNO R4 Minima 是一款具有经典 UNO 外形的开发板,基于瑞萨电子的 RA4M1 微控制器。现在它配备了 32 kB 的 RAM 内存,48 MHz 的时钟速度,以及一个 USB-C® 接口。

这是第一款使用 32 位架构的 UNO 开发板,之前的版本基于 8 位 AVR 架构。

本文是对您开发板的技术参考,介绍了开发板的各种组件,以及入门资源。

数据手册

完整的数据手册可以从下面的链接下载 PDF 版本:

下载 UNO R4 Minima 数据手册

电源供应

您可以使用 USB-C® 电缆或 VIN 引脚为 UNO R4 Minima 提供电源。

开发板可以通过 VIN 引脚供电,支持 6-24 V 范围。VIN 引脚也连接到直流插孔(桶形插头连接器)。

通过 VIN 引脚供电时,您使用的是板载电压调节器将电压降至 5V,这意味着 5 V 引脚可以提供高达 1.2 A 的电流。请记住,这个电压调节器还为电路板上的其他组件供电,包括 MCU、LED 等。

高电流负载的外部设备(例如伺服电机)绝不应通过 5 V 引脚供电。它主要用于电流较低的设备,如传感器模块。

如果您使用 USB-C® 连接器,则必须提供 5 V 电源。

通过 USB 供电时,您完全绕过了板载电压调节器。在这种情况下,5 V 引脚可以提供高达 2 A 的电流,而不会损坏开发板。

核心

UNO R4 Minima 基于 Arduino Core,适用于瑞萨设备。

安装

UNO R4 Minima 可以通过 Arduino IDE、Arduino Web 编辑器或 Arduino CLI 编程。

Arduino IDE

要在 Arduino IDE 中使用该开发板,您需要从板管理器安装最新版本的 Arduino UNO R4 开发板包。

阅读更多在 入门指南中了解 UNO R4 Minima

Arduino Web 编辑器

Web 编辑器是一个在线 IDE,包括所有官方开发板,无需安装核心/包。您需要在计算机上安装 Create 插件才能使用 Web 编辑器。

阅读更多在 Web 编辑器入门指南

瑞萨 RA4M1

UNO R4 Minima 拥有强大且非常稳健的瑞萨微控制器,也应用于 UNO R4 WiFi。瑞萨微控制器以其高性能和稳健性而闻名,包括其内置的外设集。

这些外设包括模数转换器、定时器、脉冲宽度调制(PWM)单元、通信接口(如 UART、SPI 和 I2C)等。

存储特性

  •  32 kB SRAM
  •  256 kB flash
  •  8 kB EEPROM

引脚

UNO R4 Minima 为您提供了许多不同的引脚,其中许多都具有特殊功能,将在本文接下来的部分中说明。继续阅读以了解您可以如何使用它们。

这是 UNO R4 Minima 上所有 IO 引脚的完整表格:

引脚 类型 功能
D0 数字 UART 接收
D1 数字 UART 发送
D2 数字 GPIO 引脚,中断
D3 数字 GPIO 引脚,中断,PWM
D4 数字 GPIO 引脚
D5 数字 GPIO 引脚,PWM
D6 数字 GPIO 引脚,PWM
D7 数字 GPIO 引脚
D8 数字 GPIO 引脚
D9 数字 GPIO 引脚,PWM
D10 数字 SPI (CS),GPIO 引脚,PWM
D11 数字 SPI (CIPO),GPIO 引脚,PWM
D12 数字 SPI (COPI),GPIO 引脚
D13 数字 SPI (SCK),GPIO 引脚,内置 LED
A0 模拟 模拟输入,DAC
A1 模拟 模拟输入,运算放大器 +
A2 模拟 模拟输入,运算放大器 -
A3 模拟 模拟输入,运算放大器输出
A4 模拟 模拟输入,SDA*
A5 模拟 模拟输入,SCL*

*A4 和 A5 引脚都连接到同一个 I2C 总线。

模拟引脚

UNO R4 Minima 有六个模拟输入引脚(A0-A5),可以使用 analogRead() 函数读取。

引脚 类型 功能
A0 模拟 模拟输入,DAC
A1 模拟 模拟输入,运算放大器 +
A2 模拟 模拟输入,运算放大器 -
A3 模拟 模拟输入,运算放大器输出
A4 模拟 模拟输入,SDA*
A5 模拟 模拟输入,SCL*

*A4 和 A5 引脚都连接到同一个 I2C 总线。

value = analogRead(pin);

这些引脚的默认参考电压是 5 V,但可以如下更改:

  • analogReference(AR_DEFAULT) (默认参考电压 5 V)
  • analogReference(AR_INTERNAL) (内置参考电压 1.5 V)

默认分辨率设置为 10 位,但可以更新为 12 位和 14 位分辨率。要这样做,请在您草图的 setup() 中使用以下方法。

  • analogReadResolution(10) (默认)
  • analogReadResolution(12)
  • analogReadResolution(14)

要了解更多关于 UNO R4 Minima 的 ADC 功能,请查看 ADC 分辨率指南。

运算放大器引脚

RA4M1 有一个内部运算放大器,在 UNO R4 Minima 上如下暴露:

引脚 运算放大器
A1 运算放大器 +
A2 运算放大器 -
A3 运算放大器输出

PWM

PWM(脉冲宽度调制)功能允许数字引脚通过非常快速地开启和关闭来模拟模拟输出,让您可以做很多事情,比如调暗连接到数字引脚的 LED。
UNO R4 Minima 支持在标有 ~ 的引脚上使用 PWM。官方支持的引脚是:

引脚 RA4M1 定时器
D3 P104 GTIOC1B
D5 P102 GTIOC2B
D6 P106 GTIOC0B
D9 P303 GTIOC7B
D10 P112 GTIOC3B
D11 P109 GTIOC1A

您可以使用以下函数作为模拟输出引脚:

analogWrite(pin, value);

默认分辨率是 8 位(0-255),您可以使用 analogWriteResolution() 来更改这个分辨率,支持高达 12 位(0-4096)分辨率。

analogWriteResolution(resolution);

数字引脚

UNO R4 Minima 共有 14 个数字引脚。尽管其中一些引脚有其他用途,如果您有其他引脚可用,不应用于 GPIO。

引脚 类型 功能
D0 数字 UART 接收
D1 数字 UART 发送
D2 数字 GPIO 引脚,中断
D3 数字 GPIO 引脚,中断,PWM
D4 数字 GPIO 引脚
D5 数字 GPIO 引脚,PWM
D6 数字 GPIO 引脚,PWM
D7 数字 GPIO 引脚
D8 数字 GPIO 引脚
D9 数字 GPIO 引脚,PWM
D10 数字 SPI (CS),GPIO 引脚,PWM
D11 数字 SPI (CIPO),GPIO 引脚,PWM
D12 数字 SPI (COPI),GPIO 引脚
D13 数字 SPI (SCK),GPIO 引脚,内置 LED

此外,模拟引脚 A0-A5 也可以用作数字引脚。请注意,A4/A5 保留用于 I2C 总线。
所有数字引脚的参考电压是 5 V。

LED

UNO R4 Minima 共有四个 LED,其中三个是可编程的:

  • ON - 电源 LED,不能编程。
  • LED_BUILTIN - 经典的 "内置 LED",连接到引脚 13。
  • RX_LED - 板上标有 "RX" 的 LED。
  • TX_LED - 板上标有 "TX" 的 LED。

要控制这些,定义它们为输出并写入所需状态。下面的示例每秒闪烁每个 LED 一次。

void setup(){
  // 定义引脚为输出
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(RX_LED, OUTPUT);
  pinMode(TX_LED, OUTPUT);
}

void loop(){
  // 打开所有 LED
  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(LED_RX, HIGH);
  digitalWrite(LED_TX, HIGH);
  delay(1000);

  // 关闭所有 LED
  digitalWrite(LED_BUILTIN, LOW);
  digitalWrite(LED_RX, LOW);
  digitalWrite(LED_TX, LOW);
  delay(1000);
}

DAC


UNO R4 Minima 有一个最多 12 位分辨率的 DAC,可以作为真正的模拟输出引脚,这意味着它比 PWM 引脚的能力更强。

analogWrite(pin, value);

这个 DAC 引脚的默认写分辨率是 8 位。这意味着写入引脚的值应该在 0-255 之间。
然而,如果需要,您可以更改这个写分辨率,最高可达 12 位,在这种情况下,您写入引脚的值应该在 0-4096 之间。

analogWriteResolution(12);

要了解更多关于 UNO R4 Minima 的 DAC 功能,请查看 DAC 指南。

RTC

实时时钟(RTC)用于测量时间,在任何跟踪时间的应用中都很有用。
下面是一个最小示例,展示了如何从 RTC 获取日期和时间:

#include "RTC.h"

void setup() {
  Serial.begin(9600);

  RTC.begin();
  RTCTime mytime(30, Month::JUNE, 2023, 13, 37, 00, DayOfWeek::WEDNESDAY, SaveLight::SAVING_TIME_ACTIVE);

  RTC.setTime(mytime);
}

void loop() {
  RTCTime currenttime;

 // 从 RTC 获取当前时间
  RTC.getTime(currenttime);
  
  // 打印日期 (DD/MM//YYYY)
  Serial.print(currenttime.getDayOfMonth());
  Serial.print("/");
  Serial.print(Month2int(currenttime.getMonth()));
  Serial.print("/");
  Serial.print(currenttime.getYear());
  Serial.print(" - ");

  // 打印时间 (HH/MM/SS)
  Serial.print(currenttime.getHour());
  Serial.print(":");
  Serial.print(currenttime.getMinutes());
  Serial.print(":");
  Serial.println(currenttime.getSeconds());

  delay(1000);
}

要了解更多关于 UNO R4 Minima 的 RTC 功能,请查看 RTC 指南。

EEPROM

EEPROM,也称为 '数据' 内存,是一种即使在板子断电后也能保留数据的内存类型。Arduino Uno R4 Minima 有 8 kB EEPROM。

EEPROM.write(address, val);
EEPROM.read(address);

它的写入周期数量有限,这意味着它最适合只读应用。确保永远不要在 void loop() 内部使用 write(),因为您可能会使用掉芯片的所有写周期。
阅读更多在 EEPROM 指南。
如果您想了解更多关于 EEPROM,请查看关于 Arduino UNO R4 Minima EEPROM 的文章。

SPI


UNO R4 Minima 特性是一个串行外设接口(SPI)总线。总线(连接器)‘SPI’ 使用以下引脚:

引脚 类型
D13 SCK
D12 CIPO
D11 COPI
D10 CS

以下示例展示了如何使用 SPI:

#include <SPI.h>

const int CS = 10;

void setup() {
  pinMode(CS, OUTPUT);

  SPI.begin();

  digitalWrite(CS, LOW);

  SPI.transfer(0x00);
  
  digitalWrite(CS, HIGH);
}

void loop() {
}

I2C

I2C 引脚

I2C 允许您仅使用两个引脚串行连接多个兼容 I2C 的设备。控制器将通过 I2C 总线向一个 7 位地址发送信息,这意味着单条线上 I2C 设备的技术限制是 128 个。实际上,在出现其他限制之前,您永远不会达到 128 个设备。

UNO R4 Minima 有一个标有 SCL 和 SDA 的 I2C 总线。它们与 A4 (SDA) 和 A5 (SCL) 共用,这是前代 UNO 的用户所熟悉的。PCB 上没有安装上拉电阻,但如果需要,有安装上拉电阻的脚印。

不在出厂时安装上拉电阻有几个优点:

由于用于 I2C 的引脚直接连接到 A4 和 A5,因此它们也可以用作数字输入/输出和模拟输入引脚。如果将 I2C 上拉电阻安装在这些引脚上,将限制其功能仅为 I2C,因为它们默认情况下会是逻辑高电平。
通过选择安装不同的电阻,您可以选择使用这些引脚操作 3.3 V 或 5 V 的 I2C 设备。
UNO R4 Minima 上用于 I2C 的引脚如下:

  • SDA - D18 或 A4
  • SCL - D19 或 A5
    要连接 I2C 设备,您需要在您的草图顶部包含 Wire 库。
#include <Wire.h>

在 void setup() 内部,您需要初始化库并初始化您想要使用的 I2C 端口。

Wire.begin() //SDA & SDL

要向通过 I2C 连接的设备写入内容,我们可以使用以下命令:

Wire.beginTransmission(1); //开始传输到设备 1
Wire.write(byte(0x00)); //发送指令字节
Wire.write(val); //发送一个值
Wire.endTransmission(); //停止传输

在我们的 I2C 协议指南中了解更多有关 I2C 协议的信息

USB 串行 & UART

UNO R4 Minima 板具有两个独立的硬件串行端口。

  • 一个端口通过 USB-C® 暴露出来,
  • 另一个通过 RX/TX 引脚暴露出来。

这是 UNO R3 到 UNO R4 的几个明显不同之处之一,因为 UNO R3 只有一个硬件串行端口,它连接到板上的 USB 端口和 RX/TX 引脚。

Native USB

使用标准 Serial 对象将串行数据发送到计算机。

Serial.begin(9600);
Serial.print("hello world");

要通过 UART 发送和接收数据,我们首先需要在 void setup() 内部设置波特率。

UART

UNO R4 Minima 上用于 UART 的引脚如下:

引脚 功能
D0 RX (接收)
D1 TX (发送)
要通过 UART 发送和接收数据,我们首先需要在 void setup() 内部设置波特率。请注意,使用 UART (RX/TX 引脚) 时,我们使用 Serial1 对象。
Serial1.begin(9600);

要读取传入数据,我们可以使用 while loop() 读取每个字符并将其添加到字符串中。

while(Serial1.available()){
  delay(2);
  char c = Serial1.read();
  incoming += c;
}

要写入内容,我们可以使用以下命令:

Serial1.write("Hello world!");

Serial Event

serialEvent() 方法在旧版本的 UNO 板上得到支持,但在 UNO R4 板(或任何其他更新的 Arduino 板)上不支持。
然而,由于这种方法只用于检测串行数据并执行函数,您也可以使用 Serial.available() 来检测何时有新数据可用:

if(Serial.available() > 0) {
  //代码放这里
}

SerialUSB

UNO R4 Minima 有一组扩展的 Serial 方法:

  • Serial.baud() - 返回当前使用的波特率 (int)。
  • Serial.stopbits() - 返回通信中使用的停止位数 (int)。
  • Serial.paritytype() - 返回通信中使用的奇偶校验类型 (int)。
  • Serial.numbits() - 返回通信中使用的数据位数 (int)。
  • Serial.dtr() - 返回数据终端就绪 (DTR) 信号的状态 (bool),如果 DTR 信号被积极使用,也会将 ignore_dtr 标志设置为 true。
  • Serial.rts() - 返回请求发送 (RTS) 信号的状态 (bool)。
    支持的链接:
  • SerialUSB.h (Github)。

USB HID

这块板可以作为 HID (键盘/鼠标) 并通过原生 USB 向计算机发送按键或坐标。

keyboard.press('W');
mouse.move(x,y);

这种支持是通过您可以从 IDE 中的库管理器安装的键盘和鼠标库启用的。
要了解更多关于 UNO R4 Minima 的 HID 功能,请查看 HID 指南。

SWD 连接器

SWD 连接器
SWD 连接器
在 UNO R4 Minima 上,使用 SWD 连接器引脚提供了一种调试选项,为更高级的用户提供了高级调试功能。

CAN 模块

UNO R4 Minima 的 RA4M1 内置了符合 CAN 2.0A/CAN 2.0B 标准的 CAN 模块。
CANRX 和 CANTX 引脚可以连接到 CAN 收发器,例如 MCP2551 或 TJA1050 IC。

引脚 功能
D4 CANTX
D5 CANRX
内置的 Arduino_CAN 库用于与其他 CAN 设备通信。
//设置 CAN 位速率并在
//从 BR_125k,BR_250k,BR_500k,BR_1000k 中选择初始化库
CAN.begin(CanBitRate::BR_250k);

构造一个 CAN 消息并发送它:

uint8_t const msg_data[] = {0xCA,0xFE,0,0,0,0,0,0};
memcpy((void *)(msg_data + 4), &msg_cnt, sizeof(msg_cnt));
CanMsg msg(CAN_ID, sizeof(msg_data), msg_data);
CAN.write(msg);

读取传入的 CAN 消息。

CanMsg const msg = CAN.read(); //读取

请注意,没有 CAN 收发器,就无法与其他 CAN 设备通信。

Bootloader

如果您需要在 UNO R4 Minima 上刷新引导加载程序,可以按照以下步骤操作:
步骤 1 按照入门指南中描述的安装 UNO R4 板包。
步骤 2 导航至:"C:\Users\YourWindowsUserName\AppData\Local\Arduino15\packages\arduino\hardware\renesas_uno\1.X\bootloaders\UNO_R4"
步骤 3 识别 dfu_minima.hex
步骤 4 安装 Renesas 闪存程序员(下载页面)
Renesas 闪存程序员目前仅在 Windows 上可用。
步骤 5 使用 Renesas 程序员刷新引导加载程序:

  • 选择 dfu_minima.hex。
  • 连接你的板子。
  • 短接 UNO R4 Minima 上的 BOOT 和 GND 引脚。
  • 转到 Connect Settings 标签页。
  • 在工具中选择 COM 端口 > 选择 IDE 中显示的端口。
  • 按开始。
阅读剩余
THE END