更新时间:2024-07-30 03:10:33下载pdf
本文仅介绍 TuyaOS 开发过程中芯片平台相关的基本信息,有关 TuyaOS 的更多信息请参考 TuyaOS 开发者论坛。
获取方式一:接入蓝牙子设备开发框架后,在 hardware\GR551x\chip_manual\GR551x_Datasheet_Rev.2.6.pdf
路径下,获取芯片手册。
获取方式二:访问 GOODIX 汇顶官方网站,文档中心获取 最新版本。
在 涂鸦开发者平台,获取开发板。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
。
GR551x 芯片特点以及产品参数,可访问 Goodix 官网 低功耗蓝牙->GR551x 系列。
GPIO
GR551x 支持多个可灵活复用的 GPIO,其中 GR5515I 支持最多 39 个,GR5513 支持最多 22 个, 引脚复用配置如下图所示。详见 hardware\GR551x\chip_manual\GR551x_Datasheet_Rev.2.3.pdf
内 10.1 Pin Mux 章节。
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。
启动时间检测引脚
GPIO_5
(引脚简称:G5)
进入 main
函数后置为高电平。
软件环境涉及 Keil 和 GR551x 依赖环境安装。
请前往 Arm Keil 官方网站 自行安装 Keil 软件,所有安装步骤使用默认配置,推荐使用 mdk528a.exe 版本。
安装期间若弹出安装驱动,请选择 安装 。
打开 Keil 时,若弹出器件包安装,请手动关闭。
安装 Keil 后,将 UV4.exe
文件所在目录的路径,添加到 环境变量 中。例如:TUYAOS_COMPILE_TOOL
: C:\Keil_v5\UV4
,结果如下图所示:
GProgrammer 是一款支持 GR551x、GR5526 系列芯片的固件烧录工具,用于开发调试,支持固件下载、Flash 读写、eFuse 烧写、固件加密加签等功能。在量产阶段,GR551x、GR5526 系列芯片产品的批量烧录测试,可采用 PLT Lite、GRPLT Lite 配置工具 进行批量烧录测试。
以 Windows 系统为例,安装原厂固件烧录工具的步骤如下:
前往 GOODIX 官网 下载 GProgrammer (Windows)工具,推荐 V1.2.36 及以上版本。
全程默认安装即可。
GR551x 系列提供多种封装类型,可支持多样化的应用场景需求。从 CHIP_TYPE
看,主要是两类 GR5515 与 GR5513。用不同芯片平台开发时,开发者需 在 custom_config.h
文件下调整对应芯片类型。
// <o> Select chip type
// <0=> GR5515
// <1=> GR5513
#ifndef CHIP_TYPE
#define CHIP_TYPE 0
#endif
关闭测试功能。
#define TUYA_SDK_TEST 0
关闭涂鸦 Log。
#define ENABLE_LOG 0
#define BOARD_ENABLE_LOG 0
重新进行全量编译后,打开 .map
文件可知,占用的 RAM 和 Flash 空间如下:
GR5515ENDU_DEMO_NANO
开发板自带 USB 转 TTL 串口,硬件连接 确保拨码开关全部拨到 ON 位置上(朝 GR551x 主控芯片方向拨),可使用串口烧录。但过程中需复位的操作需要手动执行。
因增加了 Flash 保护,烧录前需做解锁操作,以及完整的烧录授权流程需对设备做几次复位动作。因此,更加建议外接 USB 串口工具,将 RST 复位信号与芯片复位脚接在一起,对应步骤脚本/上位机都会自动控制 RST 引脚让设备复位。硬件连接及工具如下图所示:
编译输出产物及烧录说明,详见 .\hex\material\README.md
文档。
SDK 版本 v3.9.0 及以上,vendor 已支持对 Flash 做上锁保护,因此在重新烧录前需先做解锁操作,然而原厂 GP 工具当前尚未支持。 开发者日常调试可选择如下方式:
main
函数下的 hal_flash_block_protect(0, 0x0B)
。原厂 Flash tool 版本:GR551x_flash_tool_v1.2.42.1009.exe
,已支持 Flash 解锁。
进入 .\hex\material\GR551x_flash_tools
路径,双击运行 program.bat
脚本。如硬件上已连接 RST 复位信号,则下述过程无需人工复位,否则需人工执行。
GR551x 平台目前仅 芯片烧录 上位机工具支持,也就是日常说的 小黄鸭工具,烧录完固件后进行产测授权。
测试方法:使用逻辑分析仪测量 VCC 引脚 和 启动时间检测引脚 的电平变化时间差。
检测引脚:外设 > 启动时间检测引脚。
启动时间说明:从上电运行至 main 函数,需要 1 秒左右 的时间。其中 有 0.5S 是固化在芯片里的程序做的,用于识别 GP 串口连接。
分区调整方法
在原工程中修改一些宏即可调整默认的 Flash 分区,会涉及改动的几种可能情况。
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
测试方法
将 NANO 板载的电源指示灯或串联的电阻拆除。
将串口芯片拨码开关拨到 OFF 位置(朝跳线帽方向拨)。
将板子所有外接引线全部拔除,保留与上位机通信串口。可用 USB 转 TTL 工具接板子的串口(USB 串口的 TX 接 GPIO_1
,USB 串口的 RX 接 GPIO_0
)。
将带有供电能力的电流表接入,供电电压 3.3V。其中电源正极接跳线帽 3V3 丝印位置,电源负极接板子 GND。
通过上位机 功耗管理 即可测试不同模式的功耗数据。
功耗数据
此处测试的功耗为典型的 1s 广播 的平均功耗。
此处测试的功耗为典型的 600ms 广播 时候的平均功耗。
此处测试的功耗为典型的 200ms 广播 的平均功耗。
此处测试的功耗为典型的系统 Deep Sleep 模式 平均功耗。关闭所有外设,关闭广播,支持 AON 唤醒,RAM 数据保持。
本地时钟长运挂机 50 小时以上,误差小于 1 秒。
RTC 测试前需要先对 32M 晶振进行校准,否则测试结果可能差异会比较大。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈