RF通信想要一对多发送需要怎么设置RF参数
typedef struct tag_rf_config
{
    uint8_t LLEMode;                  //!< BIT0   0=basic, 1=auto def@LLE_MODE_TYPE
                                      //!< BIT1   0=whitening on, 1=whitening off def@LLE_WHITENING_TYPE
                                      //!< BIT6   0=data channel(0-39)
                                      //!<        1=rf frequency (2400000kHz-2483500kHz)
                                      //!< BIT7   0=the first byte of the receive buffer is rssi
                                      //!<        1=the first byte of the receive buffer is package type
    uint8_t Channel;                  //!< rf channel(0-39)
    uint32_t Frequency;               //!< rf frequency (2400000kHz-2483500kHz)
    uint32_t accessAddress;           //!< access address,32bit PHY address
    uint32_t CRCInit;                 //!< crc initial value
    pfnRFStatusCB_t rfStatusCB;       //!< status call back
    uint32_t ChannelMap;              //!< indicating  Used and Unused data channels.Every channel is represented with a
                                      //!< bit positioned as per the data channel index,The LSB represents data channel index 0
    uint8_t Resv;
    uint8_t HeartPeriod;              //!< The heart package interval shall be an integer multiple of 100ms
    uint8_t HopPeriod;                //!< hop period( T=32n*RTC clock ),default is 8
    uint8_t HopIndex;                 //!< indicate the hopIncrement used in the data channel selection algorithm,default is 17
    uint8_t RxMaxlen;                 //!< Maximum data length received in rf-mode(default 251)
    uint8_t TxMaxlen;                 //!< Maximum data length transmit in rf-mode(default 251)
} rfConfig_t;

RF通信想要一对多发送需要怎么设置RF参数,区分不同RF设备是通过设置accessAdreess吗

看到RF设备间需要切换收发角色反馈数据,例程中收发两方使用相同的accessAdreess参数,那如果还有另一个accessAdreess的设备,这个发送的设备也需要跟着把accessAdreess也改成要接收的另一个的RF设备的accessAdreess吗,只需要重新初始化RF然后RF_Tx来发送给另一个设备吗


是的,只要保证发送方和接收方的地址等参数配置保持一致,就能做到同时一对多,在RF_PHY这个例程中可以实现


这么做不行,只有一个显示到接收了数据,其他几个节点都是显示hop rx,并且一直在显示,另一个能接收的一开始也显示hop rx


只能接收的那一个偶尔会crc error


RF_PHY_HOP例程中无法实现的原因是他们设置了跳频的过程,在1对2时,假设A为发射端,B和C作为两个接收端,A,B,C设备虽然同时上电,但是A一旦与B或者C中的一个设备建立了通讯,那么这两个设备就会开始跳频(初始化三个设备都在默认0频道),B或者C中另外一个设备就被落下了,把它丢在了0频道,所以有一个设备会一直没通讯上,因此跳频例程暂时只能1对1通讯。

而另外一个不跳频的例程RF_PHY,则是所有设备都在一个默认频道通讯,可以实现您的需求。


了解了,那跳频是指切换发射频率吗?


是的,收发双方需要保证发射频率和接收频率一致才能收发数据


如果多个设备参数完全一致,是不是没办法做角色切换来反馈数据接收状态了


您好,RF_Init中的参数是RF底层配置,配置不一致会直接在底层屏蔽掉,不会上报到应用层。为了便于管理从设备的收发切换,建议不要求改RF底层配置,而用自拟协议,由中心设备在应用层管理。比如说中心设备在第一次与从设备通信时,给每个从设备分配一个字节或多个字节的设备ID;中心设备在轮询管理从设备时,带着设备ID来交互私有协议,这样不会搞混其他从设备的收发模式。


不改RF底层配置的话就是用完全一致的参数了嘛,就是说主机的数据是所有从机共享的,您说的分配ID和私有协议大概意思是公共数据中区分是哪一个设备的数据,只有这个ID的从机负责反馈收到数据,这样来避免多从机冲突嘛


是的,走应用层去区分设备,底层配置用来划分不同的网络比较合适。或者在中心设备初次连接外围设备时,获取外围设备的MAC地址,应用层直接指定从机的MAC地址,根据MAC地址来避免冲突。


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