I²C or I2C is a commonly used master-slave based digital communication protocol used by electronic devices.

LabJack T-Series devices are primarily USB and Ethernet data acquisition (DAQ) and control devices. They are designed to be connected to a computer directly with USB or to a local area network (LAN) using their ethernet connection and then controlled by a PC. LabJack's DAQ devices can typically be purchased as OEM (embeddable, without a case or screw terminals) devices. LabJack DAQ Devices page.

This is a web application that I made in about 2018. It is made to prvide a visual to what LabJack T-Series devices output when using their I2C functionality. This web application has typically been able to be found in the LabJack T-Series datasheet in the I2C section.

Please note that this writeup does not apply directly to the U-Series devies.

Additionally, please purchase a logic analyzer before embarking on working with I2C sensors.

That being said, test out various I2C configuration settings and view the expected result.

T-Series I2C Visualizer

  • I2C Op:
  • SDA/FIO0:
  • SCL/FIO0:

Enter I2C Configuration Settings Below

I2C_SDA_DIONUM:

I2C_SCL_DIONUM:

I2C_SPEED_THROTTLE:

I2C_OPTIONS:

Enable Reset-On-Start:

Enable No-Stop on Restart:

Disable Clock Stretching:

Result:

--Input below in hexadecimal--

I2C_SLAVE_ADDRESS:

I2C_NUM_BYTES_TX:

I2C_NUM_BYTES_RX:

I2C_DATA_TX:

I2C_DATA_RX:





Key:





T-Series I2C Workflow

The typical work flow for communicating with I2C devices is:

  1. Configure the device using the various configuration registers.
  2. If a I2C write is being performed, write data to the I2C_DATA_TX register.
  3. Write a "1" to the I2C_GO register.
  4. If necessary, read the I2C_NUM_BYTES_RX register to determine how many bytes of data to read from the I2C_DATA_RX register.

Additional Information

Information from support.labjack.com:

Troubleshooting:

Q: Why are no I2C ACK bits being received?

Q: I've tried everything, still no I2C Ack Bits...

Q: Why is my device not being found by the I2C.search function?

Q: What are I2C Read and Write functions or procedures?

Q: Why am I getting a I2C_BUS_BUSY (LJM Error code 2720) error?