The data transfer rate between CP2112 and PC application be affected by the usb host

by <a href="http://community.silabs.com/t5/Welcome-and-Announcements/Community-Ranking-System-and-Recognition-Program/m-p/140490#U140490"><font color="#000000"><font size="2">Hero Employee</font></font> </a> yucheng ‎03-13-2017 09:54 PM - edited ‎03-13-2017 09:56 PM

 

The CP2112 is a highly-integrated HID USB-to-SMBus Bridge providing a simple solution for controlling SMBus slave devices. It uses the standard USB HID device class, which is natively supported by most operating systems. The windows applications can communicate with the CP2112 through a Windows DLL, which is provided by Silicon Labs.

 

As we all known, the USB HID interface transfer HID reports with interrupt pipe. And the USB controller are required to support maximum data payload sizes from 0 to 64 bytes for full-speed interrupt endpoints. The default setting for CP2112 usb controller is 64 bytes.

 

After initiating a read request to the desired salve device through HidSmbus_ReadRequest(), the application will call HidSmbus_ForceReadResponse() to read data in a polled mode (suppose autoReadRespond is disabled), the read process will be scheduled by the PC usb host.

 

The following figure illustrated the usb bus data transfer after calling HidSmbus_ForceReadResponse() in the experiment, the number of bytes to read is 512. From the captured usb bus data, the host will issue IN token within SOF 392 and 393, but the next IN token be issued until SOF 400. From the experiment result, the IN token interval is not a constant since it be controlled by the usb host, and the complexity of the usb network will affect it.

 

usb_bus_data.png