nrf52832 esb 2.4G通信 一对多 改频道

若想支持更多客户端,可通过修改通道号及频率的方式,

同频道下,最多支持8个通道,若想支持更多的设备,接收端需要修改频道,与发送端保持一致;

常用函数:

  • bool nrf_esb_set_enabled_prx_pipes(uint32_t pipes)

用于使能接收通道,第0位对应通道1,依次类推,可同时使能多个通道

  • bool nrf_esb_set_crc_length (nrf_esb_crc_length_t length)

设置CRC校验,务必使发送方和接收方一致

  • bool nrf_esb_set_output_power(nrf_esb_output_power_t power)

设置发送功率,可选功率从4~-20,4为步数

  • bool nrf_esb_set_channel (uint32_t channel )

设置无线通讯频率。无线频率=(2400 + channel) MHz,0 <= channel <= 125。

  • bool nrf_esb_set_datarate(nrf_esb_datarate_t datarate)

设置通信速率:可选250Kbps,1M,2M

发送端,修改频道方式:

nrf_esb_start_rx()函数内,NRF_RADIO->FREQUENCY    = m_esb_addr.rf_channel; 设置发送频道,找到变量位置,设置发送频道;

#define NRF_ESB_ADDR_DEFAULT                                                    \
{                                                                               \
    .base_addr_p0       = { 0xE7, 0xE7, 0xE7, 0xE7 },                           \
    .base_addr_p1       = { 0xC2, 0xC2, 0xC2, 0xC2 },                           \
    .pipe_prefixes      = { 0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8 },   \
    .addr_length        = 5,                                                    \
    .num_pipes          = 5,                                                    \
    .rf_channel         = 8,               \\设置发送频道为8
    .rx_pipes_enabled   = 0xFF                                                  \
}

接收端:

while(nrf_esb_stop_rx() != NRF_SUCCESS){} //停止接收
 if(nrf_esb_set_rf_channel(8) == NRF_SUCCESS) //修改接收频道
 {
           printf("set channel 8 success\n"); 
 }
else
       printf("set channel 8 wrong\n"); 
       err_code = nrf_esb_start_rx(); //开始接收
       APP_ERROR_CHECK(err_code);
            
           

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值