The question is about the difference between ESP_PROTOCOL_ESB and ESP_PROTOCOL_ESB_DPL in the ESB protocol

Hi,

I am using the nrf52840DK development board and running the SDK of version ncs/v2.6.0. When I flash the samples/esb/esb_ptx and samples/esb/esb_prx projects onto the two development boards respectively with the default configuration, the operation seems normal. However, when I change the protocol from ESB_PROTOCOL_ESB_DPL to ESB_PROTOCOL_ESB without modifying any other configurations, after running, the PTX device keeps reporting a TX FAILED EVENT, and the PRX device does not report any events (it is found through some logged information that this is a CRC check error). May I ask why this is the case?

int esb_initialize(void)
{
	int err;
	/* These are arbitrary default addresses. In end user products
	 * different addresses should be used for each set of devices.
	 */
	uint8_t base_addr_0[4] = {0xE7, 0xE7, 0xE7, 0xE7};
	uint8_t base_addr_1[4] = {0xC2, 0xC2, 0xC2, 0xC2};
	uint8_t addr_prefix[8] = {0xE7, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8};

	struct esb_config config = ESB_DEFAULT_CONFIG;

	config.protocol = ESB_PROTOCOL_ESB; //just change here
	config.bitrate = ESB_BITRATE_2MBPS;
	config.mode = ESB_MODE_PRX;
	config.event_handler = event_handler;
	config.selective_auto_ack = true;

	err = esb_init(&config);
	if (err) {
		return err;
	}

	err = esb_set_base_address_0(base_addr_0);
	if (err) {
		return err;
	}

	err = esb_set_base_address_1(base_addr_1);
	if (err) {
		return err;
	}

	err = esb_set_prefixes(addr_prefix, ARRAY_SIZE(addr_prefix));
	if (err) {
		return err;
	}

	return 0;
}

Parents Reply Children
No Data
Related