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 Don,
A new S140 SoftDevice version with support for USB power events/interrupts will be released in the near future. I will add a comment here when it’s released. If you need a more accurate release date, you should ask the Nordic Regional Sales Manager in your area. If you do not have any contact information, then you can send me a private message with your location and I will provide you with the contact information of your local Nordic RSM.
Hi Don,
A new S140 SoftDevice version with support for USB power events/interrupts will be released in the near future. I will add a comment here when it’s released. If you need a more accurate release date, you should ask the Nordic Regional Sales Manager in your area. If you do not have any contact information, then you can send me a private message with your location and I will provide you with the contact information of your local Nordic RSM.