TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310 如何用RF发送不同长度的数据

Hi ,我打算将串口接收的指令通过RF透传出去,指令不同所以字节长度不同,请问射频该怎么动态的发送不同长度的数据呢?我想的是在任务中根据具体指令,把要发送的数据的长度填充给RF_cmdPropTxAdv.pktLen参数,这样想对吗?

Viki Shi:

可以看下用户手册中关于 unlimited or unknown packet length的实现: www.ti.com.cn/…/swcu117h.pdf

user4959119:

回复 Viki Shi:

Hi Viki,先说我这个想法可行吗?另外手册这方面我也看了理解的差不多,有没有这方面的代码可参考?

Viki Shi:

回复 user4959119:

可行,可以用 CMD_PROP_TX_ADV 实现,参考下类似问题: e2e.ti.com/…/509837

user4959119:

回复 Viki Shi:

发送无限长数据要pktLen = 0,接收无限长数据要maxPktLen =0对吗?
如果用这种方式,接收队列有代码可参数还好说,发送队列的创建也好说,但是发送队列如何填充数据呢?我想的是先创建一个普通数组放我的数据,在发送队列中,第一个字节数据 *(uint8_t *)(&(currentDataEntry->data)) = packetLength;然后memcpy 剩余数据,最后执行发送命令,请指点一下方法,说完这个问题就解决了。。。

Felix ZF:

直接使用变长模式发送就可以了。
可以阅读Technical Reference Mannual的23.7.1 Packet Formats和23.7.2.1.1 Command Structures详细了解。
还可以参考SDK中的rfPacketTx例程,就是使用的变长模式。

user4959119:

回复 Felix ZF:

你意思是靠payload中的长度字节来控制吗?我试了一下可以,好像必须动态修改RF_cmdPropTxAdv.pktLen,让它们关系稳定。但我感觉这种方式有点麻烦且不太放心,你看看我上面的那个表达,给个定心丸吧大哥。。。

Felix ZF:

回复 user4959119:

就是通过pktLen来设置每一包数据的长度,就是这样操作的,没问题。

The transmit operations contain a buffer with the data to be transmitted. The number of bytes in this bufferis given by pktLen. For the CMD_PROP_TX command, the length given in pktLen is transmitted as thefirst byte if pktConf.bVarLen is 1, and then followed by the contents of the transmit buffer.

 

user4959119:

回复 Felix ZF:

恩是的,但是我用的TX_Adv命令且是WOR例程下的收发切换,高级数据包格式,这个貌似不太合适,发送队列用过吗?

Felix ZF:

回复 user4959119:

TX_ADV也有pktLen设置的。

user4959119:

回复 Felix ZF:

恩,我想让pktLen = 0,用队列方式发送,该怎么办?对于接收人家有RF_cmdPropRx.pQueue = &dataQueue;这个参数,对于发送如何把发送队列与RF关联起来呢?我研究了一下没有思路。。。

赞(0)
未经允许不得转载:TI中文支持网 » CC1310 如何用RF发送不同长度的数据
分享到: 更多 (0)