【经验】Zigbee协议栈EmberZNet初接触:什么是callback?

2020-03-05 世强
无线SoC,EFR32MG,Silicon Labs 无线SoC,EFR32MG,Silicon Labs 无线SoC,EFR32MG,Silicon Labs 无线SoC,EFR32MG,Silicon Labs

SILICON LABS的Zigbee无线SoC EFR32MG系列目前已经大批量生产,市场上也已经有了大量的应用案例,是Zigbee圈里的佼佼者。之所以有这个成就,也是因为EFR32MG有出色的射频性能,稳定的协议栈,以及强大的图形化开发工具。


初步接触Silicon Labs Zigbee协议栈EmberZNet时,会经常接触到Callback,那么这个Callback该怎么理解,本文进行详细解释。


Callback,翻译过来就是回调,与Linux下的hook函数类似,是EmberZNet协议栈内部给用户的操作接口,协议栈单独把各种用户接口摘出来,就不需要用户单独在复杂的协议栈中增加去增加代码。


举个例子,一个单片机的程序需要有初始化,while(1),在EmberZNet生成的SoC程序中,协议栈有自己的初始化程序,比如他自己的网络初始化,RF部分的初始化等,这些肯定由协议栈自己来处理。那我们想要增加初始化程序,在哪里添加呢?


来看协议栈的初始化部分:

如上图,有1个callback:

EmberAfMainStartCallback()

这个callback协议栈会以空函数的形式给出,用户就可以在这个callback中添加想要在协议栈初始化之前做用户初始化工作,并通过控制返回值决定该程序是否运行,加入将这个callback的返回值修改为TRUE,那么程序就会直接返回而停止运行。


我想经过上面的例子你就应该明白callback的作用。

再比如,Zigbee无线的数据帧收到了,用户在哪里获取?如果没有callback,我们从最底层翻,从中断开始->中断处理->获取原始数据-等等,然后一层层往外查,最终找到一个MessageHandler,就是这个:


最终在上图中的emAfIncomingMessageHandler()函数,又找到了一个callback:

 

因此,用户处理Zigbee消息接收的callback就在函数emberAfPreMessageReceivedCallback()中处理。并且所有信息都会通过参数传递,你可以额外增加打印来进行测试。

Callback在官方文档中也没有特别的解释,但是从名称和注释上你将获得大部分消息。就以这个接收消息为例,名称它的注释极为清楚:



那么发送数据的结果,是以下哪个callback?

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 4

本文由Song提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(4

  • 六根弦 Lv5 技术专家 2021-05-13
    EmberAfMainStartCallback() 这个callback 用法我明白,能提供一个用户添加的范例代码吗?在协议栈初始化之前能初始化那些进程?比如调光器设备
    • 用户15081497_世强回复: 这个函数是在协议栈初始化前调用的,可以做一些GPIO的控制。boolean emberAfMainStartCallback(int* returnCode,int argc,char** argv){// Enable RGB_LED_ENABLE (PJ14) as a push pull output. Enable the port at start up as well  // This enables the DC/DC converter for the high brightness LEDs on board the Thunderboard  // Sense 2  GPIO_PinModeSet(RGB_LED_ENABLE_PORT,   RGB_LED_ENABLE_PIN,   gpioModePushPull,   1);  // These next three function calls set the colors for the high brightness LEDs on board the  // Thunderboard Sense 2. In the configuration given here all 3 colors (Red, Green, Blue) are  // enabled and the LED appears as white.  // Enable LED_RED (PD11) as a push pull output. Turn on the port at start up as well  GPIO_PinModeSet(LED_RED_PORT,   LED_RED_PIN,   gpioModePushPull,   1);  ....

      查看全部1条回复

  • 用户76332419 Lv3 高级工程师 2020-04-03
    到底用哪个来发送消息呢?在工程中搜了一下,能不能讲讲这几个回调的差别:emberAfMessageSentCallback()、emberAfPreMessageSendCallback()、emberAfPreMessageReceivedCallback()、emberAfBasicClusterServerMessageSentCallback()、emberAfColorControlClusterServerMessageSentCallback()
    • carol_世强回复: 你好,单播发送正常使用emberAfSendUnicast函数,另外组播和多播也有对应的函数。emberAfMessageSentCallback()是消息发送时通过此函数返回一些发送状态。emberAfPreMessageSendCallback()是消息发送之前调用此函数。另外两个是针对对应Cluster消息发送时的调用。

      查看全部1条回复

  • 六根弦 Lv5. 技术专家 2021-05-13
    EmberAfMainStartCallback() 这个callback 用法我明白,能提供一个用户添加的范例代码吗?在协议栈初始化之前能初始化那些进程?比如调光器设备
  • 用户76332419 Lv3. 高级工程师 2020-04-02
    到底用哪个来发送消息呢?在工程中搜了一下,能不能讲讲这几个回调的差别:emberAfMessageSentCallback()、emberAfPreMessageSendCallback()、emberAfPreMessageReceivedCallback()、emberAfBasicClusterServerMessageSentCallback()、emberAfColorControlClusterServerMessageSentCallback()
没有更多评论了

相关推荐

【经验】芯科科技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 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】无线SoC EFR32BG22 EM4模式的进入与唤醒实现注意事项

Silicon Labs的无线SoC EFR32BG22的EM4模式支持nA级别的待机电流,对于功耗要求极为苛刻的应用非常合适,在这个模式下,只支持特定的GPIO以及reset唤醒。本文主要讲解EM4模式的进入与唤醒实现注意事项。

2021-06-02 -  设计经验 代理服务 技术支持 现货查询 批量订货

2024年Silicon Labs(芯科科技)无线SoC新产品发布会

12月26日Silicon Labs(芯科科技)无线SoC新产品发布会上将重磅推出的SiWx917以及MG2X系列无线SoC。两款产品均集成了先进的无线技术、强大的处理能力和高效的能耗管理,同时还具备了两项关键功能:超低功耗运行以及单芯片Matter over Wi-Fi功能支持。

2024-11-26 -  活动

层峰观点:边缘AIoT时代已来,无线SoC生逢其时

芯科科技作为一家全球领先的拥有安全和智能无线技术、先进外围设备和先进计算内核的无线SoC供应商,推出集成AI/ML 加速器的BG24 和MG24 无线SoC,支持Sub-GHz和2.4 GHz低功耗蓝牙射频的FG28 双频SoC应用于边缘AIoT时代的到来。

2023-12-30 -  原厂动态 代理服务 技术支持 现货查询 批量订货

【经验】无线SoC EFR32MG21使用ADC后EM2模式功耗较高问题如何解决?

EFR32MG21是Silicon Labs最新一代支持多协议的无线SoC,最近有用户发现EFR32MG21初始化ADC后,进入EM2模式的电流比较高,无法恢复到正常的EM2电流,本文就将分析问题的原因并给出解决方法。

2020-05-31 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】EFR32FG23无线SoC使用I2C读写MSA311传感器寄存器的方法

本文以 Silicon Labs 的 EFR32FG23 无线SoC芯片的 rail_soc_simple_trx 工程为例,介绍如何使用EFR32FG23 芯片 I²C外设来读写敏芯微 MSA311三轴加速度传感器寄存器的方法。

2023-06-29 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】多协议无线SoC EFR32MG的ZigBee开发之Token使用教程

EFR32MG系列是Silicon Labs公司针对多协议推出的无线SOC,单芯片可以支持Sub-G、蓝牙、Thread和Zigbee多种协议。Token是用来存储非易失性数据的即掉电后也能保存,本文档指导大家如何在EmberZNet PRO应用程序中自定义Token来存储非易失性数据。

2019-02-13 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】如何使用RAILTEST程序测试无线SoC芯片EFR32MG的蓝牙性能?

使用过Silicon Labs无线SoC芯片EFR32MG的Zigbee功能的工程师多数已经习惯使用Railtest软件对Zigbee性能做测试,而在Railtest软件下也可以对BLE性能做测试。本文将介绍具体的设置步骤与注意事项。

2020-09-26 -  设计经验 代理服务 技术支持 现货查询 批量订货

【应用】芯科无线SoC EFR32FG25A助力智能电表设计,发射功率可达16dBm

现在流行采用双模(有线+无线)方式来传输数据,无线与频率成反比,在低功耗、长距离通信或穿墙能力上,SUB-G Hz射频更有优势,本文介绍芯科无线SoC EFR32FG25A111F1152IM56-B在智能电表中的使用优势。

2023-05-27 -  应用方案 代理服务 技术支持 现货查询 批量订货

【经验】无线SoC EFR32系列的timer配置及注意点介绍

Silicon Labs的EFR32系列无线SoC的timer在协议的应用中起非常重要的作用,应用于协议中的任务切换、功耗模式切换、定时发送等,本文主要介绍EFR32的定时器相关的配置及注意要点。

2020-04-14 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】如何使用Simplicity Commander对无线SoC EFR32系列进行恢复

各位在使用Silicon Labs的无线SoC EFR32系列芯片时,由于各种配置和操作不当可能导致芯片无法识别和烧录,在找到原因之前我们需要对芯片进行恢复,Silicon Labs提供的强大烧录软件 commander 提供了这些功能。那么什么情况下我们需要使用 commander recover 功能,以及如何使用呢?本文将详细介绍。

2020-04-27 -  设计经验 代理服务 技术支持 现货查询 批量订货

【经验】使用无线SoC EFR32MG24开发板测量芯片低功耗时的注意事项

介绍在使用EFR2MG24开发板测量芯片的低功耗电流时的注意事项。我们在使用无线SoC开发板测量芯片的低功耗性能时,使用开发板加上Simplicity Studio下的Energy Profiler软件测量出来的EM2模式下的电流会比数据手册上的稍大一些。

2023-03-27 -  设计经验 代理服务 技术支持 现货查询 批量订货
展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:Mighty Gecko Multi-Protocol Wireless SoC

价格:¥27.0929

现货: 90,767

品牌:SILICON LABS

品类:Wireless SoC

价格:¥31.7756

现货: 88,300

品牌:SILICON LABS

品类:Wireless SoC

价格:¥35.3989

现货: 87,882

品牌:SILICON LABS

品类:Wireless SoC

价格:¥19.9760

现货: 84,918

品牌:SILICON LABS

品类:Wireless SoC

价格:¥25.6438

现货: 54,208

品牌:SILICON LABS

品类:Wireless SoC

价格:¥25.9222

现货: 24,393

品牌:SILICON LABS

品类:Wireless SoC

价格:¥14.7732

现货: 22,500

品牌:SILICON LABS

品类:Wireless SoC

价格:¥20.4401

现货: 18,022

品牌:SILICON LABS

品类:Wireless SoC

价格:¥15.0516

现货: 16,532

品牌:SILICON LABS

品类:Wireless SoC

价格:¥16.8169

现货: 16,220

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:SILICON LABS

品类:Wireless SoC

价格:¥15.1400

现货:1,455

品牌:SILICON LABS

品类:Switch Hall Effect Magnetic Position Sensor

价格:¥2.2924

现货:126,000

品牌:SILICON LABS

品类:Light Sensor

价格:¥20.3400

现货:28,003

品牌:SILICON LABS

品类:8位MCU

价格:¥4.9000

现货:12,000

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥10.1700

现货:10,000

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.7900

现货:3,451

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥11.1200

现货:1,201

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥16.8500

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥56.0000

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥5.1900

现货:396

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

无线位移传感器量程定制

可定制无线位移传感器量程范围10~600mm,采用了无线传输方式,可远程自动实时检(监)测位移量值,准确度级别(级):0.2、0.5;内置模块:无线传输模块、供电模块;传输距离L(m):可视距离1000 (Zigbee、 LORA)。

最小起订量: 1pcs 提交需求>

WIFI射频及通信协议测试

可根据用户的wifi模块,使用无线连接测试仪MT8862A,测试IEEE802.11a/b/g/n/ac (2.4Ghz和5Ghz)设备的TX、RX射频特征,输出测试报告。支持到场/视频直播测试,资深专家全程指导。

实验室地址: 深圳 提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面