TiaC SC18IS604 Arduino

TiaC SC18IS604 Arduino PCBA (top)

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:

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

tcs_604_ard

<&grove_gpios 0 …>

D0

<&grove_d0_header 0 …>
<&grove_d1_header 1 …>
<&sc18is604_0_gpio 0 …>

<&grove_gpios 1 …>

D1

<&grove_d1_header 0 …>
<&grove_d2_header 1 …>
<&sc18is604_0_gpio 1 …>

<&grove_gpios 2 …>

D2

<&grove_d2_header 0 …>
<&grove_d1_header 1 …>
<&sc18is604_0_gpio 2 …>

<&grove_gpios 3 …>

D3

<&grove_d3_header 0 …>
<&grove_d4_header 1 …>
<&sc18is604_0_gpio 3 …>

<&grove_gpios 4 …>

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

TiaC SC18IS604 Arduino Wiring

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_ard

Using 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

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

References