10:33 pm general
The communication takes place between a USB GPIO/I2C/SPI master device and a USB SPI/I2C/GPIO slave. Each of the devices plays a designated role in their communication.
The USB SPI-GPIO-I2C devices are connected with each other via the USB I2C-Bus.
The USB I2C master dictates the speed of clock and controls the I2C-Bus line. The slave follows this speed. Some USB GPIO-I2C-SPI slaves can pull down the clock line, in case the flow of data is too fast and the slave does not have time to process data efficiently. When the USB I2C slave is ready to continue the communication, it releases the clock line. This mechanism is called as clock stretching.
To implement an USB I2C single master on a microcontroller the same is merely possible in many cases for a slave. An I2C master generates the clock line and starts the communication, whenever it is read to do it. While, the USB-I2C slave has to be ready to process a start condition, to recognize its address and to execute the tasks of a USB-I2C master. This is easy to achieve with hardware state and difficult with a microcontroller, especially if the slave is busy with other tasks. The meter is to assure that at any time and regardless of the application state, the slave is ready to process a master request at a high speed with minimum timing, which is allowed for the communication.