Українська   English
ДонНТУ   Портал магистров

Реферат по теме выпускной работы

Содержание

Введение

Шина Inter-Integrated Circuit (или I2C) была разработана в начале 80-х годов компанией Philips для межмикросхемного управления в блоках телевизоров, чтобы наращивать возможности телевизионных приемников с одновременным сокращением числа печатных проводников на платах, которые соединяют между собой все растущее число ИМС [1]. Задачей появления шины I2C являлось перейти от параллельной передачи данных, неизбежно имеющей число проводников равное разрядности шины, что значительно затрудняло разводку печатных плат и создавало много других проблем, к последовательной передаче данных по трем проводам. Интерес у разработчиков и конструкторов различного рода радиоэлектронных устройств к шине I2C не ослабевал все эти годы, но отмена с 1 октября 2006 года компанией Philips отчислений за использование протокола I2C вызвало оживление интереса и дало новый толчок к все более широкому использованию шины I2C в различных электронных устройствах, не связанных с телевизионным приемом. Много лет инженеры и разработчики при разработке и отладке устройств, использующих протокол I2C, применяли программно-аппаратные средства, если и позволяющие производить декодирование протокола I2C, то абсолютно не приспособленные для анализа этих сигналов на физическом уровне, то есть с визуальным просмотром процессов, происходящих на шине, с одновременным декодированием протокола. Эти проблемы полностью решает современный цифровой осциллограф, имеющий возможность декодирования протоколов I2C. К числу таких осциллографов можно отнести осциллографы LeCroy серии WaveSurfer Xs, WaveRunner, WavePro и WaveMaster.

1. Актуальность темы

В настоящее время все более актуальным становится вопрос удаленного управления электроприводами в связи с невозможностью установки управляющего устройства в непосредственной близости от рабочего механизма. При этом силовую часть стараются расположить ближе к приводу, а управляющие сигналы на нее передавать удаленно. В системах малой автоматизации и механизмах, управляемых от недорогих контроллеров, например, с архитектурой AVR или ARM, используются протоколы связи RS232, SPI и I2C. Поэтому протоколам связи SPI и I2C будет посвящена магистерская работа.

Сейчас шина I2C часто используется в микросхемах памяти, видеопроцессорах, модулей обработки аудио- и видео-сигналов, АЦП и ЦАП, драйверах ЖК-индикаторов, а также в телефонах, кодеках и в других устройствах. Производителями цифровых осциллографов также использовался интерфейс I2C.

2. Цель и задачи исследования, планируемые результаты

Цель исследования – проверить работу протокола связи I2C, получить результаты исследований и сделать выводы, исходя из результатов исследования.

Основные задачи исследования:

  1. Подключить к плате STM32F4 Discovery гироскоп L3G4200D, используя протокол связи I2C.
  2. Проследить за сигналами двух двунаправленных линий связи (SDA и SCL) с помощью осциллографа.
  3. Получить результаты работы протокола I2C (графики линий связи SDA и SCL) и результаты работы гироскопа L3G4200D.
  4. Сделать выводы о результатах работы протокола I2C.

Объектом исследования является датчик L3G4200D, который передает данные плате STM32F4 Discovery по протоколу связи I2C.

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

3. Обзор исследований и разработок

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

3.1 Обзор международных источников

Последовательный периферийный интерфейс (SPI) рассмотрели ученые David Kalinsky и Roee Kalinsky из США в 2002 году [2], а также Mark Hughes в 2017 году [3], Bernard Hyland [4].

3.2 Обзор национальных источников

Синхронный последовательный интерфейс (SPI) в микроконтроллерах и его реализацию рассматривал Александр Новицкий в журнале Компоненты и технологии в 2009 году [5]. Олег Николайчук описывал архитектуру микроконтроллерных систем с интерфейсом SPI, особенности и возможности таких систем, а также – области применения [6]. Олег Вальпа приводил описание последовательного интерфейса SPI 32-разрядных ARM-микроконтроллеров серии STM32 от компании STMicroelectronics и рассмотрел архитектуру, состав и назначение регистров конфигурирования SPI, а также предложил примеры программ для его инициализации и работы в журнале Современная электроника в 2014 году [7]. Каршов Р.С. описывал интерфейсную шину I2C в своей статье [8]. Ксения Южная описывала устройство и интерфейс SPI [9].

3.3 Обзор локальных источников

В Донецком национальном техническом университете (кафедра компьютерной инженерии) в 2010 г. магистром Степаненко С.В. создавалась сложная робототехническая система, которая состоит из большого числа функциональных блоков [10]. В ходе научного сотрудничества со Штутгартским университетом им была поставлена цель проверить целесообразность выбора SPI как основного интерфейса обмена информацией между внутренними устройствами робота. Магистр Степаненко С.В. также в своей научной статье рассматривал использование последовательного периферийного интерфейса (SPI) для связи процессора и внешних устройств [11].

4. Использование протоколов связи для удаленного управления электроприводом

I2C шина является одной из модификаций последовательных протоколов обмена данных [12]. В стандартном режиме обеспечивается передача последовательных 8-битных данных со скоростью до 100 кбит / с, и до 400 кбит / с в быстром режиме. Для осуществления процесса обмена информацией по I2C шине используется всего два сигнала: линия данных SDA (линия синхронизации) и SCL (линия тактов). Простая двухпроводная последовательная шина I2C минимизирует количество соединения между устройствами.

Каждое устройство распознается по уникальному адресу и может работать как передатчик или приёмник, в зависимости от своего назначения.

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

Исходя из спецификации работы шины, в каждый отдельный момент в шине может быть только один ведущий, а именно то устройство, которое обеспечивает формирование сигнала SCL шины. Ведущий может выступать как в роли ведущего-передатчика, так и ведущего-приемника. Тем не менее, шина позволяет иметь несколько ведущих, накладывая определенные особенности их поведения в формировании сигналов управления и контроля состояния шины. Возможность подключения более одного ведущего к шине означает, что более чем один ведущий может попытаться начать пересылку в один и тот же момент времени.

Процедура обмена начинается с того, что ведущий формирует состояние СТАРТ – ведущий генерирует переход сигнала линии SDA из ВЫСОКОГО состояния в НИЗКОЕ при ВЫСОКОМ уровне на линии SCL.

Процедура обмена завершается тем, что ведущий формирует состояние СТОП – переход состояния линии SDA из низкого состояния в ВЫСОКОЕ при ВЫСОКОМ состоянии линии SCL.

Для подтверждения приема байта от ведущего-передатчика ведомым-приемником в спецификации протокола обмена по шине I2C вводится специальный бит подтверждения, выставляемый на шину SDA после приема 8 бита данных.

Таким образом, передача 8 бит данных от передатчика к приемнику завершаются дополнительным циклом (формированием 9-го тактового импульса линии SCL), при котором приемник выставляет низкий уровень сигнала на линии SDA, как признак успешного приема байта.

Подтверждение при передаче данных обязательно. Соответствующий импульс синхронизации генерируется ведущим. Передатчик отпускает (ВЫСОКОЕ) линию SDA на время синхроимпульса подтверждения. Приёмник должен удерживать линию SDA в течение ВЫСОКОГО состояния синхроимпульса подтверждения в стабильном НИЗКОМ состоянии.

Если в пересылке участвует ведущий-приёмник, то он должен сообщить об окончании передачи ведомому-передатчику путем неподтверждения последнего байта. Ведомый-передатчик должен освободить линию данных для того, чтобы позволить ведущему выдать сигнал СТОП или повторить сигнал СТАРТ.

Каждое устройство, подключённое к шине, может быть программно адресовано по уникальному адресу.

Процедура адресации на шине I2C заключается в том, что первый байт после сигнала СТАРТ определяет, какой ведомый адресуется ведущим для проведения цикла обмена. Исключение составляет адрес Общего вызова, который адресует все устройства на шине. Когда используется этот адрес, все устройства в теории должны послать сигнал подтверждения. Однако, устройства, которые могут обрабатывать общий вызов, на практике встречаются редко.

Первые семь битов первого байта образуют адрес ведомого. Восьмой, младший бит, определяет направление пересылки данных. Ноль означает, что ведущий будет записывать информацию в выбранный ведомый. Единица означает, что ведущий будет считывать информацию из ведомого.

После того, как адрес послан, каждое устройство в системе сравнивает первые семь бит после сигнала СТАРТ со своим адресом. При совпадении устройство полагает себя выбранным как ведомый-приёмник или как ведомый-передатчик в зависимости от бита направления.

В общем виде процесс обмена по шине от момента формирования состояния СТАРТ до состояния СТОП показан на рисунке 1.

Рисунок 1 – Процесс обмена данными по шине I2C

Рисунок 1 – Процесс обмена данными по шине I2C

Аббревиатура SPI означает Serial Peripheral Interface или в русском варианте последовательный периферийный интерфейс [13]. Название говорит само за себя, данный интерфейс используется для работы с различными периферийными устройствами. С технической точки зрения SPI – это синхронная четырёхпроводная шина. Она представляет собой соединение двух синхронных сдвиговых регистров, которые являются центральным элементом любого SPI устройства. Для соединения используется конфигурация ведущий / ведомый. Только ведущий может генерировать импульсы синхронизации. В схеме всегда только один ведущий (в отличие от той же шины I2C, где возможен вариант с более чем одним ведущим), количество ведомых может быть различно. В общем случае выход ведущего соединяется со входом ведомого, и наоборот, выход ведомого соединяется со входом ведущего. При подаче импульсов синхронизации на выход SCK данные выталкиваются ведущим с выхода MOSI и захватываются ведомым по входу MISO. Таким образом, если подать количество импульсов синхронизации, соответствующее разрядности сдвигового регистра, то данные в регистрах обменяются местами. Отсюда следует, что SPI всегда работает в полнодуплексном режиме. А вот нужны ли нам данные, полученные от устройства при записи какого-либо параметра, это уже другой вопрос. Часто бывает, что данные, полученные от устройства при записи в него данных, являются мусором, в таком случае их просто игнорируют, но мы их получим вне зависимости от нашего желания.

Контроллер SPI, как правило, может работать как в режиме ведущего, так и в режиме ведомого.

Существует простейший способ включения SPI устройств. Такой способ показан на рисунке 2.

Рисунок 2 – Способ включения SPI с параллельным подключением ведомых устройств

Рисунок 2 – Способ включения SPI с параллельным подключением ведомых устройств

В данном случае к ведущему все ведомые подключаются параллельно, за исключением сигнала выбора ведомого (CS). Для каждого ведомого необходим отдельный сигнал выбора ведомого (на рисунке они обозначены как SSx). Для сигналов выбора ведомого могут использоваться как специально предназначенные для этого выходы SPI-контроллера, так и порты ввода / вывода общего назначения (GPIO) микроконтроллера.

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

  1. MOSI – Master Output, Slave Input (выход ведущего, вход ведомого). Данный сигнал предназначен для последовательной передачи данных от ведущего к ведомому. Также может называться SDO, DO и т.п.;
  2. MISO – Master Input, Slave Output (вход ведущего, выход ведомого). Данный сигнал предназначен для последовательной передачи данных от ведомого к ведущему. Может называться SDI, DI и т.п.;
  3. SCK – Serial Clock (сигнал синхронизации). Используется для синхронизации при передаче данных. Также может иметь название SCLK, CLK и др.;
  4. CS – Chip Select (выбор микросхемы). С помощью данного сигнала происходит активация ведомого устройства. Обычно он является инверсным, то есть низкий уровень считается активным. Иногда его называют SS (Slave Select, рус. выбор ведомого).

Приведем пример использования протокола I2C.

Пусть одна плата Arduino Due будет системой управления (с кнопками для управления электроприводом), т.е. ведущим устройством. С этого ведущего устройства будут передаваться данные ведомому, которое является СПР скорости ДПТ. Таким образом, при помощи I2C-коммуникации можно настроить две платы Arduino Due таким образом, чтобы они делились информацией по принципу ведущая плата отсылает / ведомая плата считывает. Ведущая плата Arduino Due отсылает сигнал на пуск, торможение и реверс двигателя, а также входной сигнал ЗИ (заданную скорость), а ведомая принимает эти данные.

На рисунке 3 представлена схема подключения ведущей и ведомой платы Arduino Due. Контакты SDA и SCL на ведущей плате Arduino подключены к контактам SDA и SCL на ведомой Arduino. Кроме того, контакты с землей (GND) у обеих плат тоже подключены друг к другу. К ведущей плате подключены кнопки управления со световой индикацией, а к ведомой – двигатель.

Рисунок 3 – Схема подключения ведущей и ведомой платы Arduino Due

Рисунок 3 – Схема подключения ведущей и ведомой платы Arduino Due

5. Реализация протокола связи I2C на плате STM32F4 DISCOVERY с подключением датчика L3G4200D

На рисунке 4 представлена demo-модель таргета (stm32f4_target_i2c_amg_imu_9a_demo) для получения данных от гироскопа L3G4200D с использованием протокола связи I2C [14].

Рисунок 4 – Target-модель

Рисунок 4 – Target-модель

В блоке Target Setup настраиваем нашу плату (выбираем компаратор, программатор и тип платы STM). В блоке I2C Master Setup выбираем модуль I2C, рабочий цикл в быстром режиме, тактовую частоту, тайм-аут и пины SDA и SCL. Блок UART Setup используется для настройки устройства UART, тут выбираем номер UART модуля и инициализируем пины для подключения к плате (Tx, Rx, GND). Протокол UART мы используем для получения графика, описывающего работу датчика L3G4200D. Также на этом рисунке показана сама модель гироскопа.

На рисунке 5 показана demo-модель хоста (stm32f4_host_i2c_amg_imu_9a_demo) для того, чтобы вывести сигналы датчика на осциллограф.

Рисунок 5 – Host-модель

Рисунок 5 – Host-модель

Блок Host Serial Setup используется для настройки HOSTа, вводится номер порта, которым UART зарегистрировался на компьютере. Блок Host Serial Rx выводит сигналы на осциллограф.

На рисунке 6 представлена схема подключения аппаратного обеспечения (платы STM32F4 Discovery, датчика L3G4200D и модуля UART).

Линии SCL и SDA нашей платы подключаем к SCL и SDA датчика. Землю GND платы подключаем к земле GND гироскопа. Для питания подключаем линию VDD (3.3 V) STM32F4 Discovery к VDD (3.3 V) датчика L3G4200D. К модулю UART к Rx подключаем пин Tx, а к GND подключаем GND нашей платы.

Рисунок 6 – Схема подключения аппаратного обеспечения

Рисунок 6 – Схема подключения аппаратного обеспечения

На рисунке 7 показаны результаты работы (графики) датчика L3G4200D.

На данном графике ось x – это время моделирования, а ось y – амплитуда. На графике видно воздействие при вращении гироскопа вокруг горизонтальной оси(x), вертикальной оси(y) и третьей оси(z).

На рисунке 8 представлены результаты работы протокола I2C.

Рисунок 7 – Результаты работы датчика L3G4200D

Рисунок 7 – Результаты работы датчика L3G4200D

Рисунок 8 – Результаты работы протокола I2C

Рисунок 8 – Результаты работы протокола I2C

На данном графике ось x – это время моделирования, а ось y – это напряжение (амплитуда равна 3.3 В, поскольку это напряжение питания платы STM32F4 Discovery). Каналы осциллографа были подключены к линиям SDA и SCL, чтобы отслеживать сигналы этих линий. Графики были построены в MATLAB. На рисунке красным цветом показана линия тактов SCL, а синим – линия данных SDA. Мы видим, что при высоком уровне линии SCL, линия SDA переходит из высокого состояния в низкое. Это будет наш стартовый бит. Далее передаются данные. В конце при высоком уровне линии SCL, линия SDA переходит из низкого уровня в высокий. Это будет стоповый бит. Передача данных прекращается после стопового бита. Также на графике мы можем увидеть помехи на импульсах линий SDA и SCL.

Выводы

  1. Магистерская работа посвящена актуальной научной задаче исследования протоколов связи SPI и I2C для удаленного управления электроприводом.
  2. Были получены результаты работы гироскопа (графики) и получены от него данные с помощью использования протокола связи I2C.
  3. Исходя из результатов можно сказать, что протокол связи I2C имеет ряд таких главных по моему мнению достоинств для передачи данных: протокол простой, для управления другими устройствами нужен всего один микроконтроллер, используются всего два проводника для подключения многих устройств.
  4. В отличие от протокола связи SPI, шина I2C остается двухпроводной, независимо от количества подключенных к ней микросхем и является более стандартизированной, а также к ней возможно подключить несколько ведущих микросхем.
  5. Протокол SPI является более простым в плане программной реализации и на физическом уровне, что обуславливает надежность и быстродействие передачи данных. Все линии шины SPI являются однонаправленными.

При написании данного реферата магистерская работа еще не завершена. Ориентировочная дата завершения магистерской работы: июнь 2018 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.

Список источников

  1. Декодирование и анализ сигналов шин I2C, SPI, RS-232C, RS-422, RS-485 и UART с использованием осциллографов LeCroy // Обработка аналоговых сигналов микроконтроллерами. Выбор и задачи микроконтроллеров. – Режим доступа: http://kursovaya-referat.ru/docs/index-36975.html?page=8
  2. David Kalinsky and Roee Kalinsky. Introduction to Serial Peripheral Interface // embedded. – Режим доступа: https://www.embedded.com/electronics-blogs/beginner-s-corner/4023908/Introduction-to-Serial-Peripheral-Interface
  3. Mark Hughes. Back to Basics: SPI (Serial Peripheral Interface) // all about circuits. – Режим доступа: https://www.allaboutcircuits.com/technical-articles/spi-serial-peripheral-interface/
  4. Bernard Hyland. Understanding the ATE SPI (Serial Peripheral Interface) // maximintegrated. – Режим доступа: https://www.maximintegrated.com/en/app-notes/index.mvp/id/4609
  5. Александр Новицкий. Синхронный последовательный интерфейс SPI в микроконтроллерах от А до Я и его реализация в ADUC70XX фирмы Analog Devices // cyberleninka. – Режим доступа: https://cyberleninka.ru/article/n/sinhronnyy-posledovatelnyy-interfeys-spi-v-mikrokontrollerah-ot-a-do-ya-i-ego-realizatsiya-v-aduc70xx-firmy-analog-devices
  6. Олег Николайчук. Особенности микроконтроллерных архитектур с интерфейсом SPI // Elsnab. – Режим доступа: http://www.electrosnab.ru/files/silabs/articles/Stat_097.pdf
  7. Олег Вальпа. Современные 32-разрядные ARM-микроконтроллеры серии STM32: последовательный интерфейс SPI // Современная электроника. – Режим доступа: https://www.soel.ru/upload/clouds/1/iblock/e84/e84786cd2be538cfb9eb44a3938d1dcc/20140118.pdf
  8. Р.С. Каршов. Интерфейсная шина I2C // Научный журнал. – Режим доступа: https://scientificmagazine.ru/images/PDF/2017/19/interfejsnaya-shina-i2c.pdf
  9. Ксения Южная. Что такое SPI-интерфейс // fb.ru. – Режим доступа: http://fb.ru/article/125219/chto-takoe-spi-interfeys
  10. Степаненко С.В., Интерфейс связи процессора и внешних устройств в SYMBRION REPLICATOR // Портал магистров ДонНТУ. – Режим доступа: http://masters.donntu.ru/2010/fknt/stepanenko/diss/index.htm
  11. Степаненко С.В., Meister E., Шевченко О.Г. Использование последовательного периферийного интерфейса (SPI) для связи процессора и внешних устройств // Портал магистров ДонНТУ. – Режим доступа: http://masters.donntu.ru/2010/fknt/stepanenko/library/article02.htm
  12. Описание шины I2C // ООО ИТТ Лтд. – Режим доступа: http://itt-ltd.com/reference/ref_i2c.html
  13. Обзор шины SPI и разработка драйвера ведомого SPI устройства для embedded Linux (Часть первая, обзорная) // Хабрахабр. – Режим доступа: https://habrahabr.ru/post/123145/
  14. Waijung Blockset // Waijung Blockset. – Режим доступа: http://waijung.aimagin.com/index.htm