This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

USB Bulk IN Becomes Busy

Hi,

I'm trying to use a Bulk IN endpoint (EPIN3)  and am running into an issue.

I call the nrf_drv_usbd_ep_is_busy() function to test whether it is safe to proceed with a transfer.

Whenever it reports not busy I proceed and everything seems OK.

When it reports busy, I wait to do the transfer later (with an application scheduled timer).

However, once it is busy it always stays that way (m_ep_dma_waiting is never cleared).

Are there known issues with the USB driver?

The documentation still refers to the USB driver as experimental.

I'm using the PDK for the NRF52840 (PCA10056 V0.9.2) with the nRF5 SDK version 14.2

Thanks,

Larry

Parents
  • Hi,

    It is very likely that you are experiencing the side-effects of erratum #104.

    As shown in this list, there are quite a few erratas on the USBD for engineering A of the nRF52840.

    I'd recommend to get a newer revision of the nRF52840 silicon to avoid the erratum #104.

    Best regards,

    Håkon

  • Hi,

     I'm experiencing the same problem with the nRF52840 chips using SDK 15.3. In my main loop I call the nrf_drv_usbd_ep_is_busy() but on linux and os x after the first read the ep return ready and I can read new input from host. On Windows, m_ep_dma_waiting never return to 0 and I can't read any other data. my test is this.

    I have noticed that on Linux and on Mac after I sent the reply to host two RESET event are dispatched. But on Windows this does not happen. On Host I use libusb to speak with device.

    Can you help me?

Reply
  • Hi,

     I'm experiencing the same problem with the nRF52840 chips using SDK 15.3. In my main loop I call the nrf_drv_usbd_ep_is_busy() but on linux and os x after the first read the ep return ready and I can read new input from host. On Windows, m_ep_dma_waiting never return to 0 and I can't read any other data. my test is this.

    I have noticed that on Linux and on Mac after I sent the reply to host two RESET event are dispatched. But on Windows this does not happen. On Host I use libusb to speak with device.

    Can you help me?

Children
Related