BLE-nRF52832

更新时间:2024-04-17 07:29:19下载pdf

本文仅介绍 TuyaOS 开发过程中芯片平台相关的基本信息。有关 TuyaOS 的更多信息,参考 TuyaOS 开发者论坛

硬件环境

芯片手册

  • 获取方式一:在 hardware\nRF52832\chip_manual\nRF52832_PS_v1.7.pdf 路径下,获取芯片手册。

  • 获取方式二:访问 Nordic 半导体官方网站获取 最新版本

开发板

  • 获取方式一:在 涂鸦 IoT 开发平台,获取开发板,开发板对应的 物料编码2.03.99.00045。该开发板复用了涂鸦低功耗蓝牙 Dongle 的硬件。

    原理图路径为 hardware\nRF52832\module_manual\Tuya BLE Dongle 原理图.pdf

    BLE-nRF52832
  • 获取方式二:您也可复用 Nodic 官方开发板,并参考官方文档了解 最新版本使用说明

    BLE-nRF52832

硬件外设

UART

该平台仅支持 1 个串口 UART0,用于授权以及上位机测试。

UART 功能 引脚
UART 0 TX P0.06
UART 0 RX P0.08

SPI

由于具有相同寄存器地址的外设只能使用其中一个,所以 SPI 支持 SPI1 和 SPI2。

BLE-nRF52832
SPI 功能 引脚
SPI1 CS P0.05
SPI1 CLK P0.04
SPI1 SDI P0.02
SPI1 SDO P0.03
SPI2 CS P0.28
SPI2 CLK P0.29
SPI2 SDI P0.30
SPI2 SDO P0.31

IIC

由于具有相同寄存器地址的外设只能使用其中一个,所以 IIC 支持 IIC0。

BLE-nRF52832
IIC 功能 引脚
IIC0 SCL P0.16
IIC0 SDA P0.15

PWM

通道 引脚
0 P0.28
1 P0.29
2 P0.30
3 P0.31

ADC

通道 引脚
0 P0.02
1 P0.03
2 P0.04
3 P0.05
4 P0.28
5 P0.29
6 P0.30
7 P0.31

按键

P0.14

  • 短按唤醒设备。
  • 长按 3s,本地恢复出厂设置。

启动时间检测引脚

P0.05

进入 main 函数后置为高电平。

软件环境

软件环境涉及 Keil 和 nRF52832 依赖环境安装。

Keil

  1. 请前往 Arm Keil 官方网站 自行安装 Keil 软件,所有安装步骤使用默认配置,推荐使用 mdk528a.exe 版本。

  2. 安装期间若弹出安装驱动,请选择 安装

  3. 打开 Keil 时,若弹出器件包安装,请手动关闭。

  4. 安装 Keil 后,将 UV4.exe 文件所在目录的路径,添加到 环境变量 中。例如:TUYAOS_COMPILE_TOOL: C:\Keil_v5\UV4,结果如下图所示:

    BLE-nRF52832

nRF 命令行工具

nRF 命令行工具包括 Jlink 驱动以及 Nordic 自己开发的一些命令行工具,具体包括 Jlink 驱动,nrfjprog,nrfutil 以及 mergehex 等。

以 Windows 系统为例,安装 nRF 命令行工具的步骤如下:

  1. 前往 Nordic 官网 下载 nRF 命令行工具。

  2. 选择您的芯片平台,以及需要的工具版本。例如,下载 win32 版本,得到 nRF5x-Command-Line-Tools_9_8_1_Installer.exe 之类的可执行文件。

    BLE-nRF52832
  3. 双击 .exe 文件安装,同期许可条款和条件。安装过程中,不要更改默认选项,直接按照默认选项去安装即可。

    BLE-nRF52832 BLE-nRF52832
  4. 若出现如下界面,一定要选择 select all

    BLE-nRF52832

ARM CMSIS

  1. 单击下载 ARM CMSIS
  2. 根据提示安装即可。

Device family pack

  1. 单击下载 Device family pack

  2. 根据提示安装即可。

    请不要让 Keil 自动下载 Device Family Pack,否则极有可能出现编译失败的情况。

J-Link

  1. 前往 Segger 官网下载 J-Link

  2. 选择合适的版本(测试使用 V6.88c),根据提示安装即可。

    BLE-nRF52832

开发软件

开启扫描功能

BLE-nRF52832
#define     TKL_BLUETOOTH_SUPPORT_SCAN      (1)

计算 Flash 和 RAM 占用

  1. 关闭测试功能。

    #define TUYA_SDK_TEST 0
    
  2. 关闭涂鸦 Log。

    #define ENABLE_LOG 0
    #define BOARD_ENABLE_LOG 0
    
  3. 关闭原厂 Log。

    BLE-nRF52832
  4. 关闭扫描功能。

    #define     TKL_BLUETOOTH_SUPPORT_SCAN      (0)
    
  5. 重新进行全量编译后,打开 .map 文件可知,占用的 RAM 和 Flash 空间如下:

    BLE-nRF52832

    其中,RW 中有 10K 左右空间实际上是放到 Flash 中的,所以实际占用的 RAM 空间为 26K 左右,详见下图:

    BLE-nRF52832

    若打开扫描功能,即

    #define     TKL_BLUETOOTH_SUPPORT_SCAN      (1)
    

    重新进行全量编译后,打开 .map 文件可知,占用的 RAM 和 Flash 空间如下:

    BLE-nRF52832

烧录固件

连线说明

使用 J-Link 的 SW 模式,所以连线方式如下:

J-Link 设备
VCC VCC
GND GND
DIO DIO
CLK CLK

固件说明

BLE-nRF52832

烧录方式一

  1. 在 Visual Studio Code 左侧目录栏的 apps\tuyaos_demo_ble_peripheral 上,右键单击,选择 在文件资源管理器中显示

    BLE-nRF52832
  2. 打开目录 tuyaos_demo_ble_peripheral\_build\hex

  3. 双击 load_softdevice_bootloader_app.bat 脚本,即可进行涂鸦的固件烧录。

    此处烧录为全固件烧录,烧录后需要进行授权。

烧录方式二

使用 Keil 的 Download 按钮下载(只能下载应用层)。

烧录方式三

使用 J-Flash 进行烧录,您需要自行学习 J-Flash 烧录流程。

烧录方式四

使用桌面版 nRF Connect 进行烧录,请参考桌面版 nRF Connect 使用指南。

平台特性

启动时间

  • 测试方法:使用逻辑分析仪测量 VCC 引脚启动时间检测引脚 的电平变化时间差。

  • 检测引脚:外设 > 启动时间检测引脚

    BLE-nRF52832

Flash 分区

BLE-nRF52832

分区调整方法

在原工程中修改以下宏即可调整默认的 Flash 分区:

// Flash
#ifndef BOARD_FLASH_BULK_DATA_START_ADDR
#define BOARD_FLASH_BULK_DATA_START_ADDR        (0x70000)
#endif

#ifndef BOARD_FLASH_TUYA_INFO_START_ADDR
#define BOARD_FLASH_TUYA_INFO_START_ADDR        (0x74000)
#endif

// #ifndef BOARD_FLASH_OTA_INFO_ADDR
// #define BOARD_FLASH_OTA_INFO_ADDR               (0x7C000)
// #endif

#ifndef BOARD_FLASH_OTA_START_ADDR
#define BOARD_FLASH_OTA_START_ADDR              (0x46000)
#endif

#ifndef BOARD_FLASH_OTA_END_ADDR
#define BOARD_FLASH_OTA_END_ADDR                (0x66000)
#endif

#ifndef BOARD_FLASH_OTA_SIZE
#define BOARD_FLASH_OTA_SIZE                    (BOARD_FLASH_OTA_END_ADDR - BOARD_FLASH_OTA_START_ADDR)
#endif

// #ifndef BOARD_FLASH_MAC_START_ADDR
// #define BOARD_FLASH_MAC_START_ADDR              (0)
// #endif

功耗

  • TuyaOS BLE SDK 开启了 DCDC 模式,可以进入更低功耗模式。

  • tuya_ble_sdk 未开启 DCDC 模式,功耗偏高。

    此处测试的功耗为典型的 1s 广播时候的平均功耗。

    BLE-nRF52832