SC16IS75x Breakout Boards

This is a collection of very simple and often copied breakout boards as Zephyr shield based on the NXP SC16IS750 [9] or SC16IS752 [11] chip, a bridge from an I2C or SPI bus to a single or dual channel UART with integrated GPIO controller. The origin of all breakout boards was the BOB-09981 [4] (BOB-09745 [7]) design from SparkFun with the single-channel UART/GPIO bridge. This is available both as a one-to-one clone and as a modified version with a two-channel UART/GPIO bridge from CJMCU (Changjiang Intelligent Technology Co., Ltd.) [1] or Q-Baihe (Wuhan Lilly Electronics Co., Ltd.) [2].

Operation and connection

All breakout boards contain only the essential components required to operate the bridge IC. These are a crystal for clock provision, blocking capacitors, important pull-up resistors and a small 3.3V power supply. Any additional circuits or components required must be provided externally. The single channel UART/GPIO breakout boards use the NXP SC16IS750 [9]. The dual channel UART/GPIO breakout boards use the NXP SC16IS752 [11]. The user is free to select either an I2C or an SPI bus to operate with the bridge IC. The selection is made via the pin labeled I2C/SPI on one of the headers. See figures below.

All bridge ICs are interrupt-capable (/IRQ) and can be reset by a hardware reset (/RESET). Breakout boards with a SC16IS750 (single channel) have a crystal with a fixed frequency of 14.7456MHz. Breakout boards with a SC16IS752 (dual channel) have a crystal with a fixed frequency of 1.8432MHz.

SPI bus operation

The SC16IS750 or SC16IS752 works in SPI bus operation mode when I2C/SPI set to Low.

../../../../_images/SC16IS750-BD-SPI.jpg ../../../../_images/SC16IS752-BD-SPI.jpg

SC16IS750 on SPI bus

SC16IS752 on SPI bus

Multiple bridge ICs can be used by connecting the SPI /CS signal to different outputs of the SPI host controller.

Note

Despite what may be printed on the PCB, when using the SC16IS750 or SC16IS752 in SPI mode, the SDA pin should be held low or open, not high. Otherwise, interrupt handling may not function correctly.

I2C bus operation

The SC16IS750 or SC16IS752 works in I2C bus operation mode when I2C/SPI set to High.

../../../../_images/SC16IS750-BD-I2C.jpg ../../../../_images/SC16IS752-BD-I2C.jpg

SC16IS750 on I2C bus

SC16IS752 on I2C bus

Multiple bridge ICs can be operated on a single I2C host controller by correctly wiring the I2C address select pins A0 and A1. See the following table.

I2C address selection.

A1

A2

raw address

8-bit address

7-bit address (shifted)

VDD

VDD

1001 000X

0x90

0x48

VDD

VSS

1001 001X

0x92

0x49

VDD

SCL

1001 010X

0x94

0x4A

VDD

SDA

1001 011X

0x96

0x4B

VSS

VDD

1001 100X

0x98

0x4C

VSS

VSS

1001 101X

0x9A

0x4D

VSS

SCL

1001 110X

0x9C

0x4E

VSS

SDA

1001 111X

0x9E

0x4F

SCL

VDD

1010 000X

0xA0

0x50

SCL

VSS

1010 001X

0xA2

0x51

SCL

SCL

1010 010X

0xA4

0x52

SCL

SDA

1010 011X

0xA6

0x53

SDA

VDD

1010 100X

0xA8

0x54

SDA

VSS

1010 101X

0xAA

0x55

SDA

SCL

1010 110X

0xAC

0x56

SDA

SDA

1010 111X

0xAE

0x57

Supported Shields

Single-channel UART/GPIO bridge

OBSOLETE and UNSUPPORTED, use BOB-09981 instead!

../../../../_images/BOB-09745.jpg

The BOB-09745 [7] is the original breakout board from SparkFun in the early first revision v1.2 with a 12.2880MHz crystal. This revision is not supported by this shield abstraction, as a crystal is populated with an unsuitable value!

Warning

../../../../_images/BOB-09xxx-IRQ-fix.jpg

The board contains a design defect resulting in the interrupt pin (/IRQ) of the SC16IS750 not being physically connected to the board outputs.

See also: https://github.com/sparkfun/SC16IS750_Breakout/issues/1

However, this error can be fixed by soldering a small wire bridge from pin 11 (/IRQ) of the SC16IS750, or rather the one side of the related pull-up resistor, to the pin header directly to the left side of it. See the enclosed illustration.

Dual-channel UART/GPIO bridge

Derived from the single-channel breakout board, the new development from CJMCU (Changjiang Intelligent Technology Co., Ltd.) [1] and its clones with an SC16IS752 are also supported. These feature a dual-channel UART/GPIO bridge. All this boards coming with a 1.8432MHz crystal. There are no circuit documents for any of the dual-channel breakout boards.

Utilization

The shield abstraction of these breakout boards is deliberately kept small. It is purely for evaluating the necessary drivers and Devicetree bindings on known integration platforms. Due to the large number of clones and the associated PCB designations and product names, only two basic shield names are used and extended by the respective short name of the serial peripheral bus to be used. A special case is the suffix _noirq. This is necessary if a faulty single-channel breakout board without interrupt line is to be used. The various connectors on the single and dual channel boards are generally defined using their own Nyxus header bindings:

I2C shield names

SPI shield names

DTS header bindings

SC16IS750

cjmcu_750_i2c
cjmcu_750_i2c_noirq
cjmcu_750_spi
cjmcu_750_spi_noirq

SC16IS752

cjmcu_752_i2c
cjmcu_752_i2c_noirq
cjmcu_752_spi
cjmcu_752_spi_noirq

This shields can be used with any development board or shield that provides a Devicetree node with the cjmcu,75x-hif-header property in the compatibility. That is needed for GPIO mapping of the reset and optional interrupt line. Users can rely on the CJMCU-75x Interconnection Shield or create their own interconnection shields with the necessary mappings in them.

Programming

west build -b nucleo_f746zg -p always --shield "x_cjmcu_75x cjmcu_750_spi" -d build/cjmcu_750 bridle/samples/helloshell
west flash -d build/cjmcu_750

Interrupt disabled

west build -b nucleo_f746zg -p always --shield "x_cjmcu_75x cjmcu_750_spi_noirq" -d build/cjmcu_750 bridle/samples/helloshell
west flash -d build/cjmcu_750

References