Part Number:CC1310
Hi,大家好
我在rfPacketErrorRate_CC1310_LAUNCHXL_nortos_ccs工程做一些测试,HSM模式下我发现当currentDataEntry->length为单数时,也就是要传输的currentDataEntry->data的数据数量为单数时,接收模块收到的数据的数量会多一个,在接收到的数据末尾多一个十六进制的00,但发送数据数量为双数时是正确的。请问这正常吗?需要怎么处理?
Galaxy Yue:
/* 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);您好, 长度是当前配置的第一个字节 ,数据从第二个字节开始
您可以参考以下这个帖子进行修改
https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/887479/cc2652r-rfpacketerrorrate-15-4-mode-tx-data-format-compose-question
官方指南可以看一下
https://software-dl.ti.com/lprf/simplelink_cc13x0_sdk/1_30_00_06/exports/docs/proprietary-rf/html/cc13x0/examplesusersguide/rfPacketErrorRate/README.html
,
Gaoyang Li:
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。双数就正常,所收即所发。
,
Galaxy Yue:
Hi Gaoyang,
我的理解和您第二次问题描述是一致的
应该是2字节对齐引起的,硬件对于按字(2个字节)处理会更为高效,所以有些接口会被设置为2字节对齐的方式。
您可以尝试在收到数据时,
Gaoyang Li 说:我发数据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,最后也相应多了一个字符
这种情况下,添加相应的逻辑代码去删除最后一个字符
,
Gaoyang Li:
谢谢Galaxy,
但当我配置config.rfSetup = RfSetup_Custom时,不管发的数据是多少字节,接收到的数据都是正常的。因为HSM模式的原理TI也没有资料描述,所以这里我只是想知道是否HSM模式下数据必须是以双数的数量发送,单数数据量时就必须做一些多余的处理。还是说我代码哪里还有修改的不对的地方?
,
Galaxy Yue:
Hi Gaoyang,
HSM模式是一种用于提高无线通信速率的特殊模式,在HSM模式下,发送和接收的数据必须按照双字节16位对齐发送,否则可能导致数据错误。
Gaoyang Li 说:当我配置config.rfSetup = RfSetup_Custom时
可能是芯片内部在处理非双字节对齐的数据时进行自动填充
Gaoyang Li 说:我代码哪里还有修改的不对的地方?
可以贴上来看一下的