Мы не выдаем Китай за Италию. Платы от российского производителя по сниженным ценам.

Новинки: Power DC Shield, Светодиодная лента, Freeduino Mini, модули USB Host, Relay.

Описание Expander Shield

Expander Shield – оригинальный дополнительный модуль, предназначенный для увеличения количества портов ввода/вывода микроконтроллеров на базе платформы Arduino, а также других микроконтроллеров, используя расширители портов с SPI или I2C интерфейсом.

Модуль также доступен в виде набора для сборки (Kit).

Основным элементами дополнительного модуля Expander Shield являются две микросхемы MCP23S17 или MCP23017 (два 16-разрядных расширителя портов ввода/вывода с SPI или I2C интерфейсом, соответственно), позволяющие добавить четыре 8-битных порта ввода/вывода, то есть 32 дополнительных "ноги".

Комплектация

Модуль Expander Shield поставляется либо в собраном виде в варианте для шин SPI или I2C (с соответствующими микросхемами), либо в виде набора для сборки без микросхем, которые могут быть приобретены отдельно.

На выводы модуля могут быть одеты транспортировочные фиксаторы, которые необходимо снять перед началом работы.

Expander Shield SPI 1100 р. 850 р. В корзину

ExpanderShield на шину SPI (с микросхемами MCP23S17).

Expander Shield I2C 1100 р. 850 р. В корзину

ExpanderShield на шину I2C (с микросхемами MCP23017).

Технические характеристики

Приведем наиболее важные функциональные особенности модуля Expander Shield.

  • удобный переключатель режима работы модуля в зависимости от типа установленных в данный момент микросхем расширителей портов;
  • для каждой из двух применяемых микросхем 16-разрядных расширителей портов ввода/вывода с помощью перемычек задается трехбитный адрес на шине, что позволяет размещать на одной шине до 8 таких микросхем;
  • возможность выбора с помощью перемычки номера соответствующего выхода микроконтроллера Freeduino/Arduino (digital pin 8, 9 или 10) для сигнала CS шины SPI;
  • в модуле применены "проходные" разъемы, позволяющие состыковывать несколько модулей без сдвига относительно платы Arduino;
  • сигналы микросхем выведены на четыре разъема PBD-10R с дополнительными контактами "земля" и +5В;
  • возможность выбора отдельного или совместного аппаратного сброса (кнопкой RESET) микросхем 16-разрядных расширителей портов ввода/вывода и микроконтроллера Freeduino/Arduino с помощью перемычек;
  • дополнительный разъем JPIC с выводами прерываний (INTA, INTB), аппаратного сброса (RST) и выбора микросхемы (CS);

Прочие характеристики модуля определяются в первую очередь характеристиками микросхем MCP23S17/MCP23017, техническое описание которых доступно в документации производителя.просмотр

Кроме того, перед началом работы с дополнительным модулем Expander Shield рекомендуем ознакомиться с его принципиальной электрической схемой.

принципиальная схема по лицензии Creative Commons Attribution-ShareAlike 2.5

Режимы работы

Режим работы Expander Shield выбирается с помощью DIP-переключателя и перемычек.

Выбор интерфейса и управление подтяжкой шины I2C

С помощью DIP переключателя выбирается либо режим SPI (включением контактной группы 1-4) для микросхем MCP23S17, либо режим I2C (включением контактной группы 5-6) для микросхем MCP23017. Также, в режиме I2C с помощью 7 и 8 контактной группы при необходимости шина I2C подтягивается через токоограничивающие сопротивления к шине питания +5В. Как правило, подтягивающие резисторы должны быть подключены если на шине I2C только одно устройство. Если устройств несколько, то резисторы подключаются только у одного из устройств.

Одновременное включение шины SPI и I2C, а также шины SPI и 7, 8 контактной группы не допускается.

Комбинированный режим работы, когда одна из двух микросхем в одном модуле Expander Shield работает по SPI интерфейсу (MCP23S17), а другая по I2C интерфейсу (MCP23017) невозможен.

Если требуется организовать работу одновременно по SPI и I2C интерфейсу необходимо использовать два (несколько) дополнительных модулей Expander Shield, с соотвтетствующим положением переключателей.

Выбор номера вывода для управления сигналом CS шины SPI

Для шины SPI необходимо выбрать вывод микроконтроллера Freeduino/Arduino, используемый в качестве сигнала CS. Обычно используется вывод 10, что соответствует крайнему левому положению перемычки на разъеме SS1. Переставляя перемычку на одно из двух других положений, возможен выбор 9 и 8 вывода соответственно.

Выбор адреса микросхем на шине

Младшие три бита адреса микросхем MCP23S17/MCP23017 выбираются с помощью перемычек на разъемах IC1_addr/IC2_addr притягиванием битов 0, 1, 2 к "земле" (Gnd) или +5В (5V).

Адрес каждой микросхемы должен быть уникальным.

Таким образом, на одной шине можно разместить до 8 микросхем (объединив, например, 4 штуки Expander Shield).

Выбор режима работы аппаратного сброса (кнопкой RESET)

Возможна организация одного из ряда режимов работы кнопки RESET

  • Кнопка RESET сбрасывает Freeduino/Arduino и микросхемы MCP23S17/MCP23017
  • Кнопка RESET сбрасывает только Freeduino/Arduino
  • Кнопка RESET сбрасывает только микросхемы MCP23S17/MCP23017

Соответствующие положения перемычек на разъеме JRS (слева направо) показаны ниже.

Библиотека MCP23xxx

Для упрощения работы с этим, и рядом других модулей, разработана библиотека MCP23xxx, предоставляющая простой интерфейс к функционалу микросхем серии MCP23xxx. Библиотека доступна для свободного скачивания: http://www.freeduino.ru/arduino/files/MCP23xxx.zip Библиотека совместима с ПО Arduino версии 1.0.5 (также предполагается совместимость и с более поздними версиями).

Фактически, это набор из двух библиотек: MCP23xxx и LiquidCrystal_MCP23x17.

Более подробно установка библиотек описана в разделе подключение библиотек. Структура каталогов папки libraries после установки должна стать такой:

/libraries/LiquidCrystal_MCP23x17
/libraries/MCP23xxx

В библиотеке MCP23xxx реализованы шаблоны классов, организующие работу с расширителями портов MCP23017, MCP23S17, MCP23008 и MCP23S08. Библиотека LiquidCrystal_MCP23x17 - это модифицированная стандартная библиотека LiquidCrystal, поддерживающая русский язык, и работающая через расширитель портов.

К библиотеке прилагаются примеры, поясняющие работу с ней. Также доступна для скачивания предыдущая версия библиотеки: http://www.freeduino.ru/arduino/files/MCP23x17.zip

Рассмотрим пример работы с модулем для шины I2C:

//В примере считывается состояние выводов 1-го чипа, и такие же значения выставляются на 2-м

//Для I2C версии подключаем Wire.h:
#include <Wire.h>
//подключаем библиотеку
#include <MCP23xxx.h>

//Создаем два объекта класса CMCP23017, но не инициализируем, т.к. шина I2C не готова
CMCP23017 mcp23_1;
CMCP23017 mcp23_2;

void setup()
{
  //Инициализируем шину I2C ...
  Wire.begin();
  //... и объекты MCP23* с адресами 0 и 1
  mcp23_1.init(0);
  mcp23_2.init(1);

  //Все выводы 1-го чипа нужно сделать входами, а 2-го - выходами
  //Это можно сделать в цикле
  for (int i=0; i<16; i++) {
    mcp23_1.pinMode(i, INPUT);
    mcp23_2.pinMode(i, OUTPUT);
  }
  //или за один раз, вызовом метод pinMode16
  //mcp23_1.pinMode16(0x0ffff);
  //mcp23_2.pinMode16(0x00000);
}

void loop()
{
  //Прочесть все входы 1-го чипа, и выставить то же самое на 2-м можно в цикле
  for (int i=0; i<16; i++) {
    mcp23_2.digitalWrite(i, mcp23_1.digitalRead(i));
  }
  //или за раз, используя методы digitalRead16 и digitalWrite16
  //mcp23_2.digitalWrite16(mcp23_1.digitalRead16());
}