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 串口通信数据长度问题

Other Parts Discussed in Thread: CC2530

Hi TI工程师,

我在用CC2530和Zstack2.5.1a的协议栈做UART传输数据的工程时遇到这样一个问题:

路由节点发给协调器的数据可以支持128个字节长度的报文,通过dongle抓包观察,数据被分片发送了,

可是电脑发给协调器,协调器发给路由节点的数据只能支持98字节的长度,超过98字节就直接不发送了,

我发现跟踪到AF_DataRequest函数,在里面就看不到了,不知道这是什么原因。

跟踪到这个位置:

if (len > afDataReqMTU( &mtu ) )
    {
      if (apsfSendFragmented)
      {
        stat = (*apsfSendFragmented)( &req );
      }
      else
      {
        stat = afStatus_INVALID_PARAMETER;
      }
    }
    else
    {
      stat = APSDE_DataReq( &req );
    }

  • 关于分包的实现,在协议栈的library里面已经实现了。

  • 我现在遇到的问题是PC--》路由节点的串口--》无线发往协调器节点--》协调器节点串口--》PC这个方向的数据是正常的分片了(发送方式是点播),

    但是反方向的数据(发送方式广播),在协调器里没有分片,而且当数据长度大于98字节时,还被丢弃了,没有任何东西发出来,是不是协调器不支持数据分片,

    还是广播模式的数据不可以分片?

    另外的多个模块组网测试时还发现两个新问题:

    组网是一个协调器和7个路由节点,收发数据一段时间之后,发现有个路由节点(这个节点还给3个路由节点做父节点)不能正常发送数据出来,

    但是协调器节点广播数据给这个路由节点时,这个节点又可以把数据发出来,协调器节点可以正常收到,这个问题是什么原因?

    还有就是多个路由节点点播数据给协调器节点时,协调器的串口输出有数据偏移的情况,每次串口输出会有2--5个字节的数据时上一次应该输出的,而这次应该输出也少了对应的字节数。而且有时候会恢复正常,过一会又出现同样问题。能不能给点帮助?

  • 都支持的吧,去配置下相关参数吧,没做过长数据传送。

    不能正常发数据是什么意思?网络不稳?

    多个路由节点是同时发送数据吗?加个随机时间。或者你串口工具有问题?

  • 您好,请问你现在是路由器上发超过99字节到协调器正常,而且不会被分包是吗??因为我现在从终端发送一百多个字节到协调器就会被分成最大99字节两包,然后查看原因是afDataReqMTU返回值最大也是99,有什么办法增大MTU需要哪些设置??非常感谢!!

  • 你这种情况最好应用层分包处理。因为一个MAC包的最大长度就是定义的116byte。到APS应用层也就90多个字节。所以你这是没有办法的,除非你在配置文件f8wConfig.cfg里面修改 

    /* Set the MAC MAX Frame Size (802.15.4 default is 102) */
    -DMAC_MAX_FRAME_SIZE=116

    但是修改后会不会有其他的问题我就不知道了。