admy 发表于 2023-3-28 17:58:33

uwb数据长度限制

我对resp/final数据包的通讯数据格式进行了一些调整,采用数据中断的方式进行接收,另外有些业务逻辑改有一些调整,但基本的通讯功能可跑通。
发现一个问题:当数据包大于24字节时,接收端就收到不数据了。

      frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;   //这一步对得上
      if (frame_len <= 127)
      {
            dwt_readrxdata(rx_buffer, frame_len, 0);// rx_buffer为全局静态变量,执行此步后,rx_buffer中的内容没有变化
      }


ps:按api文档的说明,uwb通讯可传输的内容长度是127,可扩展到1023. 上面的代码没有这么长。验证过,24个字节可以,26个字节就不行。

请教各位大佬,是否见过这种现象。

蓝点无限 发表于 2023-3-28 21:51:20

你看下数据包总长是多少
因为有帧头帧尾。 你的数据payload 是24,但是实际数据长度远不止24byte

admy 发表于 2023-3-29 09:21:49

你提到的数据包总长度指的是否指参考源码中的rx_poll_msg/tx_resp_msg/rx_final_msg,长度分别为12/15/24.
这里边包含有最后两位自定义的CRC,不知道是不是另外还有桢头桢尾。

static uint8 rx_poll_msg[] ={0x41, 0x88, 0, 0x0, 0xDE, 'W', 'A', 'V', 'E', 0x21, 0, 0};
static uint8 tx_resp_msg[] ={0x41, 0x88, 0, 0x0, 0xDE, 'V', 'E', 'W', 'A', 0x10, 0x02, 0, 0, 0, 0};
static uint8 rx_final_msg[] = {0x41, 0x88, 0, 0x0, 0xDE, 'W', 'A', 'V', 'E', 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

因为要添加一些业务,在项目中对数据包做了些修改,比方说,在final消息后再增加些其他内容,目前rx_final_msg最长也不超过50byte,但测试的结果是rx_final_msg最长就是24,长了接收的数据就乱了(接收端检查接收长度是对的)

蓝点无限 发表于 2023-3-29 22:04:15

admy 发表于 2023-3-29 09:21
你提到的数据包总长度指的是否指参考源码中的rx_poll_msg/tx_resp_msg/rx_final_msg,长度分别为12/15/24....

能提供测试程序吗?我们复现一下问题

admy 发表于 2023-3-30 13:59:04

发现问题了。刚刚整理源码准备发出来,结果发现基站侧,#define FRAME_LEN_MAX 24。自己把数据长度限制死了:L
感谢您的回复。:handshake

页: [1]
查看完整版本: uwb数据长度限制