【经验】多协议无线SoC EFR32MG的ZigBee开发之Token使用教程
EFR32MG系列是SILICON LABS公司针对多协议推出的无线SoC,单芯片可以支持Sub-G、蓝牙、Thread和Zigbee多种协议。Token是用来存储非易失性数据的即掉电后也能保存,由于在EFR32MG芯片中没有eeprom,所以实际上它们是直接存储在flash上,用flash作为虚拟eeprom(simulated eeprom)的用法。本文档指导大家如何在EmberZNet PRO应用程序中自定义Token来存储非易失性数据。关于Token的概念,请参考“EFR32MG的ZigBee开发之Token概念解析”。本文是针对使用SimEEv1/v2的模拟EEPROM,而不是NVM3。
1,使用自定义token需要创建一个自定义的token头文件(xxx.h)名字可以随意取,头文件需要包含下面的内容,这样系统才能知道你是在定义自己的token,这个头文件将包含到工程中,而且对所有工程文件都是可见的。
/**
* Custom Application Tokens
*/
// (第一部分)定义token的名字
#ifdef DEFINETYPES
//(第二部分)这里定义所有token用到的类型
#endif //DEFINETYPES
#ifdef DEFINETOKENS
//(第三部分)这里用来定义token的储存信息
#endif //DEFINETOKENS
注意:在头文件中顶部不需要:
#ifndef HEADER_FILE
#define HEADER_FILE
这很重要,因为此头文件会被包含多次以用于不同目的。
2,先定义token的名字,也就是在上一步建的头文件中的第一部分定义token的名字,如下:
//定义token的名字
#define CREATOR_DEVICE_INSTALL_DATA (0x000A)
#define CREATOR_HOURLY_TEMPERATURES (0x000B)
#define CREATOR_LIFETIME_HEAT_CYCLES (0x000C)
定义名字时都必须以CREATOR_开头后面接自定义token的名字,如上面INSTALL_DATA就是token的名字。后面的16位字节就是这个token的唯一表示码(token key),最高位(第16bit)为系统token(stack token与manufacturing token)保留,所以我们定义的的token key一定要小于0x8000,也就是说这个token key我们可以自己定,只要不大于0x8000并且没有重复就可以了,上面的例子使用了0x000A-0x000C来作为token key。
3,定义token使用的类型,如果token是一个特殊的类型如结构体(假如DEVICE_INSTALL_DATA是结构体),那么你就要在这里定义它(在第二部分#ifdef DEFINETYPES与#endif //DEFINETYPES之间)如下:
#ifdef DEFINETYPES
// Include or define any typedef for tokens here
typedef struct {
int8u install_date[11] /** YYYY-mm-dd + NULL */
int8u room_number; /** The room where this device is installed */
} InstallationData_t;
#endif //DEFINETYPES
定义了一个InstallationData_t的结构体,这个将作为token DEVICE_INSTALL_DATA的类型。
4,定义token的存储信息,上面已经定义3个token,这里就要定义这三个token要存储的内容(第三部分#ifdef DEFINETOKENS与#endif //DEFINETOKENS之间),如下:
#ifdef DEFINETOKENS
// Define the actual token storage information here
DEFINE_BASIC_TOKEN(DEVICE_INSTALL_DATA,
InstallationData_t,
{0, {0}})
DEFINE_INDEXED_TOKEN(HOURLY_TEMPERATURES, int16u, 24, {0})
DEFINE_COUNTER_TOKEN(LIFETIME_HEAT_CYCLES, int32u, 0)
#endif //DEFINETOKENS
定义了DEVICE_INSTALL_DATA为普通类型的token,它的数据类型为InstallationData_t,初始值全为0;定义了HOURLY_TEMPERATURES为indexed token,它是一个16位无符号数数组,长度为24,初始值全为0;定义了LIFETIME_HEAT_CYCLES为一个counter token为32位无符号数据类型,初始值为0。
5,将头文件包含的工程里,
在EmberZnet Version: 6.4.1.0版本中,有直接包含用户token头文件的选框,在include的选项里如下图:
如果是之前的版本可能没有custom token header的选项卡,也可以直接从上面的code,header file,include paths and libraries选项卡包含进来:
经过以上步骤,就可以使用自定义的token了,如下:
basic token DEVICE_INSTALL_DATA的读写:
InstallationData_t data;
// Read the stored token data
halCommonGetToken(&data, TOKEN_DEVICE_INSTALL_DATA);
// Set the local copy of the data to new values
data.room_number = < user input data >;
MEMCOPY(data.install_date, < user input data>, 0, sizeof(data.install_date));
// Update the stored token data with the new values
halCommonSetToken(TOKEN_DEVICE_INSTALL_DATA, &data);
indexed token HOURLY_TEMPERATURES的读写:
int16s getCurrentTargetTemperature(int8u hour) {
int16s temperatureThisHour = 0; /** Stores the temperature for return */
if (hour < 24) {
halCommonGetIndexedToken(&temperatureThisHour,
TOKEN_HOURLY_TEMPERATURES, hour);
}
return temperatureThisHour;
}
void setTargetTemperature(int8u hour, int16s targetTemperature) {
int16s temperatureThisHour = 0; /** Stores the temperature for return */
if (hour < 24) {
halCommonSetIndexedToken(TOKEN_HOURLY_TEMPERATURE, hour,&temperatureThisHour);
}
}
counter token LIFETIME_HEAT_CYCLES的用法:
void requestHeatCycle(void) {
/// < application logic to initiate heat cycle >
halCommonIncrementCounterToken(TOKEN_LIFETIME_HEAT_CYCLES);
}
int32u totalHeatCycles(void) {
int32u heatCycles;
halCommonGetToken(&heatCycles, TOKEN_LIFETIME_HEAT_CYCLES);
return heatCycles;
}
上面对各类型的token用法都举了例,注意的是在使用token时,token名都使用了TOKEN_加token名,而不是直接用token名。最后需要注意的是token是基于flash的sim-eeprom来保存数据的,因为flash的擦写次数有限(相比于真正的eeprom),因此尽量避免频繁地去写token。
- |
- +1 赞 0
- 收藏
- 评论 5
本文由Carol提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】多协议无线 SOC EFR32MG实现ZigBee的OTA操作指南
EFR32MG系列是Silicon Labs公司推出支持多协议无线 SOC,可以单芯片支持私有协议、BLE5.0、BLE MESH、ZigBee和Thread协议,并且可以单芯片支持Sub-GHz和2.4GHz的频段。由于其超低功耗、高射频性能以及高集成度等特点被广泛应用于智能家居、安防、智能工业等市场。在ZigBee的实际应用中,OTA是必不可少的功能,由于选择的型号不同,配置OT
设计经验 发布时间 : 2018-09-24
【经验】芯科科技EFR32MG21A020F512IM32无线SOC固件烧录方法及步骤
笔者设计了一款Zigbee无线通信模块,采用Silicon Labs(芯科科技)EFR32MG21A020F512IM32无线SOC作为主芯片,包含512KB Flash、64KB RAM和丰富硬件外设,最大发射功率20dBm,支持Zigbee 3.0协议,主要用于智能家居中的网关、智能开关等产品的无线连接。本文介绍EFR32MG21A020F512IM32无线SOC固件烧录方法及步骤。
设计经验 发布时间 : 2020-03-16
【经验】创建ZigBee的无线SOC网关工程操作步骤
Silicon Labs公司的EFR32MG系列是针对智能家居市场应用的多协议无线SOC,单芯片支持蓝牙、ZigBee和Thread等协议,尤其是高性价比的系列2产品MG21、MG22,在ZigBee应用方面受到广大工程师的青睐。对于新手来说,使用SOC模式网关是最简单不过,本文就指导大家创建ZigBee的SOC网关工程操作步骤。
设计经验 发布时间 : 2020-04-09
【选型】Silicon Labs BG22、xG24、BG27无线SoC比较及信驰达无线模块选型指南
作为安全、智能无线技术领域的前沿品牌,Silicon Labs在最近几年陆续推出了EFR32BG22、EFR32xG24、EFR32BG27等系列无线SoC。RF-star作为物联网行业领先的无线通信模组厂商,基于Silicon Labs的无线SoC推出了RF-BM-BG22x系列串口转蓝牙透传模块、RF-BM-BG24x旗舰系列低功耗蓝牙模块和RF-BM-MG24x旗舰系列并发多协议无线模块。
器件选型 发布时间 : 2023-09-07
xG26再告捷!荣获2024全球电子成就奖-RF/无线年度创新产品奖
SILICON LABS(芯科科技)旗舰级BG26蓝牙SoC和MG26多协议SoC在日前获颁2024年全球电子成就奖(WEAA)年度射频/无线/微波创新产品奖!BG26和MG26系列SoC是迄今物联网产业领先企业之最高性能的系列产品,可用于最复杂的物联网应用,如需要较强的处理能力、能效和无线性能的Matter等具备严苛要求之新兴应用,以及包括智能家居、智慧城市和工业用例。
原厂动态 发布时间 : 2024-11-13
2.4GHz无线SoC MG21助力开发SONOFF微型Zigbee USB智能适配器支持路由和快充
SILICON LABS近日宣布,其EFR32MG21(MG21)2.4GHz无线SoC获SONOFF公司选用于开发新型“ZBMicro”智能开关。该产品是SONOFF最新的微型Zigbee USB智能适配器,也是智能家居技术领域的开创性产品。从作为USB设备的智能开关到作为Zigbee路由器和支持快速充电的功能,ZBMicro提供了无与伦比的用户体验,提升了现代智能家居的连接性和便利性。
原厂动态 发布时间 : 2024-08-17
【经验】EFR32MG21多协议无线SoC的SWO PA03如何复用为普通GPIO口呢?
EFR32MG21 系列是 Silicon Labs 推出的高性价比的多协议无线SoC,用户在进行产品开发时会遇到 GPIO 不够用的情况,此时我们可以通过复用 JTAG 管脚中的 SWO log 输出脚,作为普通 GPIO 使用。本文介绍把 PA03 配置成普通按键的方法。
设计经验 发布时间 : 2020-06-29
芯科科技提供Matter一站式开发平台及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块
Silicon Labs(亦称“芯科科技”)作为Matter和互联健康解决方案的领先供应商,正全力支持及推广健康与保健工作组的项目,通过为开发人员提供完善的Matter一站式开发平台,以及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块,来加速实现此一愿景。
原厂动态 发布时间 : 2024-03-01
最新Matter智能家居参考设计打破生态藩篱—尽在深圳物联网展
随着智能家居市场的兴起,消费者对设备间的无缝互联与高效协同提出了更高要求。在这一情形下,Matter标准应运而生。连接标准联盟推出的Matter是一项全新的智能家居互联标准,旨在打破不同品牌、不同协议间的壁垒,实现智能家居设备的统一管理和互操作。自Matter标准发布以来得到了国内外众多厂商的支持,其功能不断增强,认证产品数量快速增长,覆盖品类更加多样化。本文介绍Matter 1.3带来哪些更新。
原厂动态 发布时间 : 2024-08-16
【经验】芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项
最近有用户在使用PA口时发现会出现一些异常,而且主要集中在PA01/PA02/PA03/PA04几个低端口,它们在使用时会出现一些异常的波形或无法控制。本文世强来介绍芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项。
设计经验 发布时间 : 2022-09-26
【IC】芯科科技MG26多协议SoC功能全面提升,迎合Matter over Thread开发代码增长需求
SILICON LABS近期针对Matter开发的扩展需求发布了MG26多协议SoC新品,通过提升了两倍的闪存和RAM容量以及GPIO,同时添加了人工智能和机器学习(AI/ML)硬件加速器来帮助开发人员满足未来更严苛的Matter物联网应用需求,包括增加对新的设备类型和安全功能增强等的支持。
产品 发布时间 : 2024-04-25
8月深圳物联网展-Silicon Labs重磅展示热门无线连接和AI/ML边缘智能参考设计
Silicon Labs参加8月28至30日举办的“2024年深圳物联网展”,演示最新的物联网无线连接和AI/ML边缘智能技术!芯科科技的现场产品展示专区将位于深圳国际会展中心(宝安新馆)10号馆10A26 号展位,包括本地销售、无线工程专家团队,以及代理商合作伙伴都将在场介绍实现物联网和边缘智能创新所需的智能、安全无线连接和高效计算解决方案。
原厂动态 发布时间 : 2024-08-08
【经验】EFR32多协议无线SoC radio configuration私有协议配置
EFR32系列是Silicon Labs公司针对物联网应用推出的多协议无线SoC,覆盖了私有协议、Blue Tooth 、ZigBee、Thread和Z-Wave等无线协议。本文介绍EFR32 radio configuration私有协议配置方法。
设计经验 发布时间 : 2020-03-19
【经验】如何配置多协议无线SoC EFR32的SPI外设驱动端口映射?
Silicon Labs公司针对物联网应用推出的多协议无线SoC,客户在开发时通常会通过基于开发板的例程代码来修改成自己的产品功能,本文基于开发板的SPI例程指导如何修改客户自定义的SPI的引脚,从而实现客户自己产品的SPI功能。
设计经验 发布时间 : 2020-09-25
完美结合无线连接、人工智能和安全性的智能家居解决方案
智能家居应用正在快速发展,其中推动智能设备的发展关键因素在于易于使用,而实现这一目标的最佳方法,便是让设备通过人工智能和机器学习技术进行自我思考。本文将为您介绍人工智能将如何强化智能家居设备的功能,以及由芯科科技(Silicon Labs)所推出的解决方案,将如何增强智能家居设备的功能性与安全性。
应用方案 发布时间 : 2024-06-23
电子商城
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥15.1445
现货: 14,989
品牌:SILICON LABS
品类:Gecko Multi-Protocol Wireless SoC
价格:¥44.9692
现货: 12,980
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
根据用户的接口模块,使用是德示波器及夹具查看实时眼图演示,测试USB/MIPI/DDR/SATA/HDMI协议,支持最高到1.2GHz的实时眼图协议测试。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
查看全部2条回复