КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Raspberry Pi включаем шину I2C, SPI

Внимание: во всех версиях одноплатных компьютеров Raspberry Pi обнаружен аппаратный баг (https://elinux.org/BCM2835_dat...), который препядствует корректной работе шины I2C. При этом шина работет, но иногда получает некорректные значения или может зависнуть. В качестве решения предлагаем отключить аппаратную шину I2C, воспользовавшись данной статьёй и включить программную. К шине SPI это не относится.

Ссылка на гитхаб: обсуждение бага на Raspberry Pi 5: https://github.com/raspberrypi...

tl;dr: для отключения аппаратной шины I2C закомментируйте строку dtparam=i2c_arm=on в файле /boot/firmware/config.txt:

#dtparam=i2c_arm=on

для включения программной шины I2C добавьте следующую строку в файл /boot/firmware/config.txt:

dtoverlay=i2c-gpio,bus=3

После этого модули необходимо подключать согласно следующей таблице:

Вывод модуля
Вывод Raspberry
SDAGPIO 23
SCLGPIO 24

Для использования программной шины в библиотеках iarduino необходимо обновить библиотеки и передать параметр с названием новой шины в конструктор. На примере библиотеки pyiArduinoI2Cdsl:

# импортируем библиотеку 
from pyiArduinoI2Cdsl import *
# создаём объект датчика с указанием шины i2c
dsl = pyiArduinoI2Cdsl(bus="/dev/i2c-3")

Для проверки подуключенных устройств i2c с помощью утилиты i2cdetect так же необходимо указывать соответсвующую шину:

pi@raspberrypi:~ $ i2cdetect -y 3

Оригинальная статья про включение аппаратных шин:

Общие сведения:

Для работы с шинами I2C и SPI на Raspberry их необходимо включить (по умолчанию они выключены). Сделать это можно в графической среде или через терминал.

Для начала рассмотрим как это сделать в графической среде.

Включение в графической среде:

Нажимаем иконку малины в правом верхнем углу экрана и выбираем параметры -> Raspberry Pi Configuration:

Откроется окно настроек, выбираем вкладку Interfaces:

Во вкладке Interfaces выбираем enable (включено) для I2C и SPI:

Здесь необходимо выбрать "Disable", если Вы включаете программную шину I2C.

Нажимаем ОК. Интерфейс включён!

Настройка в терминале:

Настройка в терминале может понадобится, если мы подключаемся к Raspberry удалённо. Как  работать с Raspberry по локальной сети можно узнать тут. Для настройки в терминале необходимо ввести с клавиатуры sudo raspi-config и нажать enter:

Откроется меню настроек, выбираем 5 Interfacing Options, нажимаем enter:

Откроется меню выбора интерфейсов, выбираем P5 I2C или P4 SPI, в зависимости от того, что мы хотим включить:

На вопрос отвечаем <Да>:

Здесь необходимо ответить <Нет>, если Вы включаете программную шину I2C:

Интерфейс включён!




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями