微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > ZStack-CC2530-2.3.0-1.4.0API调用问题

ZStack-CC2530-2.3.0-1.4.0API调用问题

时间:12-22 整理:3721RD 点击:

您好!

         采用CC2530模块+ZStack-CC2530-2.3.0-1.4.0,已知远程节点的IEEE地址,想要获取远程节点的网络地址,调用协议栈API接口

              ZDP_NwkAddrReq(IEEEaddr,reqType,StartIndex,Securityenable); 网络中只要一个协调器节点和一个终端节点,匹配描述符方式自动绑定后,在协调节点上调用该API,在终端节点上没有处理这个请求。什么原因,请指教!

 

                                                   谢谢!

可以通过断点方式跟踪下执行的情况,终端节点在ZDP_IncomingData( afIncomingMSGPacket_t *pData )函数里处理收到的IEEE_req, 然后调用注册的callback函数,zdpProcessAddrReq。

您好!

       CC2530 协调器调用AF_DataRequest()函数发送数据到终端节点,ZDP_IncomingData( afIncomingMSGPacket_t *pData )函数处理接收到的数据。我想问一下数据包是如何发送出去的,终端节点怎么进入到ZDP_IncomingData()函数里的,具体的代码流程能解释一下吗?

谢谢!

在发送端,从AF->APS->NWk->MAC 一次把数据发送出去,你可以通过AF_DataRequest函数里面的调用APSDE_DataReq,然后再发到网络层,直最后调用macTxFrame()调用 txGo()调用txCsmaGo()发送出去。

在接收端,最底层的肯定是RF的中断函数里面,HAL_ISR_FUNCTION( macMcuRfIsr, RF_VECTOR ),调用macRxThresholdIsr();把数据包收完整,然后再有MAC-NWK-APS-AF-ZDO往上送,再每一层如果需要处理的,就做相应的处理函数来处理。

afIncomingData()收到数据以后 调用afBuildMSGIncoming()将消息通过osal_msg_send( *(epDesc->task_id), (uint8 *)MSGpkt );发送上去,在ZDApp_event_loop( uint8 task_id, UINT16 events )函数收到消息后进入处理,调用ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr ), 再调用ZDP_IncomingData( (afIncomingMSGPacket_t *)msgPtr )去处理。

具体的流程你可以通过代码跟踪着去调试下。谢谢!

您好,

          我还想请教你一个问题。调用APSDE_DataReq(  )函数后,什么时候调用 APSDE_DataCnf()函数或APSDE_DataConfirm()函数。

其中下面的两个函数与APSDE-DATA.confirm 原语是对应的吗?

extern void APSDE_DataConfirm( nwkDB_t *rec, ZStatus_t Status );
extern void APSDE_DataCnf( APSDE_DataCnf_t* cnf );

       

APSDE-DATA.confirm {
DstAddrMode,
DstAddress,
DstEndpoint,
SrcEndpoint,
Status,
TxTime
}

如何使用这两个函数?请指导!

                                                        谢谢!

如果发送没有要求ACK的则,直接调用afDataConfirm(),如果是要求有ACK的,则在收到ACK以后再调用afDataConfirm().

你列出来的两个函数本质上都是调用afDataConfirm(). 实现APSDE-DATA.confirm 原语的效果,但是

extern void APSDE_DataConfirm( nwkDB_t *rec, ZStatus_t Status ); 是指网络层上来的dataconfirm 再往上层发送消息

extern void APSDE_DataCnf( APSDE_DataCnf_t* cnf ); 是指直接从APS子层发送的datacomfirm

 

您好!

     请问下面这个APS层原语API对应的confirm在代码的什么位置。我没有找到,如果有的话,怎么去调用相关的confirm接口。

              ZStatus_t APSME_GetRequest( ZApsAttributes_t AIBAttribute,
                                    uint16 Index, byte *AttributeValue );

           ZStatus_t APSME_SetRequest( ZApsAttributes_t AIBAttribute,
                                    uint16 Index, byte *AttributeValue );

                          谢谢!

您好!

                 我按照下面的方法调用可以吗?

      stat = APSDE_DataReq( &req );
      APSDE_DataCnf_t *p1= (APSDE_DataCnf_t *)osal_mem_alloc( sizeof(APSDE_DataCnf_t));
      uint8 frm[4];
  p1->dstAddr = dstAddr->addr.shortAddr;
  p1->dstEP =dstAddr->endPoint;
  p1->srcEP =srcEP->endPoint;
  p1->transID = *transID;
  p1->status =stat;
  APSDE_DataCnf(p1);
  frm[0] = p1->dstEP ;
  frm[1] = p1->srcEP ;
  frm[2] = p1->status ;
  HalUARTWrite(HAL_UART_PORT_0,frm,3);
  osal_mem_free(p1);

                               请指导!
 

 

       您好!“在接收端,最底层的肯定是RF的中断函数里面,HAL_ISR_FUNCTION( macMcuRfIsr, RF_VECTOR ),调用macRxThresholdIsr();把数据包收完整,然后再有MAC-NWK-APS-AF-ZDO往上送,再每一层如果需要处理的,就做相应的处理函数来处理”您说的关于这个流程,能否再具体一点,也就是把其中所涉及到的函数能够说明一下,我现在在线调试,没有发现从MAC曾到NWK层传送的函,您能否指明一下,我在调试时,其中接受的数据rxbuf和buf的内容都是正确的,至于它是怎么传送到NWK层,还希望您能说明下,谢谢!

注:我现在做的是用GREENPOWER的协议来和普通的zigbee协议来通讯。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top