我正在nRF51 DK上开发并发BLE和Shockburst应用程序。首先,我试图单独运行Shockbust。它编译了,并没有将它加载到板上的问题。但是当我运行它时,它不起作用。我想我发现了错误,但我不知道如何解决它:
nrf_esb_init()函数未返回。我用LED进行功能测试。 LED_1亮起,因此调用该功能,但LED_2从不闪烁:
void esb_wake(void) {
nrf_gpio_pin_toggle(LED_1); // flash
nrf_esb_init(NRF_ESB_MODE_PTX);
nrf_gpio_pin_toggle(LED_2); //does not flash
nrf_esb_set_base_address_0(addr0);
nrf_esb_set_base_address_1(addr1);
nrf_esb_set_channel(rf_channel);
uint32_t err_code = timeslot_sd_init();
APP_ERROR_CHECK(err_code);
nrf_esb_enable();
nrf_esb_set_max_number_of_tx_attempts(1);
}
我使用SDK 10.0和Softdevice s310。
有人知道如何解决我的问题吗?
答案 0 :(得分:2)
我能够通过自己解决问题:
正如我所说,我使用软设备,这是邪恶的。软件设备是"董事会主席"。 ShockBurst不是软件设备的一部分。所以当我使用一些外部代码时,我必须告诉软件设备。解决方案是在时隙开始之前调用nrf_esb_init()。所以我将函数移动到NRF_RADIO_CALLBACK_SIGNAL_TYPE_START情况下的时间段事件处理程序中。