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.

The realistic USB communication speed (CDC) of msp430f5529?

Other Parts Discussed in Thread: MSP430F5529

Hi folks,

I just want to know if anyone has tested the usb communication speed of MSP430F5529 (CDC)? What's about the communication speed during data transmission?(send the data from MCU to PC)

Currently, the speed is only around 250KBps in my application. I think it was much slower than description of datasheet (hundreds of KBps).

I think the speed should be affected by the PC software (like Hyperterminal, etc), does anyone can recommend one to me please? Don't have time to develop a PC software currently, just want to grab a off-the-shelf one.

thank you,

Tien

  • CDC on MSP430F5xx can go up to 1 MByte / s. I done some benchmarks...

    forum.43oh.com/.../2775-msp430-usb-benchmark

  • Hi zrno

    I have the same issue.My device(MSP430F5529)'s  speed is about 250KB/s. I download the TI example C6 to my MCU for testing, resulting in the same speed.

    Then, I use a software(bus hound) to monitor sending process .I call cdcSendDataInBackground() with one byte and 256 bytes sending, finding that two sending options take same time(1ms). I have no idea what causes this issue.. I just implement Docklight as PC terminal.

  • For max transfer rate USB need large amount of transfer data. It is explained (with measurement) on my 43oh linked topic. I used TI USB stack as starting point for development of my own USB stack, and don't know what is the state of TI USB stack today (relating to transfer rate), but some older benchmark results are here...

    http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/218597

  • "finding that two sending options take same time(1ms)."
    What is the time resolution of your measuring equipment? Maybe it only gives 1ms so everything above zero but below 1ms will give you 1ms. What if you send a 1k block? Still 1ms? And do 1.5k data size give you more than 2ms?

    Also, keep in mind that you're not sending 1 byte, you are sending 1 byte plus a huge protocol overhead in a) handling time and b) header data like CRCs etc. And this part is constant. And USB data package is not just your payload, as it would be on a plain UART connection.
  • Fredrick said:
    Then, I use a software(bus hound) to monitor sending process .I call cdcSendDataInBackground() with one byte and 256 bytes sending, finding that two sending options take same time(1ms). I have no idea what causes this issue..

    It's the way PC host controller works.

    1) Windows CDC driver (usbser.sys) requests 4K-bytes bulk IN transfer to PC host controller.
    2) Host controller starts to send IN transactions to the device.
    3) When your firmware places just one byte on the endpoint buffer by cdcSendDataInBackground() call, the first transaction completes the transfer request on the bus, because its short packet (ie. less than 64 bytes).
    3') When cdcSendDataInBackground() is called with 256 bytes, four full-size (64 bytes) transactions carry the data continuously. After these transactions, the device USB stack appends ZLP (Zero-Length Packet). The transfer request completes by this ZLP on the bus.
    4) In either cases, host controller defers completion report (interrupt) until the next SOF timing.
    5) Receiving request completion, usbser.sys appends the incoming data to its RX buffer, and it sends another request to the host controller. --> back to 1)

    In this way, 1ms response interval is caused by the host controller.

    This explanation assumes UHCI or OHCI host controller for full-speed device.
    When your MSP430 connects to a PC over a USB2.0 hub, the hub converts full-speed transactions into high-speed ones. And then EHCI host controller should be assigned, which works on 125us SOF interval. You'll see 125us interval, instead of 1ms.

    Tsuneo

**Attention** This is a public forum