Transclusion: IOT-GATE-iMX8: Industrial I/O add-on
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.
Contents
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.
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