ch579使用phy开启rx的时候,接收多个设备的数据要怎么做?急!!!

ch579使用phy开启rx的时候,接收多个设备的数据要怎么做?急!!!

只要接入地址一样,并且数据类型配置相同,RX就可以接受TX的数据,即使是多个设备。
但是因为同时只能收1个,所以TX端要在RX启动的时候发送,就可以了。


ble的phy和zigbee的phy,在同一时刻都只支持接收一个设备的无线信号。

在存在多设备并发发送数据时,需要规定一定的协议来管理发送的先后顺序。

比如zigbee采用的就是csma/ca的mac层管理协议。

ble是通过跳频来避免信号的碰撞。

推荐使用LWNS协议栈,协议栈提供私有组网的协议。

下载链接:https://gitee.com/jiamai01/lwns

在LWNS中,提供了模拟csma/ca的mac层协议和模拟ble mesh的mac层协议。

csma/ca mac每次在发送数据前会随机等待,一旦等待期间接收到一个数据包,就放弃本次发送,等待下次。

ble mesh mac会在三个通道内不断切换发送和接收,来避免碰撞。

如果不使用LWNS,依旧可以参考如上两个mac层协议编写自己的mac层管理。


那接收了一个设备的消息之后,可以做到不在接收这个设备的消息吗?接收完一个消息之后时候要重启开启一次rx?


不可以,只要一个节点发送,另外一个节点处于接收,就必然会接收到数据。只可以在接收数据处理中过滤掉该数据。


CH57x系列的RF_PHY例程中,接收到一次消息后,就会关闭接收,进入回调函数,用户自己需要在回调函数中通过tmos_set_event置位任务,在其他process中打开接收。

发送数据包也会关闭接收,也需要重新打开接收。


一对多的情况下,两边都有tx和rx;一个这一端发送命令给多个设备,多个设备接收到了,切换到tx返回数据,这种情况如何处理会好些


自己定义多设备发送时的先后顺序管理协议。

参考LWNS模板工程下的lwns_adapter_blemesh_mac.c和lwns_adapter_csma_mac.c。


blemesh发送方每次发送数据包都会在三个通道内切换各发送一次,然后再多次重复上述流程。

blemesh接收方会每10ms切换一次接收通道,达到接收到发送方的数据的目的。


csma发送方是按照周期检测进行发送,比如20ms检测一次有没有要发的数据包,如果有,就开始发送前等待,

在等待期间,如果接收到了一个数据包,就认为本周期内信道忙,等到下一个20ms周期检测,重新开始发送流程。



只有登录才能回复,可以选择微信账号登录