Русский   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