Raspberry Pi:Библиотеки/WiringPi/Расширения/Подключение чипа MCP23016 (I2C): различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 13: | Строка 13: | ||
== Подключение == | == Подключение == | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
#include <wiringPi.h> | #include <wiringPi.h> | ||
#include <mcp23016.h> | #include <mcp23016.h> | ||
Строка 20: | Строка 20: | ||
== Инициализация == | == Инициализация == | ||
<syntaxhighlight lang="c | <syntaxhighlight lang="c"> | ||
mcp23017Setup(int pinBase, int i2cAddress) ; | mcp23017Setup(int pinBase, int i2cAddress) ; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 34: | Строка 34: | ||
* Перед использованием '''I2C'''-устройств нужно будет загрузить в ядро модули для '''I2C'''. Для этого впишите в командной строке: | * Перед использованием '''I2C'''-устройств нужно будет загрузить в ядро модули для '''I2C'''. Для этого впишите в командной строке: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
gpio load i2c | gpio load i2c | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 41: | Строка 41: | ||
* Если у вас '''Pi''' версии '''1''', то команду '''i2cdetect''' нужно писать так: | * Если у вас '''Pi''' версии '''1''', то команду '''i2cdetect''' нужно писать так: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
i2cdetect -y 0 | i2cdetect -y 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 47: | Строка 47: | ||
Если у вас '''Pi''' версии '''2''', то так: | Если у вас '''Pi''' версии '''2''', то так: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
i2cdetect -y 1 | i2cdetect -y 1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 53: | Строка 53: | ||
* Команда '''gpio''' поддерживает '''i2cdetect''' и автоматически подстраивается под версию платы. Просто впишите: | * Команда '''gpio''' поддерживает '''i2cdetect''' и автоматически подстраивается под версию платы. Просто впишите: | ||
<syntaxhighlight lang="bash | <syntaxhighlight lang="bash"> | ||
gpio i2cd | gpio i2cd | ||
</syntaxhighlight> | </syntaxhighlight> |
Текущая версия от 20:04, 23 мая 2023
Содержание | Введение | Продукты | Операционная система | Настройка | Основы Linux | Аппаратные средства | Неисправности | Типовые проблемы | Часто возникающие вопросы | Библиотеки | Примеры |
![]() |
Черновик |
Подключение чипа MCP23016 (I2C)[1]
Библиотека WiringPi поддерживает расширительный модуль для I2C-чипа MCP23016, служащих для оснащения Pi дополнительными GPIO-контактами. MCP23016 – это предшественник MCP23017 и может присутствовать на старых интерфейсных платах.
Raspberry Pi оснащена одной шиной I2C, а MCP23016 – 3-битным адресным портом. Таким образом, в теории, к Pi можно подключить до восьми MCP23016, тем самым добавив плате еще 128 контактов для ввода/вывода данных.
Подключение
#include <wiringPi.h>
#include <mcp23016.h>
Инициализация
mcp23017Setup(int pinBase, int i2cAddress) ;
Параметр pinBase может быть любым значением выше «64», а параметр i2cAddress – это адрес девайса на шине I2C (как правило, по умолчанию здесь стоит «0x20», но может быть и другое, если вы используете несколько устройств). Правильный ли адрес использует шина I2C, можно проверить при помощи команды i2cdetect.
Функцию mcp23017Setup() можно вызывать для каждого MCP23016, подключенного к системе – просто укажите в ней другие адрес шины I2C и значение в параметре pinBase.
Количество контактов здесь указывать не нужно – MCP23016 оснащен 16 контактами.
Примечания
- Перед использованием I2C-устройств нужно будет загрузить в ядро модули для I2C. Для этого впишите в командной строке:
gpio load i2c
- Чтобы убедиться, что Pi видит ваши девайсы, вы можете просканировать шину I2C при помощи программы i2cdetect. Чип MCP23016, как правило, появляется как «0x20», но при использовании нескольких MCP23016 у каждого из них будет (или должен быть!) собственный адрес.
- Если у вас Pi версии 1, то команду i2cdetect нужно писать так:
i2cdetect -y 0
Если у вас Pi версии 2, то так:
i2cdetect -y 1
- Команда gpio поддерживает i2cdetect и автоматически подстраивается под версию платы. Просто впишите:
gpio i2cd
- Драйвер WiringPi для MCP23016 знает, какую версию Pi вы используете, поэтому никаких мер предосторожности не нужно – ваш код будет работать и с Pi версии 1, и с Pi версии 2.
- Чип MCP23016 не оснащен подтягивающими/стягивающими резисторами.