USB-I2C/SPI/GPIO Adapter - U2C-12

USB-I2C/SPI/GPIO Interface Adapter U2C-12 provides simple solution to control various hardware devices with I2C, SPI, SMBUS and other serial and parallel interfaces and buses from your PC.


I2C Interface Overview
I2C Interface
  • I2C Interface Configuration

    To configure frequency and clock synchronization settings open I2C Configuration dialog box in U2C-12 Control Panel application.

    I2C specification defines Fast Mode transfer rate at 400 kHz and Standard Mode transfer rate at 100 kHz. U2C-12 Interface Adapter can operate at frequencies in the range from 2 kHz to 400 kHz.

    Clock synchronization (or clock stretching) is used when I2C slave device is not able to co-operate with the clock speed provided by U2C-12 I2C master adapter.

    Frequency and clock synchronization settings can be configured from your software with U2C_SetI2cFreq() and U2C_SetClockSynch() functions.

    U2C-12 Adapter has 3 on-board jumpers that configure voltage level and pull-up resistors.

    JP1 jumper configures I2C bus voltage level. If you want to power your I2C slave device from U2C-12 Adapter, choose the appropriate voltage level with this jumper (3.3V or 5V). If you apply external power to I2C bus, leave this jumper open. With external VCC, voltage level can be in the range 2V-5.25V.

    JP5 and JP6 jumpers configure I2C pull-up resistors. According to I2C Specification, SCL and SCA lines should be connected to VCC with pull-up resistors. If you have pull-up resistors at your I2C slave device board, leave this jumpers open.

  • High-Level I2C Interface

    High-level interface suits to most applications. You simply have to specify slave device address and data to be sent to I2C slave device (or number of bytes to be read from I2C slave device). If your I2C slave device supports internal addressing (e.g. EEPROM) you can specify it as well.

    High-level interface is represented by I2CWrite and I2CRead bars in U2C-12 Control Panel application. To use it in your software, call U2C_Write() and U2C_Read() functions.

  • Low-Level I2C Interface

    With low-level interface you can generate Start and Stop conditions, write or read byte, generate and request Acknowledge. It is very useful if you want to debug your I2C slave device.

    U2C-12 adapter implements low-level interface according to I2C Bus Specification:

    • I2C Specification defines Start condition as HIGH to LOW transition on the SDA line while SCL is HIGH.
    • I2C Specification defines Stop condition as LOW to HIGH transition on the SDA line while SCL is HIGH.
    • I2C Specification defines byte format as 8-bit long data followed by the acknowledge bit. The acknowledge bit allows the receiver to signal the transmitter that the byte was successfully received and another byte may be sent.
    • I2C Specification defines Acknowledge signal as follows: the transmitter releases the SDA line during the acknowledge clock pulse so the receiver can pull the SDA line LOW and it remains stable LOW during the HIGH period of this clock pulse. When SDA remains HIGH during this 9th clock pulse, this is defined by specification as the Not Acknowledge signal.

    Low-level interface is represented by Low Level Bar in U2C-12 Control Panel application. To use it in your software, call low level routines.

  • Bus-Level I2C Interface

    With bus-level interface you can change or read the state of SCL and SDA lines.

    To change SCL or SDA line state you can drop it (set logical "0") or release it. I2C specification doesn't allow device to set logical "1" on SCL and SDA lines. It can only release the line. If no other device holds the line it goes high with the help of pull-up resistors.

    During SCL or SDL line state reading you can distinguish whether U2C-12 Adapter holds the line or it is dropped by I2C slave device.

    Bus-level interface is represented by Bus Level Bar in U2C-12 Control Panel application. To use it in your software, call bus level routines.