81 lines
2.3 KiB
Markdown
81 lines
2.3 KiB
Markdown
## Configuring I2C on the Raspberry Pi
|
|
|
|
This guide assumes that release 2015-01-31 or later of the Raspbian Operating
|
|
System is being used.
|
|
|
|
An I2C bus is broken out to pins 3 (SDA) and 5 (SCL) on the P1 header. The
|
|
number of steps that need to be performed to configure this I2C bus for usage
|
|
by user `pi` on Raspbian without root privileges is highly dependent in the
|
|
version of Raspbian being used.
|
|
|
|
### Configuring I2C with raspi-config
|
|
|
|
With Raspbian Jessie 2015-11-21 or later the complete configuration can be
|
|
performed with the `raspi-config` software configuration tool which can be run
|
|
from a terminal window as follows:
|
|
|
|
```
|
|
sudo raspi-config
|
|
```
|
|
|
|
In the `raspi-config` user interface navigate to `Interfacing Options >> I2C`
|
|
and answer the question `"Would you like the ARM I2C interface to be enabled?"`
|
|
with `<Yes>`. After the next reboot user `pi` will be able to use the I2C bus
|
|
without root privileges.
|
|
|
|
### Configuring I2C Manually
|
|
|
|
On older versions of Raspbian (prior to Raspbian Jessie 2015-11-21) the
|
|
`raspi-config` tool can still be used to configure the I2C bus, but additional
|
|
steps typically need to be performed.
|
|
|
|
#### Step 1 - Enable I2C
|
|
|
|
To enable I2C ensure that `/boot/config.txt` contains the following line:
|
|
|
|
```
|
|
dtparam=i2c_arm=on
|
|
```
|
|
|
|
#### Step 2 - Enable user space access to I2C
|
|
|
|
To enable userspace access to I2C ensure that `/etc/modules` contains the
|
|
following line:
|
|
|
|
```
|
|
i2c-dev
|
|
```
|
|
|
|
#### Step 3 - Setting the I2C baudrate
|
|
|
|
The default I2C baudrate is 100000. If required, this can be changed with the
|
|
`i2c_arm_baudrate` parameter. For example, to set the baudrate to 400000, add
|
|
the following line to `/boot/config.txt`:
|
|
|
|
```
|
|
dtparam=i2c_arm_baudrate=400000
|
|
```
|
|
|
|
#### Step 4 - I2C access without root privileges
|
|
|
|
If release 2015-05-05 or later of the Raspbian Operating System is being used,
|
|
this step can be skipped as user `pi` can access the I2C bus without root
|
|
privileges.
|
|
|
|
If an earlier release of the Raspbian Operating System is being used, create a
|
|
file called `99-i2c.rules` in directory `/etc/udev/rules.d` with the following
|
|
content:
|
|
|
|
```
|
|
SUBSYSTEM=="i2c-dev", MODE="0666"
|
|
```
|
|
|
|
This will give all users access to I2C and sudo need not be specified when
|
|
executing programs using i2c-bus. A more selective rule should be used if
|
|
required.
|
|
|
|
#### Step 5 - Reboot the Raspberry Pi
|
|
|
|
After performing the above steps, reboot the Raspberry Pi.
|
|
|