The nrf52840 usbd examples of peripheral in SDK 13.0.0 worked fine. I want usb work with BLE softdevice and there are lots of conflicts between nrf drv and softdevice. Is there any example of usbd working together with ble softdevice?
The nrf52840 usbd examples of peripheral in SDK 13.0.0 worked fine. I want usb work with BLE softdevice and there are lots of conflicts between nrf drv and softdevice. Is there any example of usbd working together with ble softdevice?
Hi,
I just tested this without any problems. Only thing I had to do was to comment out the buttons_leds_init()
function used in the ble_app_uart code, so it didn’t overwrite the button functionality used for the USBD part of the code.
My main code looks like this:
int main(void)
{
uint32_t err_code = 0;
bool erase_bonds;
uint32_t ret = 0;
// Initialize.
APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false);
uart_init();
err_code = NRF_LOG_INIT(NULL);
APP_ERROR_CHECK(err_code);
NRF_LOG_INFO("\r\nUART Start!\r\n");
ret = nrf_drv_power_init(NULL);
APP_ERROR_CHECK(ret);
ret = nrf_drv_clock_init();
APP_ERROR_CHECK(ret);
NRF_LOG_INFO("Hello USB!\r\n");
/* Configure LEDs */
bsp_board_leds_init();
bsp_board_buttons_init();
serial_number_string_create();
ret = app_usbd_init();
APP_ERROR_CHECK(ret);
app_usbd_class_inst_t const * class_cdc_acm = app_usbd_cdc_acm_class_inst_get(&m_app_cdc_acm);
ret = app_usbd_class_append(class_cdc_acm);
APP_ERROR_CHECK(ret);
bool last_usb_conn_status = false;
usb_start();
NRF_LOG_INFO("Enabling BLE part!\r\n");
//buttons_leds_init(&erase_bonds);
ble_stack_init();
gap_params_init();
services_init();
advertising_init();
conn_params_init();
err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);
// Enter main loop.
for (;;)
{
last_usb_conn_status = usb_connection_handle(last_usb_conn_status);
if (bsp_board_button_state_get(BTN_CDC_DATA_SEND))
{
static int frame_counter;
sprintf(m_tx_buffer, "Hello USB CDC FA demo: %u\r\n", frame_counter);
ret = app_usbd_cdc_acm_write(&m_app_cdc_acm, m_tx_buffer, sizeof(m_tx_buffer));
if (ret == NRF_SUCCESS)
{
++frame_counter;
}
}
if (bsp_board_button_state_get(BTN_CDC_NOTIFY_SEND))
{
ret = app_usbd_cdc_acm_serial_state_notify(&m_app_cdc_acm,
APP_USBD_CDC_ACM_SERIAL_STATE_BREAK,
false);
UNUSED_VARIABLE(ret);
}
UNUSED_RETURN_VALUE(NRF_LOG_PROCESS());
power_manage();
}
}
Hi all,
The new S140 SoftDevice with support for USB power events/interrupts is now released. The version is 6.0.0-6.alpha
, and can be downloaded from here:
From the release notes:
The SoftDevice API now provides access to USB power handling registers
Another interesting feature is the improvement on the BLE 5 Long-Range:
The SoftDevice now implements a range delay (packet time of flight compensation) corresponding to a distance of 5 km when using LE Coded PHY
Hi all,
The new S140 SoftDevice with support for USB power events/interrupts is now released. The version is 6.0.0-6.alpha
, and can be downloaded from here:
From the release notes:
The SoftDevice API now provides access to USB power handling registers
Another interesting feature is the improvement on the BLE 5 Long-Range:
The SoftDevice now implements a range delay (packet time of flight compensation) corresponding to a distance of 5 km when using LE Coded PHY