Raspberry Pi:Библиотеки/WiringPi/Расширения/Подключение чипа MCP23016 (I2C): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
Нет описания правки
 
Строка 13: Строка 13:
== Подключение ==
== Подключение ==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
#include <wiringPi.h>
#include <wiringPi.h>
#include <mcp23016.h>
#include <mcp23016.h>
Строка 20: Строка 20:
== Инициализация ==
== Инициализация ==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
mcp23017Setup(int pinBase, int i2cAddress) ;
mcp23017Setup(int pinBase, int i2cAddress) ;
</syntaxhighlight>
</syntaxhighlight>
Строка 34: Строка 34:
* Перед использованием '''I2C'''-устройств нужно будет загрузить в ядро модули для '''I2C'''. Для этого впишите в командной строке:  
* Перед использованием '''I2C'''-устройств нужно будет загрузить в ядро модули для '''I2C'''. Для этого впишите в командной строке:  


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
gpio load i2c
gpio load i2c
</syntaxhighlight>
</syntaxhighlight>
Строка 41: Строка 41:
* Если у вас '''Pi''' версии '''1''', то команду '''i2cdetect''' нужно писать так:  
* Если у вас '''Pi''' версии '''1''', то команду '''i2cdetect''' нужно писать так:  


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
i2cdetect -y 0
i2cdetect -y 0
</syntaxhighlight>
</syntaxhighlight>
Строка 47: Строка 47:
Если у вас '''Pi''' версии '''2''', то так:  
Если у вас '''Pi''' версии '''2''', то так:  


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
i2cdetect -y 1
i2cdetect -y 1
</syntaxhighlight>
</syntaxhighlight>
Строка 53: Строка 53:
* Команда '''gpio''' поддерживает '''i2cdetect''' и автоматически подстраивается под версию платы. Просто впишите:  
* Команда '''gpio''' поддерживает '''i2cdetect''' и автоматически подстраивается под версию платы. Просто впишите:  


<syntaxhighlight lang="bash" enclose="div">
<syntaxhighlight lang="bash">
gpio i2cd
gpio i2cd
</syntaxhighlight>
</syntaxhighlight>

Текущая версия от 20:04, 23 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Подключение чипа MCP23016 (I2C)[1]

Библиотека WiringPi поддерживает расширительный модуль для I2C-чипа MCP23016, служащих для оснащения Pi дополнительными GPIO-контактами. MCP23016 – это предшественник MCP23017 и может присутствовать на старых интерфейсных платах.

Raspberry Pi оснащена одной шиной I2C, а MCP230163-битным адресным портом. Таким образом, в теории, к 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 не оснащен подтягивающими/стягивающими резисторами.

См.также

Внешние ссылки