【经验】多协议无线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
【经验】芯科科技EFR32MG21A020F512IM32无线SOC固件烧录方法及步骤
笔者设计了一款Zigbee无线通信模块,采用Silicon Labs(芯科科技)EFR32MG21A020F512IM32无线SOC作为主芯片,包含512KB Flash、64KB RAM和丰富硬件外设,最大发射功率20dBm,支持Zigbee 3.0协议,主要用于智能家居中的网关、智能开关等产品的无线连接。本文介绍EFR32MG21A020F512IM32无线SOC固件烧录方法及步骤。
【经验】EFR32MG21多协议无线SoC的SWO PA03如何复用为普通GPIO口呢?
EFR32MG21 系列是 Silicon Labs 推出的高性价比的多协议无线SoC,用户在进行产品开发时会遇到 GPIO 不够用的情况,此时我们可以通过复用 JTAG 管脚中的 SWO log 输出脚,作为普通 GPIO 使用。本文介绍把 PA03 配置成普通按键的方法。
SILICON LABS ZIGBEE 无线 Gecko SoC选型表
EFR32MG无线 Gecko SoC 是在 IoT 设备上实现节能多协议连网的理想之选。芯片解决方案结合了 76.8MHz ARM和高性能 2.4GHz 无线电,旨在为 IoT连接应用提供行业领先的节无线 SoC。
产品型号
|
品类
|
Protocol Stack
|
Frequency Band @ Max TX Power(GHz@dBm)
|
Flash(kB)
|
RAM(kB)
|
GPIO(个数)
|
Operating Temperature(℃)
|
Storage Temperature(℃)
|
Pin Count
|
AVDD Supply Voltage(V)
|
EFR32MG12P433F1024GL125-C
|
Gecko Multi-Protocol Wireless SoC
|
Bluetooth LE Zigbee Thread Proprietary, Wi-SUN
|
2.4GHz @ 19dBm, Sub-GHz @ 20dBm
|
1024kB
|
256kB
|
65
|
-40℃~85℃
|
-50℃~150℃
|
BGA125
|
1.8V~3.8V
|
选型表 - SILICON LABS 立即选型
EFR32MG14 Mighty Gecko多协议无线SoC系列产品介绍
描述- 该资料详细介绍了EFR32MG14 Mighty Gecko多协议无线SoC系列产品的特性、应用领域和订购信息。该系列SoC适用于物联网设备,具有低功耗、高性能、多协议支持等特点,适用于智能家居、照明、健康与健身、计量、家庭和楼宇自动化及安全等领域。
型号- EFR32MG14P732F256IM32-B,EFR32MG14P733F256IM48-B,EFR32MG14,EFR32MG14P632F256GM48-B,EFR32MG14P632F256GM32-B,EFR32MG14P733F256GM48-B,EFR32MG,EFR32MG14P732F256IM48-B,EFR32XG14P733F256GM48-AR,EFR32MG14P732F256GM32-B,EFR32MG14P732F256GM48-B
SILICON LABS Matter 无线SoC选型表
EFR32MG24 无线 SoC 是使用 Matter、OpenThread 和 Zigbee 进行网状物联网无线连接的理想选择
产品型号
|
品类
|
Protocol Stack
|
MAX TX Power (dBm)
|
Flash(kB)
|
RAM(kB)
|
GPIO(个数)
|
Secure Vault
|
IADC High-Speed/High-Accuracy
|
Multi Vector Processor
|
Max CPU Speed(MHz)
|
Operating Temperature(℃)
|
Storage Temperature(℃)
|
Pin Count
|
AVDD Supply Voltage(V)
|
EFR32MG24B310F1536IM48-B
|
Wireless SoC
|
Matter,Zigbee,Thread,Bluetooth 5.3
|
10dBm
|
1536kB
|
256kB
|
28
|
High
|
IADC High-Speed/High-Accuracy
|
Multi Vector Processor
|
78.0MHz
|
-40℃~125℃
|
-50℃~150℃
|
QFN48
|
1.71V~3.8V
|
选型表 - SILICON LABS 立即选型
研讨会2024年Silicon Labs(芯科科技)无线SoC新产品研讨会
12月26日Silicon Labs(芯科科技)无线SoC新产品研讨会上将重磅推出的SiWx917以及MG2X系列无线SoC。两款产品均集成了先进的无线技术、强大的处理能力和高效的能耗管理,同时还具备了两项关键功能:超低功耗运行以及单芯片Matter over Wi-Fi功能支持。
【选型】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旗舰系列并发多协议无线模块。
2.4GHz无线SoC MG21助力开发SONOFF微型Zigbee USB智能适配器支持路由和快充
SILICON LABS近日宣布,其EFR32MG21(MG21)2.4GHz无线SoC获SONOFF公司选用于开发新型“ZBMicro”智能开关。该产品是SONOFF最新的微型Zigbee USB智能适配器,也是智能家居技术领域的开创性产品。从作为USB设备的智能开关到作为Zigbee路由器和支持快速充电的功能,ZBMicro提供了无与伦比的用户体验,提升了现代智能家居的连接性和便利性。
【经验】创建ZigBee的无线SOC网关工程操作步骤
Silicon Labs公司的EFR32MG系列是针对智能家居市场应用的多协议无线SOC,单芯片支持蓝牙、ZigBee和Thread等协议,尤其是高性价比的系列2产品MG21、MG22,在ZigBee应用方面受到广大工程师的青睐。对于新手来说,使用SOC模式网关是最简单不过,本文就指导大家创建ZigBee的SOC网关工程操作步骤。
【经验】芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项
最近有用户在使用PA口时发现会出现一些异常,而且主要集中在PA01/PA02/PA03/PA04几个低端口,它们在使用时会出现一些异常的波形或无法控制。本文世强来介绍芯科多协议无线SoC EFR32MG21在使用PA端口时的注意事项。
【IC】芯科科技MG26多协议SoC功能全面提升,迎合Matter over Thread开发代码增长需求
SILICON LABS近期针对Matter开发的扩展需求发布了MG26多协议SoC新品,通过提升了两倍的闪存和RAM容量以及GPIO,同时添加了人工智能和机器学习(AI/ML)硬件加速器来帮助开发人员满足未来更严苛的Matter物联网应用需求,包括增加对新的设备类型和安全功能增强等的支持。
芯科科技提供Matter一站式开发平台及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块
Silicon Labs(亦称“芯科科技”)作为Matter和互联健康解决方案的领先供应商,正全力支持及推广健康与保健工作组的项目,通过为开发人员提供完善的Matter一站式开发平台,以及适用于互联健康与可穿戴设备的超低功耗、多协议无线SoC和模块,来加速实现此一愿景。
【经验】如何配置多协议无线SoC EFR32的SPI外设驱动端口映射?
Silicon Labs公司针对物联网应用推出的多协议无线SoC,客户在开发时通常会通过基于开发板的例程代码来修改成自己的产品功能,本文基于开发板的SPI例程指导如何修改客户自定义的SPI的引脚,从而实现客户自己产品的SPI功能。
层峰观点:边缘AIoT时代已来,无线SoC生逢其时
芯科科技作为一家全球领先的拥有安全和智能无线技术、先进外围设备和先进计算内核的无线SoC供应商,推出集成AI/ML 加速器的BG24 和MG24 无线SoC,支持Sub-GHz和2.4 GHz低功耗蓝牙射频的FG28 双频SoC应用于边缘AIoT时代的到来。
电子商城
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 90,767
现货市场
品牌: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 提交需求>
可定制卫星定位天线协议:GPS、北斗、伽利略 (Galileo) 、格洛纳斯(GLONASS)卫星定位;增益:5~25dBi;驻波比:≤1.5;接口连接器:IPEX:1~5代IPE、SMA接口/公头等。
最小起订量: 1000 提交需求>
查看全部2条回复