BLE-GR551x

更新时间:2024-04-17 06:15:35下载pdf

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

硬件环境

芯片手册

  • 获取方式一:接入蓝牙子设备开发框架后,在 hardware\GR551x\chip_manual\GR551x_Datasheet_Rev.2.6.pdf 路径下,获取芯片手册。

  • 获取方式二:访问 GOODIX 汇顶官方网站,文档中心获取 最新版本

开发板

  • 涂鸦 IoT 开发平台,获取开发板。GR5515IENDU_DEMO_NANO 开发板对应的 物料编码2.03.02.00037

    原理图路径为:hardware\GR551x\module_manual\GR5515IENDU-DEMO-NANO_V1.0.0.pdf

    引脚复用(Pinmux)分配表路径为:hardware\GR551x\module_manual\GR5515 引脚复用(Pinmux)分配表 V2.2.xlsx

    BLE-GR551x

硬件外设

GR551x 芯片特点以及产品参数,可访问 Goodix 官网 低功耗蓝牙->GR551x 系列

  • GPIO

    GR551x 支持多个可灵活复用的 GPIO,其中 GR5515I 支持最多 39 个,GR5513 支持最多 22 个, 引脚复用配置如下图所示。详见 hardware\GR551x\chip_manual\GR551x_Datasheet_Rev.2.3.pdf10.1 Pin Mux 章节

    BLE-GR551x

    TuyaOS SDK 中默认定义引脚序号与 GR551x Pin 对应关系如下表所示:

    序号 GR551x_pin 序号 GR551x_pin 序号 GR551x_pin
    TUYA_GPIO_NUM_0 GPIO_0 TUYA_GPIO_NUM_32 AON_GPIO_0 TUYA_GPIO_NUM_40 MSIO_0
    TUYA_GPIO_NUM_1 GPIO_1 TUYA_GPIO_NUM_33 AON_GPIO_1 TUYA_GPIO_NUM_41 MSIO_1
    TUYA_GPIO_NUM_30 GPIO_30 TUYA_GPIO_NUM_38 AON_GPIO_6 TUYA_GPIO_NUM_43 MSIO_3
    TUYA_GPIO_NUM_31 GPIO_31 TUYA_GPIO_NUM_39 AON_GPIO_7 TUYA_GPIO_NUM_44 MSIO_4
  • UART

    GR551x 支持两路串口 UART0 与 UART1,IO 的映射可按 引脚复用(Pinmux)分配表 配置。

    TuyaOS SDK v3.9.0 及以上版本内,默认串口引脚定义如下,支持引脚自定义配置:

    UART 功能 引脚 描述
    UART0 TX GPIO_0 烧录、授权、测试上位机(APP_UART_ID_0
    拨码开关 2 拨到 ON 位置(朝主芯片方向)
    UART0 RX GPIO_1 拨码开关 1 拨到 ON 位置(朝主芯片方向)
    UART1 TX GPIO_7 Log 日志(APP_UART_ID_1
    拨码开关 4 拨到 ON 位置(朝主芯片方向)
    为方便使用板载串口接日志,可将 G7 与 G10 引脚相连
    UART1 RX GPIO_6 预留

    TuyaOS SDK v3.8.3 内,默认串口引脚定义如下:

    UART 功能 引脚 描述
    UART0 TX GPIO_10 Log 日志(APP_UART_ID_0
    UART0 RX GPIO_11 /
    UART1 TX GPIO_0 烧录、授权、测试上位机(APP_UART_ID_1
    UART1 RX GPIO_1 /
  • SPI

    GR551x 支持两路 SPI 接口,1 路支持 2 个 Slave 选择引脚的 SPI Master 接口,1 路 SPI Slave 接口,最高速率可达 32 MHz。TuyaOS 中 SPI 初始化默认使用 SPI Master,将 MISO 与 MOSI 通过引线连接(G25 与 G16 短接)即可测试验证。默认引脚定义如下表所示:

    SPI 功能 引脚
    SPIM CS GPIO_17(G17)
    SPIM CLK GPIO_24(G24)
    SPIM MOSI GPIO_25(G25)
    SPIM MISO GPIO_16(G16)
  • I2C

    GR551x 支持两路 I2C 接口,支持 100kHz、400 kHz、1 MHz、2 MHz 通讯速率可调。由于 OLED 屏幕为了显示 SDK 信息(TuyaOS Demo)需预先初始化,TuyaOS 中 I2C 初始化默认使用 I2C0,引脚定义如下表所示:

    I2C 功能 引脚
    I2C0 SCL GPIO_30(G30)
    I2C0 SDA GPIO_26(G26)
  • PWM

    GR551x 支持 6 路 PWM 输出(channel 0~5),通道与 SDK 内默认引脚定义如下表所示:

    通道 GR5515 引脚 GR5513 引脚 备注
    0 MSIO_0(M0) GPIO_2(G2) PWM0_A
    1 MSIO_1(M1) GPIO_3(G3) PWM0_B
    2 MSIO_2(M2) GPIO_4(G4) PWM0_C
    3 GPIO_7(G7) GPIO_31(G31) PWM1_A
    4 GPIO_10(G10) GPIO_30(G30) PWM1_B
    5 GPIO_11(G11) GPIO_26(G26) PWM1_C
  • ADC

    13 位 ADC,最高 1 Msps,多达 8 个通道(5 个外部测试通道和 3 个内部单通道),支持单端和差分两种输入方式。GR5515 适配了 5 路外部模拟单端输入,GR5513 适配了 2 路。通道与引脚定义如下表所示:

    通道 GR5515 引脚 GR5513 引脚
    0 MSIO_0(M0) MSIO_0(M0)
    1 MSIO_1(M1) MSIO_1(M1)
    2 MSIO_2(M2)
    3 MSIO_3(M3)
    4 MSIO_4(M4)
  • 按键

    AON_GPIO_0(引脚简称:A0),适用于 TuyaOS SDK v3.9.0 及以上。

    AON_GPIO_6(引脚简称:A6),仅适用于 TuyaOS SDK v3.8.3

    • 短按唤醒设备。
    • 长按 3s,本地恢复出厂设置。
  • 启动时间检测引脚

    GPIO_5(引脚简称:G5)

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

软件环境

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

Keil

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

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

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

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

    BLE-GR551x

GProgrammer

GProgrammer 是一款支持 GR551xGR5526 系列芯片的固件烧录工具,用于开发调试,支持固件下载、Flash 读写、eFuse 烧写、固件加密加签等功能。在量产阶段,GR551x、GR5526 系列芯片产品的批量烧录测试,可采用 PLT LiteGRPLT Lite 配置工具 进行批量烧录测试。

以 Windows 系统为例,安装原厂固件烧录工具的步骤如下:

  1. 前往 GOODIX 官网 下载 GProgrammer (Windows)工具,推荐 V1.2.36 及以上版本

  2. 全程默认安装即可。

开发软件

芯片类型选择

GR551x 系列提供多种封装类型,可支持多样化的应用场景需求。从 CHIP_TYPE 看,主要是两类 GR5515 与 GR5513。用不同芯片平台开发时,开发者需 custom_config.h 文件下调整对应芯片类型

// <o> Select chip type
// <0=> GR5515
// <1=> GR5513
#ifndef CHIP_TYPE
#define CHIP_TYPE  0
#endif

计算 Flash 和 RAM 占用

  1. 关闭测试功能。

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

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

    BLE-GR551x

烧录固件

连线说明

GR5515ENDU_DEMO_NANO 开发板自带 USB 转 TTL 串口,硬件连接 确保拨码开关全部拨到 ON 位置上(朝 GR551x 主控芯片方向拨),可使用串口烧录。但过程中需复位的操作需要手动执行。

因增加了 Flash 保护,烧录前需做解锁操作,以及完整的烧录授权流程需对设备做几次复位动作。因此,更加建议外接 USB 串口工具,将 RST 复位信号与芯片复位脚接在一起,对应步骤脚本/上位机都会自动控制 RST 引脚让设备复位。硬件连接及工具如下图所示:

BLE-GR551x

固件说明

编译输出产物及烧录说明,详见 .\hex\material\README.md 文档。

BLE-GR551x

烧录方式一:GP 工具烧录

SDK 版本 v3.9.0 及以上,vendor 已支持对 Flash 做上锁保护,因此在重新烧录前需先做解锁操作,然而原厂 GP 工具当前尚未支持。 开发者日常调试可选择如下方式:

  • 使用命令行方式,已支持对 Flash 做解锁操作,详见烧录方式二:命令行烧录
  • 调试时,临时注释掉 Flash 保护函数,具体位置在 main 函数下的 hal_flash_block_protect(0, 0x0B)
BLE-GR551x

烧录方式二:命令行烧录

原厂 Flash tool 版本:GR551x_flash_tool_v1.2.42.1009.exe已支持 Flash 解锁

进入 .\hex\material\GR551x_flash_tools 路径,双击运行 program.bat 脚本。如硬件上已连接 RST 复位信号,则下述过程无需人工复位,否则需人工执行。

BLE-GR551x

烧录方式三:涂鸦产测工具

GR551x 平台目前仅 芯片烧录 上位机工具支持,也就是日常说的 小黄鸭工具,烧录完固件后进行产测授权。

BLE-GR551x

平台特性

启动时间

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

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

  • 启动时间说明:从上电运行至 main 函数,需要 1 秒左右 的时间。其中 有 0.5S 是固化在芯片里的程序做的,用于识别 GP 串口连接

    BLE-GR551x

Flash 分区

BLE-GR551x

分区调整方法

在原工程中修改一些宏即可调整默认的 Flash 分区,会涉及改动的几种可能情况。

  • application 代码大小超过了默认分区的 196K,如何扩容?压缩 unused 区域。
  • unused 区域用于存储业务数据,但空间不够,如何扩容?压缩 application 与 OTA 区域。
  • unused 区域 SDK 默认用于存储一些测试数据,可按需自行分配规划。
  • 其他的分区,原则上没必要也不建议改动

application 应用程序起始地址

// custom_config.h

// <o> Code load address
// <i> Default: 0x01002000
#define APP_CODE_LOAD_ADDR      0x0100C000

// <o> Code run address
// <i> Default: 0x01002000
#define APP_CODE_RUN_ADDR       0x0100C000

OTA 存储数据起始地址与大小

// board.h

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

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

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

unused 区域

// board.h

// SDK测试存储地址 16K
/**@brief   Define storage SDK test data addr, such as storage bulk data, and product test common data. */
#ifndef BOARD_FLASH_SDK_TEST_START_ADDR
#define BOARD_FLASH_SDK_TEST_START_ADDR         (0x01077000)
#endif

功耗

测试方法

  1. 将 NANO 板载的电源指示灯或串联的电阻拆除。

    BLE-GR551x
  2. 将串口芯片拨码开关拨到 OFF 位置(朝跳线帽方向拨)。

  3. 将板子所有外接引线全部拔除,保留与上位机通信串口。可用 USB 转 TTL 工具接板子的串口(USB 串口的 TX 接 GPIO_1,USB 串口的 RX 接 GPIO_0)。

  4. 将带有供电能力的电流表接入,供电电压 3.3V。其中电源正极接跳线帽 3V3 丝印位置,电源负极接板子 GND。

  5. 通过上位机 功耗管理 即可测试不同模式的功耗数据。

    BLE-GR551x

功耗数据

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

    BLE-GR551x
  • 此处测试的功耗为典型的 600ms 广播 时候的平均功耗。

    BLE-GR551x
  • 此处测试的功耗为典型的 200ms 广播 的平均功耗。

    BLE-GR551x
  • 此处测试的功耗为典型的系统 Deep Sleep 模式 平均功耗。关闭所有外设,关闭广播,支持 AON 唤醒,RAM 数据保持

    BLE-GR551x

本地时钟挂测

本地时钟长运挂机 50 小时以上,误差小于 1 秒。

RTC 测试前需要先对 32M 晶振进行校准,否则测试结果可能差异会比较大。

BLE-GR551x