This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
products:sbc:common:applications:gpio:i2c [2022/07/04 03:14] frank [Hardware Connection] merge VIM1 and VIM2 |
products:sbc:common:applications:gpio:i2c [2023/11/07 04:51] (current) nick [Enable I2C] |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | This document mainly | + | This page introduces |
- | ===== Hardware Connection | + | ===== I2C Information |
- | < | + | | |
- | **I2C A** \\ | + | ^ |
- | '' | + | | ::: | ::: | 23(SDA) |
- | '' | + | | ::: |
- | '' | + | | ::: | ::: | 26(SDA) |
- | '' | + | ^ VIM3/ |
- | **I2C B** \\ | + | | ::: | ::: | 23(SDA) |
- | '' | + | | ::: |
- | '' | + | | ::: | ::: | 26(SDA) |
- | '' | + | ^ VIM4 |
- | '' | + | | ::: | ::: | 23(SDA) |
- | <tabbox VIM3/ | + | | ::: |
- | **I2C 3** \\ | + | | ::: | ::: | 26(SDA) |
- | '' | + | ^ VIM1S | I2CM B | 22(SCL) |
- | '' | + | | ::: | ::: | 23(SDA) |
- | '' | + | | ::: |
- | '' | + | | ::: | ::: | 26(SDA) |
- | **I2C 4** \\ | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | <tabbox VIM4> | + | |
- | **I2C A** \\ | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | **I2C F** \\ | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | '' | + | |
- | </ | + | |
- | ===== Device Detection | + | ===== Enable I2C ===== |
- | <tabbox VIM1> | + | In order to use the I2C, you need to enable the I2C function via [[products: |
- | Detect device on **I2C A**: | + | |
- | ```sh | + | <tabbox VIM1/2/3/ |
- | $ sudo i2cdetect | + | |
- | | + | Edit ''/ |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- -- | + | Take VIM3 as an example to enable '' |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | ```shell |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | overlays=uart4 pwm_ao_a pwm_f i2c3 |
- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
- | Detect | + | |
- | ```sh | + | After reboot, you will see the I2C device |
- | $ sudo i2cdetect | + | |
- | | + | ```shell |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | $ ls /dev/i2c-3 |
- | 10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- | + | /dev/i2c-3 |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
- | < | + | |
- | Detect device on **I2C A**: | + | < |
- | ```sh | + | |
- | $ sudo i2cdetect -y -r 1 | + | Edit ''/ |
- | | + | |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- 1d -- -- | + | e.g. To enable '' |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | ```shell |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | fdt_overlays=i2c3 |
- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
- | Detect device on **I2C B**: | + | |
- | ```sh | + | After reboot, you will see the I2C device node. |
- | $ sudo i2cdetect -y -r 2 | + | |
- | | + | <tabbox VIM3L with 5.15 kernel> |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- | + | Edit ''/ |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | e.g. To enable '' |
- | 50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | ```shell |
- | 70: -- -- -- -- -- -- -- -- | + | fdt_overlays=i2c3 |
``` | ``` | ||
- | <tabbox VIM3/3L> | + | |
- | Detect device on **I2C 3**: | + | After reboot, you will see the I2C device node. |
- | ```sh | + | |
- | $ sudo i2cdetect -y -r 3 | + | <tabbox VIM4> |
- | 0 1 2 3 4 5 6 7 8 9 a b c d e f | + | |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | Edit ''/ |
- | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | e.g. To enable '' |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | ```shell |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | fdt_overlays=i2cm_a |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
- | Detect | + | |
- | ```sh | + | After reboot, you will see the I2C device |
- | $ sudo i2cdetect | + | |
- | 0 | + | ```shell |
- | 00: -- -- -- -- -- -- -- -- -- -- -- 0e -- | + | $ ls /dev/i2c-0 |
- | 10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- | + | /dev/i2c-0 |
- | 20: UU -- 22 -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
- | < | + | |
- | Detect device on **I2C A**: | + | < |
- | ```sh | + | |
- | $ sudo i2cdetect -r -y 0 | + | Edit ''/ |
- | 0 1 2 3 4 5 6 7 8 9 a b c d | + | |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | e.g. To enable '' |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | ```shell |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | fdt_overlays=i2cm_e |
- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
- | Detect | + | |
- | ```sh | + | After reboot, you will see the I2C device |
- | $ sudo i2cdetect | + | |
- | | + | ```shell |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | $ ls /dev/i2c-4 |
- | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | /dev/i2c-4 |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
``` | ``` | ||
+ | |||
</ | </ | ||
- | If you have made a connection, you will see the device address, e.g: '' | ||
- | ===== Read Registers from Device | + | ===== I2C Usage ===== |
- | Read register '' | + | Please check the [[https:// |
- | ```sh | + | |
- | $ sudo i2cget -f -y 1 0x1d 0x0d | + | |
- | 0x2a | + | ===== Disable I2C to Use GPIO ===== |
- | ``` | + | |
- | For more information, | + | If you want to use normal GPIO instead of I2C, you can remove |