Вход/Регистрация
Программируем Arduino. Основы работы со скетчами
вернуться

Монк Саймон

Шрифт:

Serial.println(dataString);

}

В заключение

В этой главе вы познакомились со всеми аспектами использования памяти и хранения данных в Arduino. В следующих главах мы займемся исследованием приемов программирования различных последовательных интерфейсов в Arduino, начав с шины I2C.

7. Интерфейс I2C

Интерфейсная шина I2C (произносится «и квадрат си») — стандартный способ подключения периферийных устройств к микроконтроллерам. Иногда интерфейс I2C называют двухпроводным интерфейсом (Two Wire Interface, TWI). Все платы Arduino имеют хотя бы один интерфейс I2C, к которому можно подключать широкий диапазон периферийных устройств. Некоторые из таких устройств представлены на рис. 7.1.

Все три устройства в верхнем ряду на рис. 7.1 являются модулями отображения информации, выпускаемыми компанией Adafruit. В нижнем ряду слева находится модуль УКВ-приемника TEA5767. Эти модули можно приобрести на сайте eBay или где-то в другом месте за несколько долларов. Приобретая модуль TEA5767, вы получаете полноценный приемник УКВ, который можно настроить на определенную частоту командами через интерфейс I2C. В центре находится модуль часов реального времени (Real-Time Clock, RTC), включающий микросхему обслуживания шины I2C и кварцевый резонатор, обеспечивающий высокую точность измерения времени. Установив текущие время и дату через интерфейс I2C, вы сможете в любой момент прочитать текущие время и дату через тот же интерфейс I2C. Этот модуль включает также литиевую батарейку с длительным сроком службы, обеспечивающую работу модуля даже в отсутствие электропитания от внешнего источника. Наконец, справа находится 16-канальный ШИМ/сервопривод, добавляющий к вашей плате Arduino 16 дополнительных аналоговых выходов.

Рис. 7.1. Устройства с интерфейсом I2C

Стандарт I2C определяется как стандарт шины, потому что допускает подключение множества устройств друг к другу. Например, если вы уже подключили дисплей к микроконтроллеру, к той же паре контактов на «ведущем» устройстве можно подключить целое множество «ведомых» устройств. Плата Arduino выступает в роли «ведущего» устройства, а все «ведомые» устройства имеют уникальные адреса, идентифицирующие устройства на шине.

На рис. 7.2 изображена возможная схема подключения к плате Arduino двух компонентов I2C: часов реального времени и модуля дисплея.

Через интерфейс I2C можно также соединить две платы Arduino и организовать обмен данными между ними. В этом случае одна из плат должна быть настроена как ведущее устройство, а другая — как ведомое.

Рис. 7.2. Arduino управляет двумя устройствами I2C

Аппаратная часть I2C

Электрически линии соединения интерфейса I2C могут действовать подобно цифровым выходам или входам (их также называют выводами с тремя состояниями). В третьем состоянии линии соединения не находятся ни в одном из состояний, HIGH или LOW, а имеют плавающий уровень напряжения. Кроме того, выходы являются логическими элементами с открытым коллектором, то есть они требуют использования подтягивающего сопротивления. Эти сопротивления должны иметь номинал 4,7 кОм, и только одна пара контактов на всей шине I2C должна подключаться через подтягивающее сопротивление к шине питания 3,3 В или 5 В в зависимости от уровня напряжения, на котором действует шина. Если какое-то устройство на шине имеет другое напряжение питания, для его подключения необходимо использовать преобразователь уровня напряжения. Для шины I2C можно использовать модули двунаправленного преобразования, такие как BSS138, выпускаемые компанией Adafruit (www.adafruit.com/products/757).

На разных моделях Arduino интерфейс I2C подключается к разным контактам. Например, в модели Uno используются контакты A4 и A5 — линии SDA и SCL соответственно, а в модели Leonardo используются контакты D2 и D3. (Подробнее о линиях SDA и SCL рассказывается в следующем разделе.) На обеих моделях линии SDA и SCL выводятся также на колодку, находящуюся рядом с контактом AREF (рис. 7.3).

В табл. 7.1 перечисляются наиболее распространенные модели платы Arduino и контакты, соответствующие интерфейсу I2C.

Рис. 7.3. Контакты I2C на плате Arduino Uno

Таблица 7.1. Контакты I2C в разных моделях Arduino

Модель

Контакты

Примечания

Uno

A4 (SDA) и A5 (SCL)

Контакты подписаны SCL и SDA и находятся рядом с контактом AREF. Эти линии интерфейса выводятся также на контакты A4 и A5

Leonardo

D2 (SDA) и D3 (SCL)

Контакты подписаны SCL и SDA и находятся рядом с контактом AREF. Эти линии интерфейса выводятся также на контакты D2 и D3

Mega2560

D20 (SDA) и D21 (SCL)

—

Due

D20 (SDA) и D21 (SCL)

Модель Due имеет вторую пару контактов I2C, подписанных SDA1 и SCL1

Протокол I2C

Для передачи и приема данных через интерфейс I2C используются две линии (отсюда второе название — двухпроводной интерфейс, Two Wire Interface). Эти две линии называют также тактовой линией (Serial Clock Line, SCL) и линией данных (Serial Data Line, SDA). На рис. 7.4 изображена временная диаграмма сигнала, передаваемого через интерфейс I2C.

  • Читать дальше
  • 1
  • ...
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: