Transclusion: IOT-GATE-iMX8: Industrial I/O add-on

From Compulab Mediawiki
Jump to: navigation, search

IOT-GATE-iMX8 / SBC-IOT-iMX8 can be optionally assembled with the industrial I/O add-on board.
The industrial I/O add-on features up-to three separate I/O modules which allow to implement different combinations of isolated CAN, RS485, RS232, digital outputs and inputs.

CAN

CAN bus modules can be installed in I/O add-on slots A or B.
CAN bus modules support both CAN 2.0B and CAN FD standards. Maximum supported data rate is 8Mbps (in CAN FD mode).

CAN interface configuration

  • Configure the CAN interface bit-rate to 1 Mbits/sec:
root@iot-gate-imx8:~# ip link set can0 type can bitrate 1000000
  • Enable the CAN interface:
root@iot-gate-imx8:~# ip link set can0 up

Send/Receive packets

Use cansend and candump utilities to send and receive packets via CAN interface.

  • Send standard CAN frame (on the first device):
root@iot-gate-imx8:~# cansend can0 111#1122334455667788
  • Send extended CAN frame (on the first device):
root@iot-gate-imx8:~# cansend can0 11111111#1122334455667788
  • CAN frames (extended mode) generator, random payload, interval between two successive flames 50 msec:
root@iot-gate-imx8:~# cangen -g 50 -e -D r -v can0
can: raw protocol (rev 20170425)
...
  can0  03FF0983#D7.61.FF.03.C1.F7.C1.34
  can0  19C34D32#F7.5A.C2.73.AD.0E.3F.0B
  can0  0675E391#2B.2D.D3.49
  can0  13091C55#99.32.EC.77.27.81.49.0B
  can0  098D67CF#22.50.AB.48.AD.7F.F4.26
  can0  05263FEC#1B.4C.02.45.6E
  can0  12B30E20#
  can0  1F193DF9#C5
  can0  1EB0B18F#3E.3F.DA.57.C2.FE.73.58
  can0  1E5C64D9#6F.0D.B3.63.6A
  can0  1E1DE3F9#96.48.AC.79.4E.00.27.71
  can0  0E1A11B7#75.81.70.7C.86.79.A7.77
  can0  05F8FD8B#33.F9.9B.1E.77.3D.1F
  can0  1E155FCD#E6.BA.F8.58.ED.6D.C8.10
  can0  1D91DF9E#5D.29.82.7B.97.1D.AB.5C
  can0  11FB3CDA#14.65.C3
  can0  091352C0#2C.ED
...
  • Dump all received data frames as well as error frames (on the second device):
root@iot-gate-imx8:~# candump any,0:0,#FFFFFFFF
  can0  111   [8]  11 22 33 44 55 66 77 88
  can0  11111111   [8]  11 22 33 44 55 66 77 88
...
  can0  03FF0983   [8]  D7 61 FF 03 C1 F7 C1 34
  can0  19C34D32   [8]  F7 5A C2 73 AD 0E 3F 0B
  can0  0675E391   [4]  2B 2D D3 49
  can0  13091C55   [8]  99 32 EC 77 27 81 49 0B
  can0  098D67CF   [8]  22 50 AB 48 AD 7F F4 26
  can0  05263FEC   [5]  1B 4C 02 45 6E
  can0  12B30E20   [0] 
  can0  1F193DF9   [1]  C5
  can0  1EB0B18F   [8]  3E 3F DA 57 C2 FE 73 58
  can0  1E5C64D9   [5]  6F 0D B3 63 6A
  can0  1E1DE3F9   [8]  96 48 AC 79 4E 00 27 71
  can0  0E1A11B7   [8]  75 81 70 7C 86 79 A7 77
  can0  05F8FD8B   [7]  33 F9 9B 1E 77 3D 1F
  can0  1E155FCD   [8]  E6 BA F8 58 ED 6D C8 10
  can0  1D91DF9E   [8]  5D 29 82 7B 97 1D AB 5C
  can0  11FB3CDA   [3]  14 65 C3
  can0  091352C0   [2]  2C ED
...

RS232

RS232 modules can be installed in I/O slots A or B.
The module implements RS232 interface without hardware flow control.
The interface device in Linux:

  • I/O module A: /dev/ttymxc1
  • I/O module B: /dev/ttymxc3

RS485

RS485 I/O modules can be installed in I/O slots A or B.
The module implements a half-duplex RS485 interface.
The interface device in Linux:

  • I/O module A: /dev/ttymxc1
  • I/O module B: /dev/ttymxc3


The RS485 I/O module includes an optional software-enabled termination. Please note that the termination is disabled each time the device goes through power-cycle.
Linux commands to switch termination state:

SLOT Enable termination Disable termination
A GPIOSET 4 12=1 GPIOSET 4 12=0
B GPIOSET 4 24=1 GPIOSET 4 24=0

Digital I/O

The digital I/O module can be installed in industrial I/O add-on slot C. The module implements 4 digital input and 4 digital output signals.
Make sure that the digital I/O module is present in your device.

Admolition note.png in order to operate digital output or input signals, it is mandatory to connect external voltage source between pin 19 (24V_IN) and pin 20 (ISO_GND_C) of the industrial I/O add-on connector.

Read Digital Input

Use the following commands to read the value of the input signals.
Command format:

root@iot-gate-imx8:~# gpioget 2 0
Signal Name Pin number on the
I/O add-on connector
Read input
IN0 15 gpioget 2 0
IN2 16 gpioget 2 6
IN1 17 gpioget 2 1
IN3 18 gpioget 2 7

Set Digital Output

Use the following commands to set the value of the output signals.
Command format:

root@iot-gate-imx8:~# gpioset 2 8=1
Signal Name Pin number on the
I/O add-on connector
Set HIGH Set LOW
OUT0 11 gpioset 2 8=1 gpioset 2 8=0
OUT2 12 gpioset 5 9=1 gpioset 5 9=0
OUT1 13 gpioset 2 9=1 gpioset 2 9=0
OUT3 14 gpioset 5 10=1 gpioset 5 10=0

Analog Input

Analog 4–20mA input modules can be installed in I/O slots A or B.
The module detects the current level between 4 to 20 mA with 12-bit resolution.

Use the following command to load the kernel object:

root@iot-gate-imx8:~# modprobe max11108

Read the Detected Value

Use the following command to read the current detected value:

root@iot-gate-imx8:~# cat /sys/bus/iio/devices/iio:device0/in_current_raw

Values range from 0 to 4095 (12-bit resolution).
Values can be transposed to actual mA current in the loop by the formula: Current(mA)= Value * 0.00684

  • Current 4mA equals the digital value of 585
  • Current 20mA equals the digital value of 2,924