This page introduces the usage of I2C bus on 40-Pin Header.
I2C | PIN | GPIO Name | DT Overlays Node | Bus Number | Device Node | |
---|---|---|---|---|---|---|
VIM1/2 | I2C A | 22(SCL) | GPIODV_25 | i2c0 | 0 | /dev/i2c-0 |
23(SDA) | GPIODV_24 | |||||
I2C B | 25(SCL) | GPIODV_27 | - | 1 | /dev/i2c-1 | |
26(SDA) | GPIODV_26 | |||||
VIM3/3L | I2CM 3 | 22(SCL) | GPIOA_15 | i2c3 | 3 | /dev/i2c-3 |
23(SDA) | GPIOA_14 | |||||
I2C AO | 25(SCL) | GPIOAO_2 | - | 4 | /dev/i2c-4 | |
26(SDA) | GPIOAO_3 | |||||
VIM4 | I2CM F | 22(SCL) | GPIOY_17 | i2cm_f | 5 | /dev/i2c-5 |
23(SDA) | GPIOY_18 | |||||
I2CM A | 25(SCL) | GPIOT_20 | i2cm_a | 0 | /dev/i2c-0 | |
26(SDA) | GPIOT_21 | |||||
VIM1S | I2CM B | 22(SCL) | GPIOD_7 | - | 1 | /dev/i2c-1 |
23(SDA) | GPIOD_6 | |||||
I2CM E | 25(SCL) | GPIOZ_11 | i2cm_e | 4 | /dev/i2c-4 | |
26(SDA) | GPIOZ_12 |
In order to use the I2C, you need to enable the I2C function via Device Tree Overlay.
Edit /boot/env.txt
to add the i2c node to overlays
node if it doesn't exist.
Take VIM3 as an example to enable I2CM 3
, you need to add i2c3
node to overlays
node if it doesn't exist.
overlays=uart4 pwm_ao_a pwm_f i2c3
After reboot, you will see the I2C device node.
$ ls /dev/i2c-3
/dev/i2c-3
Edit /boot/dtb/amlogic/kvim3.dtb.overlay.env
to add i2c node to fdt_overlays
node if it doesn't exist.
e.g. To enable I2CM 3
, you need to add i2c3
to node fdt_overlays
if it doesn't exist.
fdt_overlays=i2c3
After reboot, you will see the I2C device node.
Edit /boot/dtb/amlogic/kvim3l.dtb.overlay.env
to add i2c node to fdt_overlays
node if it doesn't exist.
e.g. To enable I2CM 3
, you need to add i2c3
to node fdt_overlays
if it doesn't exist.
fdt_overlays=i2c3
After reboot, you will see the I2C device node.
Edit /boot/dtb/amlogic/kvim4.dtb.overlay.env
to add i2c node to fdt_overlays
node if it doesn't exist.
e.g. To enable I2CM A
, you need to add i2cm_a
to node fdt_overlays
if it doesn't exist.
fdt_overlays=i2cm_a
After reboot, you will see the I2C device node.
$ ls /dev/i2c-0
/dev/i2c-0
Edit /boot/dtb/amlogic/kvim1s.dtb.overlay.env
to add i2c node to fdt_overlays
node if it doesn't exist.
e.g. To enable I2CM E
, you need to add i2cm_e
to node fdt_overlays
if it doesn't exist.
fdt_overlays=i2cm_e
After reboot, you will see the I2C device node.
$ ls /dev/i2c-4
/dev/i2c-4
Please check the I2C Usage.
If you want to use normal GPIO instead of I2C, you can remove the I2C node in Device Tree Overlay.