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.

[参考译文] 使用 CC2650和 Contiki 射频 API 接收帧

Guru**** 2538950 points
Other Parts Discussed in Thread: CC2650, Z-STACK, CC2520, TIMAC

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/593023/used-cc2650-and-contiki-rf-api-to-receive-frame

Thread 中讨论的其他器件:CC2650Z-stackCC2520TIMAC

大家好、

我想在 SOC 模式下使用 CC2650来发送和接收 Zigbee 帧。

我想使用 github.com/.../api

我想使用此 API、不要包含 Z-stack、这会使我的应用的可用存储器更少

我设法使用发送帧
RFCDoorSendto ((uint32_t) cmd);
其中 cmd 是 RFC_CMD_IEEE_TX_t 的指针
gtbluc_Frame 是我的帧

    .commandNo = CMD_IEEE_TX、/*使用命令 Tx 创建帧*/
    .status = 0x0000、/* status */
    .pNextOp = 0x00000000、/* pNextOp */
    .StartTime = 0x00000000、/* StartTime */
    .startTrigger.bEnaCmd = 0、/* startTrigger */
    .startTrigger.triggerType = trig_now、
    .startTrigger.triggerNo = 0、
    .startTrigger.PastTrig = 0、
    .condition.rule = COND_Never、/* Condition */
    .condition.nSkip = 0、
    txOpt.bIncludePhyHdr = 0、/* PHY 地址自动*/
    txOpt.bIncludeCrc = 0、/* CRC 计算自动*/
    .payloadLen = 0x0D、/*有效载荷中的字节数*/
    .pPayload =& gtbluc_Frame [0]、/*大小的净负荷缓冲区指针(payloadLen)*/
    .TIMESTAMP= 0x00000000 /*传输帧的时间戳*/
};

但我不知道如何:
 将组件置于接收模式
 知道接收到一个帧
能够读取帧的内容

可以帮帮我

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    该 API 由 Contiki OS 提供、无法在 Z-Stack 中调用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我不想使用 Z-Stack
    我需要使用 API
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要完成我的示例:

    我已经使用 RX 结构调整 TX 命令

    uint16_t val_return = 0U;
    uint32_t val = RFCDoorbellSendto ((uint32_t) cmd);
    /*立即返回错误*/
    if (val > 1U){
    /*返回错误代码*/
    Val_return =(uint16_t) val;

    否则{
    /*等待命令完成*/
    while (((RFC_CMD_NOP_t*) cmd)-> status <= active){
    ;/*无事可做*/

    /*返回命令状态*/
    Val_return =(uint16_t)(RFC_CMD_NOP_t*) cmd)-status;

    但我不会出去,因为 (RFC_CMD_NOP_t*)cmd)-->状态始终为0x0002

    可以帮帮我

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

    您好!

    没有反应。 因为我将添加解释。

    我希望执行与设备控制面板相同的操作

    我采取了这3项行动

    CMD_RADIO_SETUP:

    RFCDoorSendto ((uint32_t) cmd); 带有 cmd = &radioSetupCopy

    CMD_FS: RFCDoorbellSendto (uint32_t) cmd; 带 cmd = &freqSynthCopy

    并完成 CMD_IEEE_RX: RFCDoorbellSendto ((uint32_t) cmd); 其中 cmd = &IEEE_FRAME_rxCopy

    我看到我的命令从设备控制面板中返回状态=活动(0x02)

    但我不知道如何查看是否接收到帧、也不知道检查帧是如何接收的

    请帮帮我  

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

    您好、Nicolas、  

    您能不能描述您正在尝试开发的应用/产品。  

    此致  

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

    我希望在 SOC 模式下使用 CC2650:

    1 -使用1个 CC2650向其他 CC2650发送数据并接收响应

    2 -如果可能的话、我希望使用 带有 tirtos_cc13xx_cc26xx_2_21_00_06的 API contiki 来实现这个函数、这是因为 这个 API 为我留下了更多的可用内存。

    我已经成功地使用此 API 发送了数据、但无法接收

    接收到的步骤

    1 -知道帧是否已接收

    2 -具有一个包含接收到的数据的缓冲区、或者知道如何存储此数据

    提前感谢  

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

    您好、Nicolas、

    首先、对延迟的响应表示抱歉。

    我知道您想在没有任何堆栈的情况下使用 IEEE API、没有 Z-stack TI-MAC 是这样吗? 请确认。

    正如在该主题中指出的、开源 Contiki 使用的是不带任何堆栈的 IEEE API、因此您可以查看该实现并使其在您的案例中也起作用。

    下面是 Contiki 中 IEEE 无线电驱动器的实现方式:  

    循环回到您的高级选项、您还可以使用 TI-MAC 堆栈、这是一种 IEEE802.15.4实现(符合标准)、您可以在此处找到: 

    Jonas

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

    我想使用最简单的软件、而无需按顺序管理操作系统。

    理想情况下、应填充一个传输缓冲区、并发送一条命令以发送该缓冲区。

    接收缓冲区自动填充命令以了解帧是否已到达、以及读取缓冲区的命令。
    理想情况下、与我们在 CC2520的 SPI 上使用的接口类型相同

    您建议采用哪种解决方案(IEEE API、Z-Stack、TIMAC)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否需要使用 IEEE802.15.4或是否可以使用专有 FSK 协议?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我希望使用 IEEE802.15.4来构建自己的帧。 非常短的帧。

    使用 IEEE API 发送我创建的帧:  

    创建框架

    /* MAC HDR - FC */
    gtbluc_Frame [0]= cus_MAC_HDR_FC & 0x00FFu;
    gtbluc_Frame [1]=(cus_MAC_HDR_FC 和0xFF00u)>> 8u;
    /* MAC HDR -序列(TRNG 生成的随机值)*/
    gtbluc_Fram[2]= TRNGrandom ();
    /* MAC HDR -目标 PAN ID */
    gtbluc_Frame [3]= cus_MAC_HDR_DEST_PAN_ID 和0x00FFu;
    gtbluc_Frame [4]=(cus_MAC_HDR_DEST_PAN_ID 和0xFF00u)>> 8u;
    /* MAC HDR - dest addr */
    gtbluc_Frame [5]= cus_MAC_HDR_DEST_ADDR 和0x00FFu;
    gtbluc_Frame [6]=(cus_MAC_HDR_DEST_ADDR 和0xFF00u)>> 8u;
    /* NWK HDR - FC */
    gtbluc_Frame [7]= cuc_NWK_HDR_FC;
    gtbluc_Frame [8]=(uint8_t) value_1;

    gtbluc_Frame [9]=(uint8_t)(value_2);
    gtbluc_Frame [10]=(uint8_t)(value_3));
    gtbluc_Fram[11]=(uint8_t)(value_4);
    gtbluc_Frame [12]= 0x22;

    发送帧:  

    /*发送帧 IEEE ZGP */
    if (rf_send_IEEE_FRAME ()!= IEEE_DON_OK)

    MANAG_ERROR();

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

    好的、获得使用 IEEE API 的帮助似乎很复杂。
    是否有人能够在 SOC 模式下使用 CC2650的发送器接收器?
    提前感谢您