本文主要是介绍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);
这篇关于nrf52832 esb 2.4G通信 一对多 改频道的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!