51uwb.cn

标题: uwb数据长度限制 [打印本页]

作者: admy    时间: 2023-3-28 17:58
标题: 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
你看下数据包总长是多少
因为有帧头帧尾。 你的数据payload 是24,但是实际数据长度远不止24byte
作者: admy    时间: 2023-3-29 09:21
你提到的数据包总长度指的是否指参考源码中的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
admy 发表于 2023-3-29 09:21
你提到的数据包总长度指的是否指参考源码中的rx_poll_msg/tx_resp_msg/rx_final_msg,长度分别为12/15/24.  ...

能提供测试程序吗?我们复现一下问题
作者: admy    时间: 2023-3-30 13:59
发现问题了。刚刚整理源码准备发出来,结果发现基站侧,#define FRAME_LEN_MAX 24。自己把数据长度限制死了
感谢您的回复。






欢迎光临 51uwb.cn (http://51uwb.cn/) Powered by Discuz! X3.3