TiaC SC18IS604 Arduino

1 1 5 4 Grove I2C 5 Grove Digital
Overview
The TiaC SC18IS604 Arduino is an evaluation shield for the SC18IS604 [8] chip, an
SPI to I2C
bus bridge with an integrated GPIO
controller. This shield requires a board which provides the standard
Arduino UNO R3
connector.
Apart from the bridge it features 3 Sparkfun Qwiic System [3] and 9 Seeed Studio Grove System [4] connectors:
4 ports with Grove I2C Layout [6]
5 ports with Grove Digital Layout [5]
Hardware
Design Data
Data Sheets
Supported Features
The tcs_604_ard
shield configuration supports the following
hardware features:
Interface |
Controller |
Driver/Component |
---|---|---|
GPIO |
on-chip |
I/O ports |
I2C |
on-chip |
Inter-Integrated Circuit |
The default configuration can be found in the Kconfig file boards/shields/tcs-604/Kconfig.defconfig.
Laced Grove Signal Interface
In addition to the GPIO pin header, there are also 5 Grove connectors
for the
digital I/O signals of the bridge. These are provided by a specific interface
for general signal mapping, the Laced Grove Signal Interface
.
Following mappings are well known:
grove_gpios
: GPIO mapping
This is the GPIO signal line mapping from the SC18IS604 [8]
chip bindet with to the set of Grove connectors
provided as
Laced Grove Signal Interface
.
phandle index to shield –> |
Signal : Meaning |
|
---|---|---|
|
D0 |
<&grove_d0_header 0 …> <&grove_d1_header 1 …> ↳
<&sc18is604_0_gpio 0 …> |
|
D1 |
<&grove_d1_header 0 …> <&grove_d2_header 1 …> ↳
<&sc18is604_0_gpio 1 …> |
|
D2 |
<&grove_d2_header 0 …> <&grove_d1_header 1 …> ↳
<&sc18is604_0_gpio 2 …> |
|
D3 |
<&grove_d3_header 0 …> <&grove_d4_header 1 …> ↳
<&sc18is604_0_gpio 3 …> |
|
D4 |
<&grove_d4_header 0 …> ↳
<&sc18is604_0_gpio 4 …> |
Utilization
The shield abstraction is deliberately kept small. It is purely for evaluating the necessary drivers and Devicetree bindings on known integration platforms.
Programming
If the host board has an Arduino UNO R3
connector available, its signals can
be used to connect the shield:
west build -b <your_board> --shield "tcs_604_ard" <your-application>
Hello Shell on Nucleo F746ZG

Set --shield tcs_604_ard
when you invoke west build
or -DSHIELD=tcs_604_ard
for cmake
. For example:
Using west:
west build -b nucleo_f746zg -p always --shield "tcs_604_ard" -d build/tcs_604_ard bridle/samples/helloshell west flash -d build/tcs_604_ardUsing CMake and ninja:
# Use cmake to configure a Ninja-based buildsystem: cmake -Bbuild/tcs_604_ard -GNinja -DBOARD=nucleo_f746zg -DSHIELD=""tcs_604_ard"" bridle/samples/helloshell # Now run the build tool on the generated build system: ninja -Cbuild/tcs_604_ard flash
boot logging output
[00:00:00.005,000] <inf> mfd_sc18is604: sc18is604@0: found "SC18IS604 1.0.3" *** Booting Zephyr OS build v4.2.0… ***
Simple test execution on target
(text in bold is a command input)
uart:~$ hello -h
hello - say hello
uart:~$ hello
Hello from shell.
uart:~$ hwinfo devid
Length: 8
ID: 0x8c998be1de969148
uart:~$ kernel version
Zephyr version 4.2.0
uart:~$ bridle version
Bridle version 4.2.0
uart:~$ bridle version long
Bridle version 4.2.0.0
uart:~$ bridle info
Zephyr: 4.2.0
Bridle: 4.2.0
uart:~$ device list
devices:
- rcc@40023800 (READY)
DT node labels: rcc
- reset-controller (READY)
DT node labels: rctl
- interrupt-controller@40013c00 (READY)
DT node labels: exti
- gpio@40022800 (READY)
DT node labels: gpiok
- gpio@40022400 (READY)
DT node labels: gpioj
- gpio@40022000 (READY)
DT node labels: gpioi
- gpio@40021C00 (READY)
DT node labels: gpioh
- gpio@40021800 (READY)
DT node labels: gpiog
- gpio@40021400 (READY)
DT node labels: gpiof
- gpio@40021000 (READY)
DT node labels: gpioe
- gpio@40020C00 (READY)
DT node labels: gpiod
- gpio@40020800 (READY)
DT node labels: gpioc
- gpio@40020400 (READY)
DT node labels: gpiob
- gpio@40020000 (READY)
DT node labels: gpioa
- serial@40011400 (READY)
DT node labels: usart6 arduino_serial
- serial@40004800 (READY)
DT node labels: usart3
- adc@40012000 (READY)
DT node labels: adc1
- dac@40007400 (READY)
DT node labels: dac1
- flash-controller@40023c00 (READY)
DT node labels: flash
- i2c@40005800 (READY)
DT node labels: i2c2
- i2c@40005400 (READY)
DT node labels: i2c1 arduino_i2c
- pwm (READY)
DT node labels: pwm1
- spi@40013000 (READY)
DT node labels: spi1 arduino_spi
- sc18is604@0 (READY)
DT node labels: sc18is604_0
- sc18is604-0-i2c (READY)
DT node labels: sc18is604_0_i2c tcs_604_i2c grove_i2c
- sc18is604-0-gpio (READY)
DT node labels: sc18is604_0_gpio
- leds (READY)
DT node labels: leds
- dietemp (READY)
DT node labels: die_temp
- vbat (READY)
DT node labels: vbat
- vref (READY)
DT node labels: vref
uart:~$ history
[ 0] history
[ 1] device list
[ 2] bridle info
[ 3] bridle version long
[ 4] bridle version
[ 5] kernel version
[ 6] hwinfo devid
[ 7] hello
[ 8] hello -h
LED: operate with one of extra connected Grove LED Shields by IO3 at D3 (see wiring above):
uart:~$ gpio get sc18is604-0-gpio 3
0
uart:~$ gpio conf sc18is604-0-gpio 3 oh0
uart:~$ gpio set sc18is604-0-gpio 3 1
uart:~$ gpio set sc18is604-0-gpio 3 0
uart:~$ gpio blink sc18is604-0-gpio 3
Hit any key to exit
BTN: operate with one of extra connected Grove Button Shields by IO4 at D4 (see wiring above):
uart:~$ gpio get sc18is604-0-gpio 4
0
uart:~$ gpio conf sc18is604-0-gpio 4 iuh
uart:~$ gpio get sc18is604-0-gpio 4
0
uart:~$ gpio get sc18is604-0-gpio 4
1
uart:~$ gpio get sc18is604-0-gpio 4
0
There are no on-shield I2C devices. For this example the Grove Temperature and Barometer Sensor – BMP280 [7] was connected (see wiring above and Grove Sensor Shields). Scan the I2C devices:
uart:~$ i2c scan sc18is604-0-i2c
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- 77
1 devices found on sc18is604-0-i2c
The I2C address 0x77
is a Bosch BMP280 Air Pressure Sensor and their
Chip-ID can read from register 0xd0
. The Chip-ID must be 0x58
:
uart:~$ i2c read_byte sc18is604-0-i2c 77 d0
Output: 0x58
More Samples and Tests
This is based on the Zephyr board Nucleo F746ZG.
This is based on the Zephyr sample Blinky.
west build -b nucleo_f746zg -p always --shield "tcs_604_ard;grove_btn_d4;grove_led_d3;grove_sens_bmp280;tcs_604_x_grove_testbed" -d build/tcs_604_ard zephyr/samples/basic/blinky
west flash -d build/tcs_604_ard
This is based on the Bridle sample Button in polling mode.
west build -b nucleo_f746zg -p always --shield "tcs_604_ard;grove_btn_d4;grove_led_d3;grove_sens_bmp280;tcs_604_x_grove_testbed" -d build/tcs_604_ard bridle/samples/button -- -DCONF_FILE=prj-poll.conf
west flash -d build/tcs_604_ard
This is based on the Zephyr sample BME280 humidity and pressure sensor.
west build -b nucleo_f746zg -p always --shield "tcs_604_ard;grove_btn_d4;grove_led_d3;grove_sens_bmp280;tcs_604_x_grove_testbed" -d build/tcs_604_ard zephyr/samples/sensor/bme280
west flash -d build/tcs_604_ard