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.

USB, bulk, C6748 transmission is not stable, the amount of data per packet is FIFO full packet and half packet rate vary greatly

Other Parts Discussed in Thread: TMS320C6748, SYSBIOS

I have a design, the official TI DEMO reference and Tronlong development board, the use of DSP is TMS320C6748, kernel version 2.3.


USB using the USB0 channel.


In c6748 USB PHY, the FIFO size is set for 512Byte.  Each transmission,write 512Byte bytes data to the FIFO, and then enable the txrdy. On the Tronlong development board, stable data transmission, the data rate for 7~8MB/s .But in my design of the board, only to send a few packets of data, and then there is a mistake, can not continue to send.

When an error occurs, check the PERI_TXCSR register value is 0x0003, indicating that the DSP program to write data to the PHY FIFO USB, and start the send, but did not send complete.

Using BusHound error DSP to show that the The can send a few packets of data, and then the USTS error state, the error code is 0xC0000011, the error code is device returned a transaction.

The FIFO size set for 512Byte. Every time you send, write 256Byte bytes of data into the FIFO, and enable the txrdy and on the Tronlong  development board to data transmission is stable, but data rate is decreased to about 1.7MB/s. Using my board can also stabilize the transmission data, the rate is also about 1.7MB/s.


The test of several cases on the board I made


Case 1, if I set FIFO to 512Byte, write 512Byte to FIFO, and then start to send, this situation can only send a few packets of data.
Case 2, if I set the FIFO to 512Byte, every time the 256Byte to FIFO, and then start to send, this case can be stable transmission data.
Case 3, if I set FIFO to 64Byte, every time 64Byte to FIFO, and then start to send, this situation can only send a few packets of data.


Please help me analyze, why my board every time to send full FIFO data will be a mistake?


Why the rate of each transmission 256Byte to reduce so much, what is the speed of this situation?

  • Hi,
    Do you have C6748 LCDK board with you ?
    Able to reproduce the same on this TI EVM board ?

    Which code are you using ?
    Starterware package from TI ?

    What is the hardware difference between your custom and Tronlong development board ?
    Any clock difference ?
  • Hi Designer,

    Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com).

    The C6748 is a DSP ( core ) device. And let us know why did you mention "kernel version 2.3". I guess, you have configured the C6748 as a USB peripheral device and the USB host as kernel 2.3 machine?? or You have configured the C6748 as USB host??

    From software perspective which code you use? Is it a TI released starterware code or SySBIOS based code or Your driver code?

    ----

  • Thank you for your answer.


    I only have Tronlong development board.  And i download Starterware package from TI.


    In the USB part, I design and Tronlong development board schematic design is the same, PCB to re take the line, so PCB is not the same.


    In case2, the use of BusHound to grab packets, and detect USB transmission packet loss.

  • Thank you for your answer.

    I'm sorry, I didn't have a clear description of my problem.

    "Version kernel 2.3" refers to the DSP ROM C6748 is version 2.3.

    I configured the C6748 as a USB peripheral device, and the USB host is a PC.

    A new case, under case2, I detected USB packet loss.
  • Hi Designer,

    Having said by you that the C6748 is configured as USB peripheral device, what type of USB device ?
    What is the device side driver you are using for C6748?

    If it is a pendrive, it follows the USB Mass storage device class protocol.

    As per that protocol, if there is a packet loss, you have to find what type of error it is. Usually, it falls into any one of the errors such as STALL / Phase error /CSW error.

    According to the error type, care should be taken care on the driver side. For example, for "Reset Recovery, this is the sequence that the driver should have.

    For Reset Recovery the host shall issue in the following order: :
    (a) Bulk-Only Mass Storage Reset
    (b) Clear Feature HALT to the Bulk-In endpoint
    (c) Clear Feature HALT to the Bulk-Out endpoint.

    For more info, please visit :www.usb.org/.../usbmassbulk_10.pdf

    --