Дослідження та реалізація мультимайстерного режиму для I2C-інтерфейсу - Программирование, компьютеры и кибернетика дипломная работа

Дослідження та реалізація мультимайстерного режиму для I2C-інтерфейсу - Программирование, компьютеры и кибернетика дипломная работа




































Главная

Программирование, компьютеры и кибернетика
Дослідження та реалізація мультимайстерного режиму для I2C-інтерфейсу

Аналіз особливостей роботи I2C-інтерфейсу, фізичного середовища для його реалізації. Функціональні можливості модуля TWI мікроконтролерів AVR для забезпечення обміну даними за I2C-протоколом. Організація структури даних для мультимайстерного режиму.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

У дипломній роботі проведено дослідження можливостей організації мікроконтролерних мереж на основі I2C-інтерфейсу. Детально проаналізовано особливості роботи I2C-інтерфейсу, фізичного середовища для його реалізації, а також функціональні можливості модуля TWI мікроконтролерів AVR для забезпечення обміну даними за I2C-протоколом.
Найважливіша частина дипломної роботи стосується програмної підтримки мультимайстерного режиму роботи мікроконтролерної мережі за I2C-інтерфейсом з використанням апаратних переривань модуля TWI мікроконтролерів AVR.
Для мультимайстерного режиму реалізовані функції арбітражу. Усі розроблені програмні алгоритми для обміну даними за I2C-протоколом експериментально апробовані на фізичному обладнанні.
In the work our study were divided into several stages. The first stage was a detailed analysis of the characteristics of the I2C-interface, the physical environment for its implementation and the functionality of the module TWI AVR Microcontroller for data exchange for I2C-protocol. The next stage was studied implementation of data exchange for multy-master mode. For multy-master mode implemented features arbitration.
All examples of communication for I2C-protocol experimentally tested.
Будь-який мікроконтролер призначений для виконання функцій по керуванню або контролю фізичними параметрами конкретних об'єктів керування. Функції керування або контролю зводяться до оброблення і наступного використання цифрової двійкової інформації, що надходить від об'єктів керування по лініях зв'язку від різних пристроїв сполучення мікроконтролера з об'єктом. У якості таких пристроїв можуть бути датчики різних аналогових фізичних параметрів та пов'язані з ними нормуючі перетворювачі електричних сигналів, аналого-цифрові перетворювачі, датчики цифрової інформації та ін. З боку виведення інформації мікроконтролер взаємодіє з цифровими індикаторами, виконавчими механізмами, дисплеями, цифродрукуючими пристроями та іншими засобами запам'ятовування, зберігання і використання результатів обробки інформації.
З'єднання всього різноманіття зовнішніх пристроїв з шинами мікроконтролера здійснюється за допомогою інтерфейсів, які слід розуміти як уніфікований засіб об'єднання різних пристроїв в єдину систему. Будь-який інтерфейс повинен забезпечити вирішення наступних двох завдань.
По-перше, інтерфейс у своїй апаратній частині повинен забезпечити електричне з'єднання різних зовнішніх пристроїв з різними електричними і конструктивними параметрами з єдиною системою шин конкретного мікроконтролера. При цьому мають бути враховані такі параметри, як кількість ліній зв'язку, рівні і потужності електричних сигналів, довжина і завадозахищеність ліній зв'язку.
По-друге, інтерфейс повинен забезпечити гнучке програмне керування всіма підключеними зовнішніми пристроями. У цій частині інтерфейс повинен забезпечити не тільки працездатність зовнішніх пристроїв, але й узгодження по швидкодії різних зовнішніх пристроїв та центрального мікропроцесора.
Таким чином, під інтерфейсом слід розуміти уніфікований програмно-апаратний пристрій, який призначений для організації обміну інформацією між мікропроцесором та зовнішніми пристроями, об'єднаними в єдину систему.
За своїм призначенням інтерфейси бувають внутрішніми і зовнішніми. Внутрішній інтерфейс об'єднує ВІС мікропроцесора, модулі пам'яті і засоби управління вводом-виводом. Зовнішній інтерфейс забезпечує сполучення інформаційних шин МК з зовнішніми пристроями.
Сучасні мікроконтролери деякі зовнішні інтерфейси обміну даними можуть підтримувати на програмному рівні, а для деякий, набагато складніших за своєю структурою, у них є передбачені окремі периферійні модулі. Серед найбільш популярних інтерфейсів можна відзначити такі: USB, Ethernet, САN, UART, I2S, I2C, SSI/SPI.
Ethernet - один з найпоширеніших на сьогоднішній день стандартів організації локальних мереж. Модуль Ethernet, переважно є апаратно реалізований в мікроконтролерах типу ARM.
Шина USB (Universal Serial Bus) з'явилася порівняно недавно - версія першого затвердженого варіанту стандарту з'явилася 15 січня 1996 року. Розробка стандарту була ініційована авторитетними фірмами - Intel, DEC, IBM, NEC, Northen Telecom і Compaq. На сьогоднішній день USB є одним з найбільш затребуваних інтерфейсів передачі даних. Шина строго орієнтована, має поняття «головний пристрій» (Host) і «периферійні пристрої» (Device).
Існує декілька версій специфікації USB: USB 1.0, USB 1.1, USB 2.0, USB 3.0.
Для пристроїв USB 2.0 регламентовано три режими роботи:
* Low-speed, 10 ... 1500 Кбіт/cек (використовується для інтерактивних пристроїв: клавіатури, миші, джойстики);
* Full-speed, 0,5 ... 12 Мбіт/сек (аудіо-, відеопристрої);
* Hi-speed, 25 ... 480 Мбіт/сек (відеопристрої, пристрої зберігання інформації).
Мережевий протокол CAN (Controller Area Network) був розроблений в 1987 році фірмою Bosch для мультипроцесорних автомобільних систем реального часу. CAN оптимізований для систем, в яких передається порівняно невеликий обсяг інформації зі швидкістю до 1 Мбіт/сек. Основні переваги CAN-протоколу - висока завадостійкість, надійність, можливість отримання повідомлень всіма вузлами (контролерами даних) із синхронізацією за часом, неруйнівний арбітраж доступу до шини, мала ймовірність пропуску помилки. Прийнята в CAN-інтерфейсі схема передачі повідомлень дозволяє її розширювати і модернізувати: нові пристрої прийому даних можна додавати до мережі без зміни існуючих програмних засобів і порушення роботи старої системи. Все це привернуло увагу розробників і користувачів різних розподілених систем керування, що використовуються, окрім транспортних засобів, у промисловості, енергетиці, медичному приладобудуванні.
UART (Universal Asynchronous Receiver / Transmitter) - напевно, найвідоміший інтерфейс. Можливо, зв'язок через асинхронний послідовний порт відходить у минуле, проте складно знайти контролер, який не має в складі периферії UART.
IrDA являє собою абревіатуру Infrared Data Association - асоціації, яка займається розробкою специфікацій для обміну даними по оптичному інтерфейсу за допомогою інфрачервоного світла. Така технологія також згодом отримала назву IrDA.
Досвід показує, що серед інших бездротових ліній передачі інформації інфрачервоний (ІЧ) відкритий оптичний канал є недорогим і зручним способом передачі даних на невеликі відстані (до декількох десятків метрів). Зокрема, він ефективний для забезпечення бездротового зв'язку між персональним комп'ютером і периферійними пристроями.
LIN (Local Interconnect Network) - стандарт промислової мережі розроблений консорціумом європейських автовиробників та інших відомих компаній, включаючи Audi AG, BMW AG, Daimler Chrysler AG, Motorola Inc.
Протокол LIN призначений для створення недорогих локальних мереж обміну даними на коротких відстанях. Він служить для передачі вхідних впливів, станів перемикачів на панелях управління, а також для відповідних дій різних пристроїв, що з'єднані в одну систему через LIN і відбуваються в так званому «людському» часовому діапазоні (порядку сотень мілісекунд).
I2S (Inter-Integrated Circuit Sound) - інтерфейс призначений для передачі цифрових аудіоданих.
SSI (Synchronous Serial Interface) - популярний інтерфейс для послідовного обміну даними між мікросхемами. Поряд з I2C він належить до найбільш широко використовуваних інтерфейсів для з'єднання мікросхем. SSI дозволяє підключати до контролера різного роду мікросхеми, в т.ч. запам'ятовуючі пристрої (EEPROM, Flash-пам'ять, SRAM), годинник реального часу (RTC), АЦП / ЦАП, цифрові потенціометри, спеціалізовані контролери та ін.
На відміну від стандартного послідовного порту, SSI є синхронним інтерфейсом, тобто будь-яка передача в ньому синхронізована із загальним тактовим сигналом, що генерується головним пристроєм. Приймаюча периферія синхронізує отримання бітової послідовності з тактовим сигналом. До одного послідовного периферійного інтерфейсу провідного пристрою-мікросхеми може приєднуватися кілька мікросхем. Головний пристрій вибирає підлеглий пристрій для передачі, активуючи сигнал «вибір кристалу» на підлеглій мікросхемі.
Найбільшої популярності для мікроконтролерних систем набув I2C-інтерфейс завдяки своїй простоті реалізації, низької собівартості та відносно непоганої швидкості роботи.
Список можливих застосувань I2C-інтерфейсу:
– доступ до модулів пам'яті EEPROM;
– доступ до низькошвидкісних ЦАП/АЦП;
– доступ до найрізноманітніших давачів;
– регулювання контрастності, насиченості і колірного балансу моніторів;
– управління світлодіодами, в тому числі в мобільних телефонах;
– читання інформації з датчиків моніторингу і діагностики устаткування, наприклад, термостат центрального процесора або швидкість обертання вентилятора охолодження;
– читання інформації з годинника реального часу (кварцових генераторів);
– управління включенням/виключенням живлення системних компонент;
– інформаційний обмін між мікроконтролерами.
На сьогоднішній день лише асортимент продукції Philips включає більше 150 КМОП і біполярних I2C-сумісних пристроїв. Усі ці пристрої мають вбудований інтерфейс, який дозволяє їм зв'язуватися один з одним по I2C-шині. Це конструкторське рішення вирішує безліч проблем з'єднання різних пристроїв, які зазвичай виникають при розробці цифрових систем.
Переваги використання I2C-інтерфейсу:
– необхідно лише один мікроконтролер для керування ряду пристроїв;
– використовується лише дві лінії вводу/виводу загального призначення;
– стандарт передбачає «гаряче» підключення і відключення пристроїв у процесі роботи системи;
– вбудований у мікросхеми фільтр фільтрує сплески, забезпечуючи цілісність даних.
Переваги для конструкторів при використанні I2C-інтерфейсу:
– оскільки такі мікросхеми підключаються безпосередньо до шини без будь-яких додаткових електричних кіл, з'являється можливість модифікації і модернізації системи прототипу шляхом підключення і відключення пристроїв від шини;
– блоки на функціональній схемі відповідають мікросхемам, перехід від функціональної схеми до принципової відбувається швидко;
– немає потреби розробляти шинні інтерфейси, так як шина вже інтегрована в мікросхеми;
– інтегровані адресація пристроїв і протокол передачі даних дозволяють системі бути повністю програмно обумовленою;
– одні і ті ж типи мікросхем можуть бути часто використані в різних додатках;
– час розробки знижується, так як конструктори швидко знайомляться з часто використовуваними функціональними блоками і відповідними мікросхемами;
– мікросхеми можуть бути додані або зняті зі системи без впливу на інші мікросхеми, що підключені до шини (якщо їхня робота незалежна);
– проста діагностика збоїв та відлагодження; порушення в роботі легко відслідковуються;
– час розробки програмного забезпечення може бути зменшене за рахунок повторного використання розробленої бібліотеки для роботи з пристроями на I2C-шині.
Мета та завдання дипломної роботи: дослідити та алгоритмічно забезпечити роботу мультимайстерного режиму мікроконтролерної мережі на основі I2C-інтерфейсу.
Практичне значення отриманих результатів: розроблений програмний код мовою високого рівня Сі може використовуватися як готова бібліотека при роботі з пристроями та мережами, що працюють за I2C-інтерфейсом.
Запропонована алгоритмічна реалізація мультимайстерного режиму роботи I2C-шини апробована шляхом натурного експерименту.
1.1.1 Аналіз особливостей роботи I2C-інтерфейсу
Інтерфейс I2C (IIC, Inter-Integrated Circuit) розроблений ще на початку 1980-х компанією Philips (зараз NXP Semiconductors) та представляє собою двонаправлену 2-провідну шину, що використовується для контролю та обміну даними з інтегральними схемами.
I2C складається з двох ліній: SDA (даних) та SCL (тактування), які підтягнуті через резистори до напруги живлення та керуються з боку пристроїв через відкритий колектор чи відкритий стік (рис. 1.1).
Інтерфейс передбачає різний набір швидкостей обміну з 7-ми і 10-ти бітною адресацією пристроїв на I2C-шині (розширення можливостей інтерфейсу здійснювалися у різні роки):
– Стандартний режим (Standard-mode): двонаправлена передача даних зі швидкістю до 100 кбіт/сек. Адреса - 7 біт, адресація до 112 пристроїв на I2C-шині (1982 р. Оригінал).
– Швидкісний режим (Fast-mode, Fm): двонаправлена передача даних зі швидкістю до 400 кбіт/сек. Розширення адресного простору до 10 біт, адресація до 1008 пристроїв на I2C-шині (1992 р. V.1.0).
– Високошвидкісний режим (High-speed mode, Hs): двонаправлена передача даних зі швидкістю до 3,4 Мбіт/сек. (1998 р. V.2.0).
– Швидкісний режим плюс (Fast-mode plus, Fm+): двонаправлена передача даних зі швидкістю до 1 Мбіт/сек. (2007 р. V.3.0).
– Ультрависокошвидкісний режим (Ultra Fast-mode, UFm): однонаправлена передача даних зі швидкістю до 5 Мбіт/сек. для нових USDA та USCL ліній, що використовують двотактну логіку без підтягуючих резисторів. Пристрої для однонаправленої UFm-шини не є сумісними з пристроями для двонаправленої I2C-шини. (2012 р. V.4.0).
Максимальна кількість пристроїв, що приєднуються до одної I2C-шини, обмежується максимальною ємкістю шини у 400 пФ та здатністю адресації цих пристроїв.
Рис. 1.1 Під'єднання пристроїв до I2C-шини
У вільному стані (коли ніхто нічого не передає) на шині присутній високий рівень «1», що забезпечують підтягуючі резистори до напруги живлення. Пристрої до I2C-шини під'єднуються за принципом монтажного «І»: коли вихідний транзистор (рис. 1.1) виводу SDA чи SCL пристрою закритий, тоді плив з боку пристрою на лінію відсутній, і на лінії присутній високий рівень «1» через підтягуючий резистор до живлення, якщо ж вихідний транзистор відкритий - він підтягує відповідну лінію до землі, і на ній встановлюється низький рівень «0». Тобто, передача/прийом сигналів здійснюється пристроями шляхом подачі/зняття «землі» на/з відповідної лінії I2C-шини (подали на лінію землю - на лінії «0»; відпустили лінію - «1» за рахунок підтягуючих резисторів до живлення).
На рис. 1.1 трикутники на вході вказують, що входи високоомні і не впливають на рівні сигналів на лініях, і лише зчитують значення цих рівнів. Переважно використовуються рівні 5В та 3,3В напруги живлення VDD. Для більшості пристроїв рівні розпізнаються як: високий рівень «1» - від 0,7·VDD, низький рівень «0» - до 0,3·VDD.
Підтягуючі резистори мають номінали від декількох кОм до декількох десятків кОм. Чим вища швидкість, тим менший номінал резистора необхідно встановити. При більшому номіналі резистора лінія буде довше встановлюватися в «1» (за рахунок перезаряду паразитної ємності між дротами). Оптимально вибирають 4,7 або 10 кОм.
Більшість популярних мікросхем (давачі, годинники, АЦП, мікроконтролери AVR і т.п.) працюють на швидкості 100 чи/та 400 кГц та мають 7-бітну адресацію. Тому розглянемо I2C-протокол саме для цього формату.
Керуючі сигнали та формат посилки. Обмін даними на I2C-шині здійснюється у чітко визначеному порядку. За керування обміном даними на шині відповідає головний пристрій (master), хоча на шині може бути присутні декілька головних пристроїв, але керувати передачею у певний момент може лише один з них. Для цього він має «захопити» шину, виконати обмін даними з необхідними пристроями на шині та «відпустити» шину. Трішки далі ми детально розглянемо одномастерний та мультимастерний режими.
Розберемо основні сигнали, що можуть бути присутні на шині.
Передача даних на лінії SDA відбувається послідовно біт за бітом, згідно поданих імпульсів на лінії SCL. Читання біту на лінії SDA здійснюється у момент, коли на синхролінії SCL присутній високий рівень «1». Тому протокол вимагає, щоб поки присутня «1» на синхролінії, сигнал даних SDA не змінювався. Передача байту даних здійснюється, починаючи зі старшого біту. Синхронізацію на шині забезпечує головний пристрій, той що проявив ініціативу для обміну даних.
Для початку передачі даних та її завершення головний пристрій формує на шині відповідні сигнали START та STOP. Між цими сигналами шина вважається занятою, тобто інші головні пристрої не намагаються нічого передавати та чекають поки шина не звільниться.
Сигнал START (S) розпізнається на шині за спадаючим фронтом сигналу SDA при високому рівні «1» на синхролінії SCL.
Сигнал STOP (P), навпаки, розпізнається за зростаючим фронтом сигналу SDA при високому рівні «1» на синхролінії SCL. Сигнал STOP обов'язково має слідувати після сигналу START.
Ще одним керуючим сигналом є «повторний старт» REPEAT START (Sr). За своєю формою він ідентичний сигналу START. Після сигналу START головний пристрій повинен передати адресний байт (7-бітна адреса + 1 біт напряму обміну) підлеглому пристрою, з яким він хоче виконати обмін даними. Якщо головний пристрій хоче змінити напрям передачі чи звернутися до іншого пристрою, то він має видати на шину сигнал REPEAT START та продовжити передачу. Це дає йому можливість виконувати обмін даними з різними пристроями, не втрачаючи контроль за шиною (інші головні пристрої не будуть його перебивати). Як тільки він видасть сигнал STOP, інший головний пристрій може забрати керування шиною собі. Нюанси, що стосуються одночасного захоплення шини декількома головними пристроями та визначення пріоритету надання контролю за шиною, будуть викладені при розгляді мультимастерного режиму.
Після кожного переданого байту (адреси чи даних) слідує 9-й біт підтвердження ACK (від слова acknowledge). Той, хто прийняв байт, має видати на лінію даних SDA підтвердження ACK (A), тобто подати «0» на лінію. Наприклад, ми видали на лінію адресу пристрою, з яким хочемо здійснювати обмін. Якщо пристрій присутній, і він розпізнав свою адресу, тоді він це підтвердить (A), притиснувши лінію до землі («0»). Якщо пристрій відсутній, тоді на лінії ніхто не відгукнеться, і на ній буде присутній NACK (N), тобто високий рівень «1».
Якщо підлеглий пристрій не встигає обробити отриману від головного пристрою інформацію, тоді він може вносити паузи, виставляючи на синхролінії SCL низький рівень «0».
Будь-яка I2C-посилка складається зі старту, адресного пакету, пакету даних, (рестарту, адресного пакету, пакету даних і т.д.) та стопу. Усі пакети завжди є 9-ти бітними.
Адресний пакет формується головним пристроєм та завжди слідує після сигналу старту (рестарту). Він містить 7-бітний адрес підлеглого пристрою (першим передається старший біт), біт напряму обміну W=0 (передача) чи R=1 (прийом) та біт підтвердження ACK від підлеглого пристрою. Підлеглі пристрої можуть мати довільний 7-бітний адрес, за винятком нульового та адресів із діапазону 1111ххх, які є зарезервованими. Нульовий адрес використовується для виконання загальних викликів, тобто передачі даних для усіх підлеглих пристроїв на шині, для яких є дозволені загальні виклики.
Пакет даних містить 8 біт даних (першим передається старший біт) та біт підтвердження ACK від підлеглого пристрою. Якщо пакет даних завершується NACK, тоді передача даних має бути припинена, і має слідувати або повторний старт, або стоп.
Якщо головний пристрій (master) націлений лише на передачу даних, то посилка має складатися зі сигналу START, адресного пакету з бітом напряму W (передача) та довільної кількості пакетів з даними, що передаються для підлеглого пристрою (slave). Посилка обов'язково завершується сигналом STOP. Якщо підлеглий пристрій не підтвердить якийсь з пакетів (NACK), тоді подальший прийом зупиняється, а на шину видається сигнал STOP.
Якщо головний пристрій (master) націлений лише на прийом даних, то посилка має складатися зі сигналу START, адресного пакету з бітом напряму R (прийом) та довільної кількості пакетів з даними, що передаються підлеглим пристроєм. Посилка обов'язково завершується сигналом STOP. Після кожного прийнятого головним пристроєм байту даних він виставляє біт підтвердження ACK. Якщо головний пристрій не хоче далі приймати дані, то він обов'язково виставляє NACK та завершує посилку сигналом STOP.
в) Комбінований формат передбачає, що головний пристрій в межах однієї посилки буде як приймати, так і передавати дані до підлеглого пристрою чи навіть здійснювати обмін даними з декількома підлеглими пристроями. Наприклад, для зчитування поточного часу з мікросхеми годинника PCF8583 мікроконтролер формує на шині сигнал START, передає адресу пристрою + W, далі передає пристрою байт даних, що містить адресу регістра з якого потрібно читати дані. Потім для зміни напряму обміну даними формує на шині REPEAT START, передає адресу пристрою + R, а далі читає з регістрів годинника необхідні байти (секунди, хвилини і т.п.). Мікросхема годинника автоматично збільшує на одиницю адресу регістра, з якого необхідно буде далі зчитувати дані. Якщо МК зчитав необхідні йому байти з даними, то для останнього зчитаного байту він обов'язково має видати NACK та завершити посилку сигналом STOP.
10-бітна адресація представляє собою розширення для 7-бітної, і полягає у тому, що спершу передається стандартний адресний пакет, що містить п'ять бітів 11110, які вказують, що це 10-розрядний адрес, два старших біти адреси та біт W/R. У другому байті передаються 8 молодших біти адреси. Передача даних передбачає 2 байти з адресою за якими слідують байти з даними. Прийом ж даних передбачає сигнал повторного старту, оскільки перший адресний байт спершу вказує на передачу (W) другого адресного байту, а потім змушений переключитися на прийом, відіславши при цьому лише перший адресний байт з бітом на прийом (R).
В одній посилці також можуть поєднуватися як передача, так і прийом даних, а також і обмін даними з декількома пристроями.
1.1.2 Аналіз TWI-модуля мікроконтролерів AVR
I2C-інтерфейс для МК AVR має назву TWI (Two-wire Serial Interface, двопр овідний послідовний інтерфейс).
Він реалізує базову версію I2C-інтерфейсу та підтримує швидкість обміну до 400 кГц. МК можуть мати лише 7-бітну адресу.
Обмін даними по I2C-протоколу здійснюється через відповідні виводи SDA та SCL, що суміщені з виводами одного з портів вводу/виводу. При використанні цих виводів модулем TWI до них можуть бути підключені внутрішні підтягуючі резистори, що дає можливість у деяких випадках обійтися без зовнішніх резисторів, що вимагаються інтерфейсом. Для цих виводів в модулі встановлені обмежувачі швидкості наростання фронтів сигналів, а також фільтри, що відсікають паразитні імпульси тривалістю менше 50 нсек.
Функціонування модуля TWI забезпечується п'ятьма регістрами:
TWBR - регістр швидкості передачі. Він задає частоту сигналів на виводі SCL. Значення регістра для вказаної швидкості може бути обчислене за такою формулою
де TWPS - значення 2-х молодших розрядів регістра TWSR, що виконують функцію подільника. Значення швидкості має бути, як мінімум, меншим у 16 разів за тактову частоту МК. Також значення TWBR має бути не меншим за 10, бо інакше під час передачі байта можуть генеруватися некоректні сигнали на виводах SDA та SCL.
TWAR - регістр адреси. Старші 7 біт містять I2C-адресу для МК для його роботи у режимі Slave. Молодший розряд TWGCE вказує, чи для МК дозволені загальні виклики (за адресою 0x00). Контроль адресних пакетів виконується навіть у сплячому режиму МК, що дає можливість переводити МК у робочий режим у випадку його адресації.
Для передачі по I2C-шині у цей регістр заносяться як адреса+R/W підлеглого пристрою, так і байти даних, що мають бути йому передані.
Також звідси зчитуються і отримані модулем TWI байти з I2C-шини. TWCR - регістр керування модулем TWI. Усі маніпуляції, що необхідно здійснити на I2C-шині виконуються за рахунок виставлення відповідних бітів (табл. 1.1) цього регістра.
Таблиця 1.1 Розряди регістра керування TWCR
Прапорець переривання від модуля TWI
Дозвіл на підтвердження ACK («1» - ACK,
«0» - NACK і у режимі slave модуль TWI неактивний)
Прапорець конфлікту запису (виставляється при записі у регістр TWDR, коли прапорець переривання TWINT скинутий)
Дозвіл на переривання від модуля TWI
TWSR - регістр статусу. Виставлення прапорця TWINT регістра керування TWCR сигналізує, що модуль TWI виконав поточну задачу і очікує подальших дій програми.
У цей час у регістрі статусу у його старших п'яти розрядах міститься певний код, згідно якого можна визначити стан I2C-шини. Тому програма повинна зчитати у проміжну змінну байт значення регістра TWSR, числовою маскою встановити нулі у трьох молодших розрядах та, порівнюючи отриманий код зі таблицею значень в інструкції виробника на МК, вибрати подальші дії TWI-модуля.
Підсумувавши огляд літературних джерел, можна дійти наступного висновку. Для нашого дослідження необхідно підняти та вирішити такі питання:
1) Аналіз роботи модуля TWI мікроконтролера AVR з послідовною шиною за I2C-інтерфейсом.
2) Аналіз роботи модуля TWI МК AVR з I2C-шиною в мультимайстерному режимі.
3) Розробити структуру даних для забезпечення обміну даними за I2C-протоколом, що передбачає використання апаратних переривань модуля TWI мікроконтролера AVR.
4) Розробити мікроконтролерну мережу на основі I2C-інтерфейсу.
Перше питання передбачає аналіз модуля TWI для обміну даними з підлеглими пристроями та розроблення бібліотечних функцій, що будуть забезпечувати роботу модуля з I2C-шиною у звичайному режимі (наявний лише один головний пристрій).
Друге питання передбачає аналіз модуля TWI для обміну даними як з підлеглими пристроями, так і з іншими мікроконтролерами, тобто функціонування I2C-шини в мультимайстерному режимі. Це питання потребує також дослідження функції арбітражу для мікроконтролерів.
Третє питання передбачає забезпечення функціонування модуля TWI з використанням декількох кільцевих буферів. Для цього необхідно розробити структуру внутрішнього протоколу для формування I2C-посилки та її запису у вихідний буфер. Також слід передбачити ще декілька додаткових буферів для прийому даних, оброблення поточних задач, а також для функціонування модуля TWI в режимі slave.
Четверте питання стосується вже виключно реалізації розроблених програмних бібліотек для роботи за I2C-протоколом з конкретними прикладами мікросхем.
модуль мікроконтролер інтерфейс протокол
2. ДОСЛІДЖЕННЯ РОБОТИ I2C-ІНТЕРФЕЙСУ AVR-МІКРОКОНТРОЛЕРА
Було передано адреса+Write та отримано ACK
Було передано адреса+Write та отримано NACK
Був переданий байт даних та отримано ACK
Був переданий байт даних та отримано NACK
Було передано адреса+Read та отримано ACK
Було передано адреса+Read та отримано NACK
Був прочитаний байт даних та передано ACK
Був прочитаний байт даних та передано NACK
– якщо прочитано байт даних, то він з регістра TWDR заноситься у вхідний буфер;
– якщо передача завершилася не успішно (NACK з боку підлеглого пристрою), тоді шукаємо у вихідному буфері найближчу команду повторного старту чи стопу;
– для решта типових команд лише викликається функція I2C_Action(), яка виконає наступну команду для I2C-шини, що записана у вихідному буфері модуля TWI.
Функція I2C_Action() призначена для зчитування з вихідного буфера модуля TWI поточної команди чи даних та виводу їх на I2C-шину.
2.3 Практичне застосування розробленої алгоритмічної бібліотеки для обміну даними з периферією за I2C-протоколом
До I2C-шини в нас підключені: мікроконтролер ATmega32A, годинник реального часу (RTC) PCF8583 та пам'ять EEPROM M24C08. Значення, зчитані з мікросхеми годинника, будемо передавати для візуалізації на персональний комп'ютер.
Зв'язок з ПК реалізований на основі мікросхеми FT232RL.
Мікросхема FT232RL - міст між інтерфейсами USB і UART. З боку ПК, за допомогою додаткових комп'ютерних драйверів, мікросхема ідентифікується як COM-порт, а з боку пристрою має інтерфейс UART. Завдяки мікросхемі FT232RL можна дуже просто підключити свій пристрій до ПК через інтерфейс USB, не вникаючи в його особливості. Дана мікросхема дуже надійна, стабільна, підтримується всіма операційними системами.
Характеристики та особливості мікросхеми FT232RL:
– одночіповий перехідник з USB в асинхронний послідовний інтерфейс передачі даних (UART);
– протокол USB повністю реалізований у мікросхемі;
– інтерфейс UART підтримує режими передачі 7 або 8 біт даних, 1 або 2 стопових біта, різні режими контролю парності;
– швидкості передачі від 300 бод до 3 мегабод для RS422 / RS485 / TTL та від 300 бод до 1 мегабод для RS-232;
– можливість виведення стану прийому/передачі на зовнішні світлодіоди;
– можливість подачі тактового сигналу на зовнішні мікросхеми, контролери, ПЛІС (частоти 6, 12, 24 і 48 МГц);
– висока здатність навантаження виходів;
– вбудована енергонезалежна пам'ять EEPROM об'ємом 1024 байт.
Мікросхеми постачаються із запрограмованою EEPROM, тому не потрібно програмувати EEPROM для початку роботи.
При роботі з годинником реального часу PCF8583 виставлення значень часу здійснюється за допомогою додаткових кнопок, підключених до порту B. Спершу необхідно натиснути кнопку «Редагування», потім за допомогою інших кнопок виставити години та хвилини (кнопка «Секунди» буде лише обнулювати значення), та ще раз натиснути кнопку «Редагування» для передачі зміненого значення часу до мікросхеми годинника.
PCF8583 являє собою оперативну пам'ять, ємністю 256 байт, у якій перші 8 байт використовуються для годинника, календаря і функцій лічильника. Наступні 8 байт можуть бути запрограмовані на використання в якості регістрів сигналізації. Решта 240 байт відносяться до оперативної пам'яті. Вбудований регістр адреси автоматично нарощується після читання або запису кожного байта даних. Усі числа в регістрах годин за замовчуванням зберігаються в BCD форматі.
Адреса пристрою на I2C-шині встановлена виробником як 101000A0. Вивід А0 ми подали на землю, отже цей біт дорівнює 0.
Зчитування поточного часу з мікросхеми PCF8583 виконується у підпрограмі переривання таймера №1, який налаштований на інтервал 0,5 сек. У підпрограмі за допомогою відповідних функцій формується I2C- посилка, при цьому логічна змінна logicEdit повинна дорівнювати нулю. За допомогою цієї змінної блокується зчитування часу з годинника у момент, коли ми редагуємо поточні значення часу.
Отримані значення з годинника заносяться у вхідний буфер та по завершенню посилки (про це сигналізує змінна I2Ctask) в основній програмі зчитуються з буфера у змінні secon
Дослідження та реалізація мультимайстерного режиму для I2C-інтерфейсу дипломная работа. Программирование, компьютеры и кибернетика.
Сочинение На Тему Общение С Мамой
Реферат: Любовная Лирика А.С. Пушкина
Реферат: Hey Hey Hey Essay Research Paper The
Горы России Реферат 4 Класс
Нормы Оформления Реферата По Госту
Контрольная работа по теме Психологические особенности деятельности по выработки и исполнению управленческих решений
Лабораторная Работа По Физике 7 Астахова
Курсовая работа по теме Стороны обязательства
Реферат: Исследование мотивации достижения в учебном процессе
13х 10 7х 2 Контрольная Работа
Дипломная работа: Содержание и формы повышения квалификации педагогов дополнительного образования
Дипломная работа по теме Исследование оснований выбора профильного обучения в конце девятого класса
Курсовая работа: Институт омбудсмана в области защиты прав несовершеннолетних
Курсовая работа по теме Роль семьи в психосоматическом развитии ребенка
Дипломная работа: Геоинформационная система "Компас-2" и возможности её использования для ведения природных кадастров России
Курсовая работа по теме Особенности памяти
Реферат: Оценка экономической эффективности
Курсовая работа по теме Риски в управлении
Курсовая работа: Совершенствоание организационной структуры предприятия
Курсовая работа по теме Обязательное страхование в РФ
Особенности управления торгово-технологическим процессом в организациях розничной торговли - Маркетинг, реклама и торговля курсовая работа
Синдром Дауна - Медицина реферат
Аутсорсінг як чинник розвитку інформаційних технологій - Программирование, компьютеры и кибернетика курсовая работа


Report Page