This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

[Bug Report] USB crash when ESB is used

I have used NRF52840 and SDK 13.0.0. When I have used USB or ESB one by one - all is Ok. But when they are used together - usb driver goes into an infinite loop here:

#if NRF_DRV_USBD_PROTO1_FIX
        uint32_t cnt_end = (uint32_t)(-1);
        do
        {
            uint32_t cnt = (uint32_t)(-1);
            do
            {
                nrf_usbd_event_clear(NRF_USBD_EVENT_STARTED);
                usbd_dma_start(ep);
                nrf_drv_systick_delay_us(2);
                ++cnt;
            }while (!nrf_usbd_event_check(NRF_USBD_EVENT_STARTED));

NRF_USBD_EVENT_STARTED does not occur. The most interesting: with even pipes(logical addresses) all works fine but with odd pipes works nothing. Just change:

 tx_payload.pipe = 0; //2, 4, 6

To:

 tx_payload.pipe = 1; //3, 5, 7

And you got crash.

For example, I have combine one project from Nordic SDK examples("usbd_cdc_acm" and "esb_ptx"). Push button 1 for sending data over USB, later push button 3 for sending data over radio. After this push button 1 again. This action blocks controller(infinity loop in IRQ).

Project(use folder "arm5_no_packs" or *.hex file): usbd_cdc_acm.zip

Unzip this archive in "nRF5_SDK_13.0.0\examples\peripheral" for testing.

Related