设备编译与烧录
固件编译
-
在 Visual Studio Code 软件页面上,打开产品开发包,展开左侧
software/TuyaOS/apps
,可以看到本产品 Demo 的project
文件夹。 -
右键产品文件夹,选择 Build Project,在跳出的文本框内输入编译固件的版本号(格式为
x.x.x
)后,按回车键确认。 -
编译成功后,控制台打印内容如下:
编译产物可在工程路径下的
apps/*产品名称*/output
文件夹查看,其中 QIO 标识的是烧录固件,UG 标识的是 OTA 升级文件,具体如下: -
清除编译内容,Telink 平台编译前建议先清除上次编译内容,可右键产品文件夹,选择 Clean Project,输入版本号,按回车键确认对产品编译内容进行清除。
固件烧录
- Telink 平台使用原厂烧录工具烧录,可在
TLSR8258_3.8.1\software\TuyaOS\docs\
查看。 - 涂鸦烧录授权工具烧录及芯科平台原厂工具烧录。
例程开发说明
基础信息配置
设备注册配置
在产品工程的 src
文件夹中的 app_dev_register.c
文件,可修改注册的 device ID、cluster、attribute 等设备信息。
可在文件如下所示处,修改注册的 server cluster
,您可根据需要进行增删:
// server cluster list
CONST TAL_CLUSTER_T app_server_cluster_list[] = {
DEF_CLUSTER_IDENTIFY_CLUSTER_ID(identify_attr_list)
DEF_CLUSTER_GROUPS_CLUSTER_ID(group_attr_list)
DEF_CLUSTER_SCENES_CLUSTER_ID(scene_attr_list)
DEF_CLUSTER_ON_OFF_CLUSTER_ID(onoff_attr_list)
DEF_CLUSTER_ZLL_COMMISSIONING_CLUSTER_ID(zll_commissioning_attr_list)
DEF_CLUSTER_LEVEL_CONTROL_CLUSTER_ID(level_control_attr_list)
DEF_CLUSTER_COLOR_CONTROL_CLUSTER_ID(color_control_attr_list)
};
可在文件如下所示处,修改设备注册的 endpoint 及其的 device ID 等信息。
//endpoint descriptor
TAL_ENDPOINT_T dev_endpoint_desc[] = {
{0x01, ZHA_PROFILE_ID, ZG_DEVICE_ID_EXTENDED_COLOR_LIGHT, SERVER_CLUSTER_NUM, (TAL_CLUSTER_T *)&app_server_cluster_list[0], 0, NULL},
{0xF2, ZGP_PROFILE_ID, ZG_DEVICE_ID_GP_PROXY_MINIMUM, 0, NULL, CLIENT_CLUSTER_NUM, (TAL_CLUSTER_T *)&app_client_cluster_list[0]},
};
固件信息修改
在产品工程文件夹下的 app_config.yml
,可配置该产品的 PID、model ID、设备类型等信息。文件支持两种配置方式,您根据需求任选其一即可。文件内容及作用如下:
#######################################################################
# COMPATIBILITY of [Tuya mode]
# For the use of Tuya redefined attributes:
# [cluster:0x0000,attribute:0x0004] Tuya manufacturer name
# [cluster:0x0000,attribute:0x0005] Tuya model ID
########################################################################
Firmware_Information:
description: "this is a demo project"
device_role: "router" # router/sleep_end_dev
image_type: 0x1602
manufacture_id: 0x1002
model_id: "TS0505B"
manufacture_name: "_TZ3210_hxyvqfuz" # capacity+pid
module_name: "ZSU"
chip_id: "efr32mg21a020f1024im32" # efr32mg21a020f1024im32/efr32mg21a020f768im32
########################################################################
# COMPATIBILITY of [Zigbee standard mode]
# For the use of ZCL standard attributes:
# [cluster:0x0000,attribute:0x0004] ManufacturerName
# [cluster:0x0000,attribute:0x0005] ModelIdentifier
########################################################################
# Firmware_Information:
# description: "this is a demo project"
# device_role: "router" # router/sleep_end_dev
# image_type: 0x1602
# manufacture_id: 0x1002
# model_id: "custom"
# manufacture_name: "custom"
# product_id: "bhzkbugw"
# capacity: "_TZ3210_"
# product_type: "TS0502B"
# module_name: "ZSU"
# chip_id: "efr32mg21a020f1024im32" # efr32mg21a020f1024im32/efr32mg21a020f768im32
名称 | 功能 |
---|---|
description | 产品描述字段 |
device_role | 设备角色类型,router 代表正常功耗路由设备,sleep_end_dev 代表休眠低功耗设备,请谨慎更改 |
image_type | 固件信息,用于 OTA 时验证使用 |
manufacture_id | 厂商 ID,用于 OTA 时验证使用 |
model_id | 设备型号,用于加入涂鸦网关后确定设备功能,请谨慎更改 |
manufacture_name | 产品能力值和涂鸦 PID 拼接,用下划线(_)连接,例如 _TZ3210_hxyvqfuz |
module_name | 模组型号,指示产品使用的模组 |
chip_id | 芯片型号,指示产品使用的芯片,请勿更改 |
capacity | 涂鸦产品能力值,该字段请勿更改。如需更改,请咨询涂鸦产品经理 |
product_type | 设备型号,用于加入涂鸦网关后确定设备功能,请谨慎更改 |
product_id | 涂鸦产品 ID,此处填写的是默认 PID,烧录授权时会写入新 PID |
产品开发包配置
例程开发需要开发者在产品工程目录的 include
文件夹的 light_app_config.h
文件进行一系列配置:
-
产品基础相关配置,可配置项如下:
配置项 功能 APP_LIGHT_CHANNELS 灯具路数。 1
为一路灯(C)2
为二路灯(CW)3
为三路灯(RGB)4
为四路灯(RGBC)5
为五路灯(RGBCW)
DEFAULT_TX_POWER 设备发射功率,可根据需求修改,受限制于硬件性能。 LIGHT_ON_GRADUAL_TIME_MS 开灯渐变时间,涂鸦特色功能。 LIGHT_OFF_GRADUAL_TIME_MS 关灯渐变时间,涂鸦特色功能。 -
产品配网相关配置,可配置项如下:
配置项 功能 ZIGBEE_JOIN_TIMEOUT_MS 网络配对超时时间,单位 ms POWER_ON_AUTO_JOIN 上电没有网络时是否自动配网 SCAN_NETWORK_RESET_COUNT 触发重置配网的上下电次数 SCAN_NETWORK_PROMPT_TIME_S 配网提醒灯闪时长,单位 s SCAN_NETWORK_PROMPT_METHOD 配网提醒灯闪方式, 0
为闪烁,1
为呼吸 -
产品硬件参数配置,可配置项如下:
配置项 功能 PWM_MODE_ENABLE 1 为使能输出方式为 PWM, 0
为关闭APP_PWM_FREQUENCY PWM 频率 APP_PWM_POLARITY PWM 输出有效电平 APP_PWM_RED_PIN_NUM 红光输出 IO 口 APP_PWM_GREEN_PIN_NUM 绿光输出 IO 口 APP_PWM_BLUE_PIN_NUM 蓝光输出 IO 口 APP_PWM_COLD_PIN_NUM 冷光输出 IO 口 APP_PWM_WARM_PIN_NUM 暖光输出 IO 口 BRIGHT_MODE_CCT 色温调节方式。 0
为 CW 模式,1
为 CCT 模式CTRL_PIN_ENABLE 1
为使能控制引脚,0
为关闭CTRL_PIN_NUM 控制引脚输出 IO 口 CTRL_PIN_LEVEL 控制引脚输出有效电平 POWER_CONFIG_ENABLE 1
为使能功率转换,0
为关闭CW_POWER_CONFIG 白光功率参数百分比,范围 100-200 RGB_POWER_CONFIG 彩光功率参数百分比,范围 100-200 LIGHT_CONFIG_CW_MIN 白光引脚输出的最小占空比百分比,范围 1-100 LIGHT_CONFIG_CW_MAX 白光引脚输出的最大占空比百分比,范围 1-100 LIGHT_CONFIG_COLOR_MIN 彩光引脚输出的最小占空比百分比,范围 10-100 LIGHT_CONFIG_COLOR_MAX 彩光引脚输出的最大占空比百分比,范围 10-100 COLOR_TEMPERATURE_KEV_MAX 最大色温开尔文值 COLOR_TEMPERATURE_KEV_MIN 最小色温开尔文值 -
彩光伽马参数配置,可配置项如下:
配置项 功能 GAMMA_ENABLE 1
为使能伽马转换,0
为关闭RED_GAMMA 红光伽马参数,范围 0-100 RED_WHITE_BALANCE 红光白平衡参数,范围 0-100 GREEN_GAMMA 绿光伽马参数,范围 0-100 GREEN_WHITE_BALANCE 绿光白平衡参数,范围 0-100 BLUE_GAMMA 蓝光伽马参数,范围 0-100 BLUE_WHITE_BALANCE 蓝光白平衡参数,范围 0-100 -
产品产测参数配置,可配置项如下:
配置项 功能 LIGHT_BEACON_MF_TEST_ENABLE 1
为使能 Beacon 产测,0
为关闭PRODUCT_STEP1_REPEAT 产测一是否重复进入 PRODUCT_COLD_AGING_MINS 冷白光(C)老化时间 PRODUCT_WARM_AGING_MINS 暖白光(W)老化时间 PRODUCT_COLOR_AGING_MINS 彩光(RGB)老化时间 -
Zigbee 标准及涂鸦私有功能配置,可配置项如下:
配置项 功能 ZIGBEE_START_UP_ON_OFF_ENABLE 是否开启 startup on off 功能, 0
为关闭,1
为开启TUYA_PRIVATE_CAMMAND_ENABLE 是否开启涂鸦私有功能, 0
为关闭,1
为开启
管脚配置
PWM 输出引脚配置
在产品工程目录的 include
文件下的 light_app_config.h
,可配置 PWM 输出的 IO 口,可在文件如下所示处,修改 IO 配置:
//pwm io config
#define APP_PWM_RED_PIN_NUM APP_GPIO_PA3
#define APP_PWM_GREEN_PIN_NUM APP_GPIO_PD2
#define APP_PWM_BLUE_PIN_NUM APP_GPIO_PC5
#define APP_PWM_COLD_PIN_NUM APP_GPIO_PA4
#define APP_PWM_WARM_PIN_NUM APP_GPIO_PA0
Telink 平台管脚对应关系
Telink 平台管脚对应关系如下,其中 TUYA_GPIO_NUM_0
对应的是 0
,以此类推。
#define APP_GPIO_PA0 TUYA_GPIO_NUM_0
#define APP_GPIO_PA1 TUYA_GPIO_NUM_1
#define APP_GPIO_PA2 TUYA_GPIO_NUM_2
#define APP_GPIO_PA3 TUYA_GPIO_NUM_3
#define APP_GPIO_PA4 TUYA_GPIO_NUM_4
#define APP_GPIO_PA5 TUYA_GPIO_NUM_5
#define APP_GPIO_PA6 TUYA_GPIO_NUM_6
#define APP_GPIO_PA7 TUYA_GPIO_NUM_7
#define APP_GPIO_PB0 TUYA_GPIO_NUM_8
#define APP_GPIO_PB1 TUYA_GPIO_NUM_9
#define APP_GPIO_PB2 TUYA_GPIO_NUM_10
#define APP_GPIO_PB3 TUYA_GPIO_NUM_11
#define APP_GPIO_PB4 TUYA_GPIO_NUM_12
#define APP_GPIO_PB5 TUYA_GPIO_NUM_13
#define APP_GPIO_PB6 TUYA_GPIO_NUM_14
#define APP_GPIO_PB7 TUYA_GPIO_NUM_15
#define APP_GPIO_PC0 TUYA_GPIO_NUM_16
#define APP_GPIO_PC1 TUYA_GPIO_NUM_17
#define APP_GPIO_PC2 TUYA_GPIO_NUM_18
#define APP_GPIO_PC3 TUYA_GPIO_NUM_19
#define APP_GPIO_PC4 TUYA_GPIO_NUM_20
#define APP_GPIO_PC5 TUYA_GPIO_NUM_21
#define APP_GPIO_PC6 TUYA_GPIO_NUM_22
#define APP_GPIO_PC7 TUYA_GPIO_NUM_23
#define APP_GPIO_PD0 TUYA_GPIO_NUM_24
#define APP_GPIO_PD1 TUYA_GPIO_NUM_25
#define APP_GPIO_PD2 TUYA_GPIO_NUM_26
#define APP_GPIO_PD3 TUYA_GPIO_NUM_27
#define APP_GPIO_PD4 TUYA_GPIO_NUM_28
#define APP_GPIO_PD5 TUYA_GPIO_NUM_29
#define APP_GPIO_PD6 TUYA_GPIO_NUM_30
#define APP_GPIO_PD7 TUYA_GPIO_NUM_31
芯科 MG21 管脚对应关系
芯科 MG21 管脚对应关系如下:
#define APP_GPIO_PA0 0
#define APP_GPIO_PA1 1
#define APP_GPIO_PA2 2
#define APP_GPIO_PA3 3
#define APP_GPIO_PA4 4
#define APP_GPIO_PA5 5
#define APP_GPIO_PA6 6
#define APP_GPIO_PB0 7
#define APP_GPIO_PB1 8
#define APP_GPIO_PC0 9
#define APP_GPIO_PC1 10
#define APP_GPIO_PC2 11
#define APP_GPIO_PC3 12
#define APP_GPIO_PC4 13
#define APP_GPIO_PC5 14
#define APP_GPIO_PD0 15
#define APP_GPIO_PD1 16
#define APP_GPIO_PD2 17
#define APP_GPIO_PD3 18
#define APP_GPIO_PD4 19
App 层文件说明
-
app_main.c
:该文件是主函数文件,包含程序初始化函数、网络状态回调函数、ZCL 数据接收回调函数、写属性回调函数、应用层 Flash 读写函数和产测回调函数等,是产品开发最主要的文件之一。 -
app_dev_register.c
:该文件是设备注册文件,列举了设备注册的 device ID,cluster ID,attribute ID 等,您可以通过修改该文件,来改变设备的注册信息。 -
app_light_prod.c
:该文件是设备产测文件,当设备接收到 Beacon 广播的进入 Beacon 产测数据帧时,会进入tal_beacon_mf_test_callback
回调,该回调调用了prod_test_callback
函数,此时设备会进入自动化产测灯闪。自动化产测灯闪由该文件实现,尽量不要修改该文件。 -
app_light_prompt.c
:该文件是设备灯闪提示文件,该文件包含闪烁、呼吸等灯闪相关函数。 -
app_cluster_onoff.c
:该文件是 Zigbee 3.0 onoff cluster 相关的标准命令处理文件。 -
app_cluster_level_control.c
:该文件是 Zigbee 3.0 level control cluster 相关的标准命令处理文件。 -
app_cluster_color_control.c
:该文件是 Zigbee 3.0 color control cluster 相关的标准命令处理文件。