NRF52 平台
此组件包含 NRF52 平台的平台特定选项。
NOTE
对 ESPHome 在 NRF52 上所有方面的支持仍在开发中。
# 示例配置条目nrf52: board: adafruit_feather_nrf52840- board (必选, string): 开发板类型。有效选项为
adafruit_feather_nrf52840、adafruit_itsybitsy_nrf52840、xiao_ble。其他开发板使用这些配置通常也可以正常工作。 - bootloader (可选, string): 引导加载程序类型。有效选项为
mcuboot、adafruit、adafruit_nrf52_sd132、adafruit_nrf52_sd140_v6、adafruit_nrf52_sd140_v7。默认值取决于开发板类型。 - dcdc (可选, boolean): 为 REG1 级启用 DC/DC 转换器。默认值遵循 Zephyr 中的开发板设置。 如果使用 DC/DC 稳压器,则必须将外部 LC 滤波器连接到 DC/DC 稳压器引脚。 使用 DC/DC 稳压器的优点是总体功耗通常会降低, 因为这种稳压器的效率高于 LDO。 ⚠️ 警告:如果外部 LC 滤波器配置错误或质量较差,启用 DC/DC 可能会导致开发板无法启动。
nRF52840 需要一个引导加载程序,有两个受支持的选项:MCUboot 和 Adafruit nRF52 Bootloader。建议使用 MCUboot,因为它支持 OTA(空中下载)更新。你的开发板很可能带有制造商提供的引导加载程序。ESPHome 根据开发板名称确定引导加载程序类型。
低功耗 nRF52840 开发板 的示例。
使用 MCUboot 刷写
Section titled “使用 MCUboot 刷写”使用 MCUboot 刷写需要 SWD 连接,因此需要一个编程器。可以使用廉价的 ST-Link V2。
- 通过 SWD 将开发板连接到 PC。
- 运行
esphome upload yourfile.yaml --device PYOCD。
# 示例配置条目nrf52: board: adafruit_feather_nrf52840使用 Adafruit nRF52 Bootloader 刷写
Section titled “使用 Adafruit nRF52 Bootloader 刷写”用于通过闪存驱动器刷写。
- 通过 USB 将开发板连接到 PC。
- 快速将复位引脚对地短接两次。
- 将 UF2 软件包复制到闪存驱动器。
此引导加载程序支持通过 USB CDC 更新。
- 通过 USB 将开发板连接到 PC。
- 快速将复位引脚对地短接两次。
- 运行
esphome upload yourfile.yaml。
# 示例配置条目nrf52: board: adafruit_itsybitsy_nrf52840GPIO 引脚编号
Section titled “GPIO 引脚编号”有两种引用 GPIO 引脚的方式:
- 按引脚名称,例如
P0.15或P1.11。 - 按引脚编号,例如
15或43。
DFU(设备固件更新)
Section titled “DFU(设备固件更新)”dfu 组件通过监测 USB CDC 串行连接,实现自动进入 DFU(设备固件更新) 模式。
当主机以 1200 波特率打开端口时,组件会触发
复位以使设备进入 DFU 模式。
ESPHome 在通过以下命令上传固件时内部使用此组件:
esphome upload d.yaml不使用复位引脚(使用软件复位):
nrf52: dfu: trueNOTE
无引脚方式会执行软件复位,并通过保留的 GPREGRET 寄存器触发引导加载程序。
它的可靠性不如专用的复位
引脚,上传可能需要重试。
使用专用的复位引脚:
nrf52: dfu: reset_pin: number: 14 inverted: true- reset_pin (可选, Pin): 用于触发硬件复位的引脚。 此引脚应连接到 MCU 的复位线,或连接到能够使引导加载程序在复位后进入 DFU 模式的电路。 省略时,改用软件复位。
REGOUT0
Section titled “REGOUT0”REG0 稳压器级的输出电压,当开发板以高电压模式运行时,它为 GPIO 引脚供电。
除非将 uicr_erase 设为 true,否则此设置只能更改有限次数。
需要 mcuboot 或 adafruit 引导加载程序版本 0.9.3 或更高版本。
nrf52: reg0: voltage: 3.3V uicr_erase: true- voltage (必选, voltage): 想要的输出电压 - 必须是 1.8V、2.1V、2.4V、2.7V、3.0V、3.3V 之一。
- uicr_erase (可选, bool): 如果设为 true,在写入新的电压设置之前,用户信息配置寄存器(UICR) 将被擦除。 ⚠️ 警告:启用此功能若配置错误,可能会导致开发板无法启动。默认为 false。
如果你使用的是 Adafruit 引导加载程序,请升级到最新版本: Adafruit nRF52 Bootloader 发布版本
尝试为开发板配置一个最小的 LED 闪烁配置:
nrf52: board: adafruit_itsybitsy_nrf52840
esphome: name: supermini-nrf52840
logger: level: DEBUG
output: - platform: gpio pin: P0.15 id: red_led
interval: - interval: 1s then: - output.turn_on: red_led - delay: 0.5s - output.turn_off: red_lednrf52: board: xiao_ble
esphome: name: xiao-nrf52840
logger: level: DEBUG
output: - platform: gpio pin: P0.26 id: red_led
interval: - interval: 1s then: - output.turn_on: red_led - delay: 0.5s - output.turn_off: red_led开发板无法启动
Section titled “开发板无法启动”禁用 DC/DC:
nrf52: dcdc: false# 示例配置条目nrf52: framework: version: 2.9.2-
version (可选, string): nrf-sdk 版本。为以下之一:
2.6.1:旧版2.9.2:稳定版(默认)3.2.0:实验版(不支持 Zigbee)
-
libc_nano (可选, boolean): 使用 newlib-nano C 库变体。 newlib-nano 产生的二进制文件更小,但不支持所有 printf 格式说明符。 值得注意的是,
%zu说明符不能正确处理,当使用 logger 组件时, 这会导致日志输出错误。 设为false以使用完整的 newlib,它支持所有标准 printf 格式说明符, 包括%zu和 64 位整数,但代价是二进制文件更大。默认为true。 -
advanced (可选, mapping): 参见下面的高级配置。
- enable_ota_rollback (可选, boolean): 启用 OTA 回滚支持。启用后,如果设备在启动被标记为成功之前崩溃或复位,
引导加载程序将自动回滚到以前的固件。这与 safe_mode 组件配合使用——在
boot_is_good_after时间(默认 60 秒)之后,固件被标记为有效。如果设备在此之前崩溃, 它将回滚到以前可正常工作的固件。默认为true。