This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28375S: TMS320F28375S usb_dev_serial example device receive errors.

Part Number: TMS320F28375S

Respected sir,

         Please reply asap. Its urgent.        

I have added one more case into RxHandler which is USB_EVENT_ERROR  in the  usb_dev_serial example.  I want to check USBERR_DEV_RX_FIFO_FULL error.   But i am not able to generate this error. My program does not go into the USB_EVENT_ERROR  case.  I have set 256 buffer size and i filled it completely.  The USBBufferSpaceAvailable(); function also returns 0 remaining buffer size. But it does not generate  USB_EVENT_ERROR . So my questions are

1. Can I add USB_EVENT_ERROR   case  into RxHandler ();  ??

2. As per LIB GUIDE  USBERR_DEV_RX_FIFO_FULL   gets generated when FIFO is full. So when buffer is full , will this error get generated??   Is FIFO same as buffer??

3.  How to generate and verify this error manually??

Regards,

Digvijay

  • If the FIFO is full, the FULL bit in USBRXCSRL register will be set. And the USBEndpointStatus() function will get that status and the USB library will handle it appropriately.

    Please see the USBRXCSRL register and how the USB library reads that register and handles the different statuses.

    What I believe is happening in your case, is that the FIFO is not getting filled. The USB library is reading the data from the packet and putting it into the buffer. Your buffer may be overflowing but the FIFO itself is not.

    Hope this helps,
    sal
  • Respected sir,

                   Thanks for the quick reply.

                   As given in user guide the endpoints are used for bulk transfer. But using bulk transfer i am not able to achieve the required data rate which is the sole purpose for using USB. So can i configure the endpoints in usb_dev_serial example for isochronous  transfer mode??

                 I am not able to do much in coding as i have to interface with existing GUI.

    Regards,

    Digvijay

  • We do not support isochronous transfers.

    I have found that the bottleneck for increased throughput as a bulk device is the Host. The Host does not request enough packets. The host does not send DATA IN packets fast enough for the throughput to increase. I have noticed this particularly on Windows PCs. There are may layers of the Windows OS which decreases the throughput.

    The C28x CPU has many idle cycles. This is not a limitation of the device, as I have found in my experimentation.

    Regards,
    sal