Tired of re-inventing the wheel simple embedded system bridging an I2C device to your PC everytime you want to evaluate a new I2C sensor? Using the Binho Nova + Misson Control desktop software, it's possible to begin evaluating I2C devices in under 1 minute and without writing any code. The Binho Nova is a Multi-Protocol USB Host Adapter that can easily connect devices speaking I2C, SPI, UART, 1-Wire, and SWI protocols right to your PC. While the Nova is great for testing automation, the cross-platform software is very convenient in the earlier phases of development where you just want to peek and poke device registers and validate performance in a particular use case. This article takes from you downloading the software to reading and writing registers in a just a few moments.
Mission Control software is available for Windows, MacOS, and Linux from Binho's support website here. The page also includes installation instructions for each of the supported operated systems. Once installed, go ahead and launch the software. Before we do anything else though, let's plug the Nova into the PC's USB port and connect it to our I2C device.
Connection to the Test Circuit
The Binho Nova Multi-Protocol USB Host Adapter features an integrated wire harness terminated with a 1.27mm pitch 2x5 IDC Connector. This harness contains the 5 signal pins, 1 x 3V3 power signal, 1 x VBUS power signal, and 3 x GND signals. The pinout diagram does a good job of summarizing the capabiliy of each pin:
You can connect the Nova to your I2C device using the included Breadboard Breakout adapter, and using either a breadboard or common jumper cables to connect power, SCL, SDA, and GND signals. If your I2C device just so happens to feature a Qwiic/Stemma QT connector or is on a Feather form-factor board, you can easily use one of the available accessory boards to interface with the sensor.
Configuring the I2C Bus Settings
Once the I2C mode of operation has been activated by clicking the "Activate I2C Mode" button on the I2C tab, the I2C settings will be unlocked and ready for configuration.
The Binho Nova supports I2C bus clock frequencies from 100kHz up to 3.4MHz, which covers all common operating modes (standard, full, fast, and high speed modes). Clock stretching and repeated starts are also supported. There are internal pull-up resistors which can be engaged or disabled as necessary.
Scanning for Devices
If you already know the address of your target I2C peripheral device, you can type it directly into the Address textbox (in either decimal or hex, preceded by "0x"). However, Binho makes it easy to discover devices on the I2C bus -- simply leave the "Address" textbox empty and click the "Scan Entire Bus..." button and the host adapter will check for devices on the bus. Any devices that are found will then be displayed in a listbox. Simply select the address of the device that you'd like to interact with from the list.
Reading data from the peripheral device is as simple as providing the number of bytes to read (in either decimal or hex, preceded by "0x") and clicking the "Read [n] Byte(s)" button.
Writing data to a peripheral device on the I2C bus can be done by entering the data into the "Write" textbox and clicking the "Write [n] Byte(s)" button. An option checkbox can be selected to immediately send a repeated start bit after writing the data. Data can be typed in binary, decimal, or hex formats. In the case of binary, the 8bit value should be preceded by a prefix of "0b", likewise a hex value should be preceded by "0x". Numbers without a prefix will be evaluated as a decimal number.
While not an official part of the I2C specification, a very common implementation across various I2C devices makes it convenient to have a Read Register function. Read Register is effectively a 1-byte Write command which contains the desired register address, followed immediately by a read command.
The Read Register command supports both 8bit and 16bit register addresses. When targeting a 16bit register on an I2C peripheral device, simply use the hex address padded with leading zeros as necessary.
For example, to address register 32 on a device which is expecting a 16-bit address, enter 0x0020 in the Register Address textbox.
It's very easy to use the Binho Nova + Mission Control to evaluate new I2C devices directly from your computer without needing to write any code. You can learn about all the other features in Binho Nova and Mission Control software, as well as how to use the Nova with Python or Serial Commands on the support website here.