Hi,大家好
我在rfPacketErrorRate_CC1310_LAUNCHXL_nortos_ccs工程做一些测试,HSM模式下我发现当currentDataEntry->length为单数时,也就是要传输的currentDataEntry->data的数据数量为单数时,接收模块收到的数据的数量会多一个,在接收到的数据末尾多一个十六进制的00,但发送数据数量为双数时是正确的。请问这正常吗?需要怎么处理?
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.
Hi,大家好
我在rfPacketErrorRate_CC1310_LAUNCHXL_nortos_ccs工程做一些测试,HSM模式下我发现当currentDataEntry->length为单数时,也就是要传输的currentDataEntry->data的数据数量为单数时,接收模块收到的数据的数量会多一个,在接收到的数据末尾多一个十六进制的00,但发送数据数量为双数时是正确的。请问这正常吗?需要怎么处理?
/* Handle the packet data, located at ¤tDataEntry->data: * - Length is the first byte with the current configuration * - Data starts from the second byte */ packetLength = *(uint8_t*)(¤tDataEntry->data); packetDataPointer = (uint8_t*)(¤tDataEntry->data + 1);
您好, 长度是当前配置的第一个字节 ,数据从第二个字节开始
您可以参考以下这个帖子进行修改
官方指南可以看一下
Dear Galaxy Yue
上次我没有说清楚,我发数据00 01 31 32 33 34 35 36 37 38 39 30 31,currentDataEntry->length = 13,其中0001是序列号;但是接收到的数据确是00 01 31 32 33 34 35 36 37 38 39 30 31 00,currentDataEntry->length = 14;接收的长度大了1,最后也相应多了一个字符。
但我如果发数据00 01 31 32 33 34 35 36 37 38 39 30 31 32,currentDataEntry->length = 14;那么收的就是正常的,00 01 31 32 33 34 35 36 37 38 39 30 31 32,currentDataEntry->length = 14;
发其他数据串只要currentDataEntry->length是单数,都会是类似的错误,长度+1,最后添加一个00。双数就正常,所收即所发。
Hi Gaoyang,
我的理解和您第二次问题描述是一致的
应该是2字节对齐引起的,硬件对于按字(2个字节)处理会更为高效,所以有些接口会被设置为2字节对齐的方式。
您可以尝试在收到数据时,
我发数据00 01 31 32 33 34 35 36 37 38 39 30 31,currentDataEntry->length = 13,其中0001是序列号;但是接收到的数据确是00 01 31 32 33 34 35 36 37 38 39 30 31 00,currentDataEntry->length = 14;接收的长度大了1,最后也相应多了一个字符
这种情况下,添加相应的逻辑代码去删除最后一个字符
Hi Gaoyang,
HSM模式是一种用于提高无线通信速率的特殊模式,在HSM模式下,发送和接收的数据必须按照双字节16位对齐发送,否则可能导致数据错误。
当我配置config.rfSetup = RfSetup_Custom时
可能是芯片内部在处理非双字节对齐的数据时进行自动填充
我代码哪里还有修改的不对的地方?
可以贴上来看一下的