This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2530:在CC2530上移植Z-Stack 3.0 的ZNP

Guru**** 2589265 points
Other Parts Discussed in Thread: Z-STACK, CC2530, CC2592, CC2590

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/600689/cc2530-porting-znp-of-z-stack-3-0-on-cc2530

部件号:CC2530
主题中讨论的其他部件:Z-stack,, CC2592CC2590

您好,

谁能告诉我在CC2530上为新的Z-Stack 3.0 移植ZNP的过程是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Z-Stack 3.0 中有ZNP项目。 您只需将其构建并编程到CC2530中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    我使用UART对端口ZNP执行了以下操作:

    1)我正在使用CC2530-ProdHex
    2)我已启用标志BDB_Finding_Binding_Capability_enabled=1
    3)在Onboard.c中,我已完成以下更改以启动UART
    #IF已定义CC2531ZNP
    znpCfg1 = ZNP_CFG1_UART;
    #Elif定义CC2530_MK
    znpCfg1 = ZNP_CFG1_UART;//ZNP_CFG1_SPI;
    znpCfg0 = ZNP_CFG0_32K_OSC;
    #否则
    znpCfg1 = ZNP_CFG1_UART;//P2_0;
    znpCfg0 = ZNP_CFG0_32K_OSC;//P1_2;
    //读取后,对2 CFG输入进行三次陈述(有关CFG0,请参见hal_board_cfg_xxx.h。)
    //P1INP |= BV(2);
    //P2INP |= BV(0);
    #endif


    现在我看到了以下错误
    错误[Pe223]:函数"zclGeneral _SendIdentifyQuery"隐式声明为C:\Texas Instruments \New Z-Stack 3.0 \Z-Stack 3.0 .0\Components \Stack\bdb\bdb_FindingAndBinding.c 664

    现在我检查了这里,但任何文件中都不存在函数"zclGeneral SendIdentifyQuery"。

    我的程序是否正确? 对于此错误,我应该怎么做?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    设置BDB_Finding_binding_capability_enabled=1时,必须定义ZCL_identify
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Yikai:

    我添加了您建议的标志。

    现在我可以看到一些数据,但无法对其解码。 PFA监听器日志。 我的ZNP协调员的IEEE地址为00:12:4b:00:01:C3:17:09

    e2e.ti.com/.../Cant-Decode-Permit-Join-Data.zip

    但如果我使用Z-Stack 1.2 的旧ZNP,我可以看到Poermit加入请求.................2

    这可能是什么原因,以及是什么原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否确定使用此ZNP建立Zigbee网络? 当终端设备发送信标请求时,我看不到任何协调员在执行信标帧。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Yikai:

    是的,先生。 在Z-Stack Linux Gateway上发送允许加入命令时,将发送SR编号8,14,15上的数据。

    在这部分中,我找到了我无法理解的"关注数据",

    帧14:线路上48字节(384位),接口0上捕获46字节(368位)
    接口ID:0 (\\.\pipe\ws_socket)
    封装类型:IEEE 802.15 4无线PAN (104)
    抵达时间:2017年6月6日13:00:43.0.00413亿 印度标准时间
    [此数据包的时移:0.0亿 秒]
    Epoch Time: 1496734243.000413000</xmt-block>0.00413亿 seconds.(Epoch时间:秒。
    [与上一捕获帧相比的时间增量:0.0.00027亿 秒]
    [与上一显示帧相比的时间增量:0.0.00027亿 秒]
    [自参考或第一帧以来的时间:3.10亿 秒]
    帧号:14.
    帧长度:48字节(384位)
    捕获长度:46字节(368位)
    [帧标记为:false ]
    [帧被忽略:false ]
    [帧中的协议:wpan:zbe_nwk:data]
    IEEE 802.15 4数据,DST:广播,src:0x0000
    帧控制字段:0x8841,帧类型:数据,PAN ID压缩,目标寻址模式:短/16位,帧版本:IEEE Std 802.15 .4-2003,源寻址模式:短/16位
    .... .... .... .001=帧类型:数据(0x1)
    .... .... .... 0。 =启用安全:错误
    .... .... 0。。 =帧待定:False
    .... .... ..0。 .... =确认请求:错误
    .... .... .1. .... = PAN ID压缩:TRUE
    .... 0。。 .... =序列号抑制:假
    .... ..0。 .... .... =存在信息元素:错误
    .... 10。 .... .... =目标寻址模式:短/16位(0x2)
    00。。。 .... .... =帧版本:IEEE Std 802.15 .4-2003 (0)
    10。 .... .... .... =源寻址模式:短/16位(0x2)
    序号:17
    目标PAN:0x8850
    目的地:0xFFFF
    资料来源:0x0000
    [扩展来源:TexasInss_00:01:C3:17:09 (00:12:4b:00:01:C3:17:09)]
    [出处:8]
    ZigBee网络层数据,DST:广播,src:0x0000
    帧控制字段:0x0208,帧类型:数据,发现路由:抑制,安全数据
    .... .... .... ...00 =帧类型:数据(0x0)
    .... .... ..00 10. =协议版本:2
    .... .... 00。 .... =查找路由:抑制(0x0)
    .... 0。。 .... =组播:假
    .... ..1. .... .... =安全性:正确
    .... 0。 .... .... =源路由:假
    .... 0。 .... .... =目的地:假
    0。。 .... .... =扩展源:假
    ..0。 .... .... .... =终端设备启动器:假
    目标:0xFFfc
    资料来源:0x0000
    半径:30
    序号:47
    [扩展来源:TexasInss_00:01:C3:17:09 (00:12:4b:00:01:C3:17:09)]
    [出处:8]
    ZigBee安全管座
    安全控制字段:0x28,密钥ID:网络密钥,扩展nonce
    01... =密钥ID:网络密钥(0x1)
    ..1. .... =扩展nonce:TRUE
    帧计数器:56
    扩展源:TexasInss_00:01:C3:17:09 (00:12:4b:00:01:C3:17:09)
    密钥序列号:0
    消息完整性代码:4ffbf538
    [专家信息(警告/未解码):加密有效负载]
    [加密有效负载]
    [严重级别:警告]
    [组:未解码]
    数据(11字节)
    数据:27a51d0e95e3.9445万e31e29
    [长度:11]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有从Z-Stack 3.0 和Z-Stack Linux GW运行ZNP的经验。 如果您使用ZTool,您是否看到已发送允许联接?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    能够解码Zigbee数据。

    这是由于Z-Stack 3.0 中有新的传输密钥。

    现在我可以看到允许加入请求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    酷!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    以下预处理程序定义键的意义是什么:

    1) Nwk_MAX_DEVICE_LIST
    2) ZDSECMGR_TC_DEVICE_MAX

    我可以添加到网络的Max设备是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已完成调试CC2530-ZNP与Linux平台的通信,由UART0提供,该平台利用ZNP-HOST-framework。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    以下预处理程序定义键的意义是什么:

    1) Nwk_MAX_DEVICE_LIST
    2) ZDSECMGR_TC_DEVICE_MAX

    我可以添加到网络的Max设备是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nwk_MAX_DEVICE_LIST:Association/Device (关联/设备)列表中设备的最大数量

    ZDSECMGR_TC_DEVICE_MAX:信任中心设备有一个TCLK管理器,用于存储与特定加入设备相关的APS安全信息(IEEE地址,帧计数器,密钥,密钥状态)。 每个条目都由APSMEDE.h中定义的结构APSME_TCLKDevEntry_t定义 这些条目存储在NV中,可存储的条目数由ZDSECMGR_TC_DEVICE_MAX定义,在ZDSSecMgr.h中定义 在TC将网络密钥发送到加入设备时,将为所有加入设备创建一个条目。这将网络中的设备数量限制为TC拥有的条目数。 在将安装代码引入连接设备的TC时,也会使用TCLK条目,并且安装代码密钥保存在单独的NV表中,该表的大小由ZDSECMGR_TC_DEVIC_MAX控制,并在ZDCSecMgr.h中定义 当相关加入设备完成TCLK交换时,TC会从NV中释放安装代码密钥条目,让其他设备可以自由使用此条目来使用安装代码条目,但它会继续使用TCLK条目。 由于TCLK条目用于跟踪APS密钥,并且旧设备(R20或更早版本)不会从全局默认集中密钥更新此密钥,因此保留这些设备的TCLK条目没有意义, 因此,根据bdbTrustCenterRequireKeyExchange (TCLK)的配置,TC 1.3 会将未完成10.3 交换过程的设备从网络中踢出,并擦除与其关联的项,或将其留在网络中,但仍会擦除TCLK项 设备。 此优化允许3.0 的一台TC设备3.0 在网络中拥有多达ZDSECMGR_TC_DEVICE MAX_ACL_ACL_设备,并且可以加入网络的原有设备数量也一样多,但受到任何其他参数或拓扑配置的限制。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    感谢您的回复。

    我们最多可以在网络中添加多少台设备?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    参考AN123文档,Tks。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    我想在Z-Stack 3.0 中使用CC2530为ZNP启用CC2592。

    这里我在comiler flags中添加了标记HAL_PA_LNA_CC2592和在npInit()函数中添加了ZMacSetTransmitPower(TX_PWR_plus_19);。

    我是否需要添加任何其他标志或调用任何其他函数以启用CC2592?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否,这足以启用CC2592。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    我做了,但它不起作用。 此外,根据Z-Stack 3.0 文件夹中提供的文档Z-Stack ZNP接口规范,启用PIN连接到P1_4
    但从 processors.wiki.ti.com/.../LNA_with_Z-Stack-Home-Automation-1.2 中可以找到

    它显示启用引脚已连接到P1_0。

    预期的硬件配置是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC2530和CC2592之间的硬件连接是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您注意hal_board_cfg.h头文件,请仔细阅读HAL_Board_init宏,我不知道为什么Z-Stack 3.0 CC2530 ZNP项目删除HAL_Board_init()中的HAL_PA_LNA_CC2592,这一定是导致CC2592 RF扩展器不工作的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    我的硬件连接按照

    processors.wiki.ti.com/.../LNA_with_Z-Stack-Home-Automation-1.2 1



    P1_0:LNA_EN
    P1_1:PA_EN
    P0_7:HGM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如hold li所述,Z-Stack 3.0 删除了HAL_Board_init()中的HAL_PA_LNA_CC2592。 您可以尝试替换hal_board_cfg.h中的以下代码

    /*-------------------- 板初始化-------------------- */
    #if defined (HAL_Board_CC2530EB_REV17)&&! defined (HAL_PA_LNA)&&! defined (HAL_PA_LNA_CC2590)

    #define HAL_Board_init() st \

    使用

    #if defined (HAL_Board_CC2530EB_REV17)&&! defined (HAL_PA_LNA)&&\
    !已定义(HAL_PA_LNA_CC2590)&&!已定义(HAL_PA_LNA_SE2431L)&&\
    !已定义(HAL_PA_LNA_CC2592)

    #define HAL_Board_init()
    ....
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Yikai:

    感谢你的帮助。

    但我认为我们还需要在这里添加HAL_PA_LNA_CC2592,以便初始化CC2592

    /*-------------------- 射频前端连接初始化----------- */
    #if defined HAL_PA_LNA || defined HAL_PA_LNA_CC2590 || defined HAL_PA_LNA_CC2592
    外部void MAC_RfFrontendSetup(void);
    #define HAL_Board_RF_Frontend_Setup() MAC_RfFrontendSetup()
    #否则
    #define HAL_Board_RF_Frontend_Setup()
    #endif

    这对我来说是可行的。 我可以在Nwk_MAX_DEVICE_LIST中添加的最大设备数是多少,您能帮我吗?

     

     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以根据RAM使用情况增加Nwk_MAX_DEVICE_LIST。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    使用Beagle Bone Black的CC2530的计数是多少。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这取决于您的应用。 如果可能,我建议您将其设置为尽可能高的值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    谢谢。 将按照您的建议进行操作。

    我想了解协调器和路由器上的信道选择是如何完成的? 是自动的还是代码中的硬编码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过更改config.ini中/servers文件夹下的DEFAULT_CHANLIST并重新启动GW,可以从Z-Stack Linux GW中选择通道。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    路由器如何识别要使用的信道?

    我们能否保持动态信道选择?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于路由器和终端设备,如果使用CC253x,则应在S-Ztack示例中将其从f8wconfig.cfg更改。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    问题是,我有多名协调员,他们都在同一条渠道的同一附近工作,这会造成多名协调员之间的干扰。

    在这种情况下,我该怎么办?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以将它们设置为使用不同的频道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    我们能否保持动态,以便协调员扫描邻近的信道,并根据这一情况将新信道分配给自己?

    ZigBee中是否对此有任何规定?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当协调器启动网络时,它将扫描DEFAULT_CHANLIST上列出的通道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    我不明白,它将在此处扫描默认信道列表,然后根据此情况为自己分配信道?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果第一个信道可以使用,它将在第一个信道形成网络。 如果不是,它将检查下一个频道,以此类推。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    在我的协调员中,信道列表默认参数为DEFAULT_CHANLIST = 0x0.08万

    如何将其设为自动,因为默认情况下它会进入通道11。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以将其设置为0x07FFF800
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    感谢您的帮助。

    但我有一些疑问:
    1)协调员启动时,是每次都使用新信道,还是仅在初始引导时使用一次?
    2)对于终端设备,如果我们将默认信道设置为0x07FFF800,它是否会采用随机信道,如果会影响路由器和协调器之间的通信?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1.仅当协调员首次来自网络时,它才会扫描信道。
    2.如果终端设备将通道设置为0x07FFF800,它将在尝试加入Zigbee网络的所有通道上发送信标请求。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Yikai:

    非常感谢您的帮助。

    将测试这些内容并回复给您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当我给出上述更改时,出现错误
    错误[Pe223]:函数"HAL_Board_INIT"隐式声明为C:\Users\Public\Downloads\UART\CRD\Z-Stack_Home_Dell.2a.4.4539万\Components\hal\common\hal 1.2 _Assert.c 129
    如何解决此问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能详细说明您所做的更改吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    所作的改动如下:


    如hold li所述,Z-Stack 3.0 删除了HAL_Board_init()中的HAL_PA_LNA_CC2592。 您可以尝试替换hal_board_cfg.h中的以下代码

    /*-------------------- 板初始化-------------------- */
    #if defined (HAL_Board_CC2530EB_REV17)&&! defined (HAL_PA_LNA)&&! defined (HAL_PA_LNA_CC2590)

    #define HAL_Board_init() st \

    使用

    #if defined (HAL_Board_CC2530EB_REV17)&&! defined (HAL_PA_LNA)&&\
    !已定义(HAL_PA_LNA_CC2590)&&!已定义(HAL_PA_LNA_SE2431L)&&\
    !已定义(HAL_PA_LNA_CC2592)

    #define HAL_Board_init()
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在EVB上使用CC2592?