Рисунок 3 - Схема підключення прийомопередавачів інтерфейсу RS-485 до лінії зв’язку
Стандарт вимагає, щоб при закорочені виходів передавача на шину живлення передавач не виходив з ладу. Тому в усіх мікросхемах прийомопередавачів передбачено схему захисту від перевантаження за струмом і від перегріву корпусу. При температурі корпусу
С передавач вимикається.Прикладена до лінії зв’язку напруга в деяких випадках може перевищувати допустиму синфазну напругу, тому найбільш ефективний захист від електромагнітних перевантажень лінії - гальванічна розв’язка, яка забезпечує захист системи але не обмежує напругу, прикладену до лінії. Для гальванічної розв’язки необхідно застосовувати оптрони і додаткове джерело живлення, гальванічно розв’язане з системою. Рекомендується захистити прийомопередавач за допомогою зовнішніх стабілітронів, які обмежують напругу у лінії.
Навіть при великий кількості передавачів на лінії може бути часовий інтервал коли всі вони знаходяться у високоімпендансному стані. Такий стан лінії називають холостим. В цьому випадку на лінії відбуваються флуктуації напруги, і стан лінії є невизначеним. В результаті цього вхід приймача може знаходитися в будь-якому стані (логічна одиниця або логічний нуль). Логічний рівень залежить від рівня шумів і полярності напруги на лінії. Такий стан приймача не є бажаним, тому як може привести до помилок в роботі системи. Такий випадок виникає не тільки при "холостій лінії", але і при коротко замкненій.
Є два шляхи уникнути невизначеності: апаратний і програмний. Програмний метод полягає в тому, що програмне забезпечення створюється таким чином, щоб запобігти виникненню холостого стану лінії.
Апаратний метод передбачає захист як при "холостій" лінії, так і при коротко замкненій. В мікросхемах прийомопередавачів RS-485 як правило передбачений захист за допомогою резисторів, підключених між неінвертуючим входом і шиною живлення та між інвертуючим входом і загальною шиною.
Важливим фактором, який необхідно враховувати при використанні інтерфейсу RS-485, є узгодження лінії зв’язку за допомогою резисторів, як наведено на рис.3. При роботі на неузгодженій лінії виникає міжсимвольна інтерференція і відповідно помилки при обміні даними. Типове значення хвильового опору витої пари знаходиться в межах від 100 до 120 Ом.
Типова топологія шини USB наведена на рис.4. Керування шиною здійснює так званий хост. Хост призначений для знаходження, підключення/відключення пристрою, керування потоками даних, контролю статусу пристрою, розподілу внутрішнього живлення між підключеними пристроями. На шині завжди існує тільки один хост, тому направлення передачі даних прийнято визначати з його позиції. Якщо передача відбувається від хоста до пристрою, то потік має напрямок OUT і називається downstream. При передачі від пристрою до хосту потік має направлення IN і називається upstream.
Рисунок 4 - Типова топологія шини USB
Пристрої, які підключаються до шини, є підлеглими і діляться на два види: хаб і пристрій, який виконує деяку функцію. Хаб служить розгалуджувачем шини і надає свої порти для підключення інших пристроїв, і хабів в тому числі. Хост періодично запитує статус хаба і за його зміною визначає підключення нового пристрою чи відключення працюючого.
Гілки, які формує хаб, закінчуються підключеним пристроєм, який виконує визначену функцію. Частина портів хаба залишається вільною, вони заборонені до підключення нового пристрою і на роботу шини не впливають.
Підлеглі пристрої не можуть самостійно посилати дані по шині, всі операції виконуються ними тільки за дозволом хосту. Але, якщо хост перевів пристрій в режим зниженого споживання енергії, то при переході в активний режим пристрій сигналізує про зміну свого статусу, не чекаючи дозволу хосту. Пристрої можуть використовувати власне джерело живлення чи внутрішнє джерело шини USB. Сумарний струм, який споживається пристроями від джерела шини USB, не повинен перевищувати 1А. Допускається підключення до шини до 127 підлеглих пристроїв.
На шини USB доступні три режими роботи: низькошвидкісний, повношвидкісний і високошвидкісний. В першу чергу швидкість роботи шини визначає хост, а при підключенні пристрій налагоджується на доступну максимальну швидкість. Найвища швидкість передачі досягається при роботі пристрою у високошвидкісному режимі роботи.
Для виявлення підключення нового пристрою до шини, хост періодично запитує статус хабів. В момент виявлення пристрою він не має адреси і не сконфігурований, тому хост звертається до нього за нульовою адресою через спеціальну контрольну точку. Першою командою хост присвоює пристрою унікальний адрес, з яким він працює до моменту відключення. Далі, використовується команда зчитування опису пристрою і опису всіх його можливих конфігурацій. Після цього хост командою встановлює першу доступну конфігурацію, не аналізуючи її призначення. Після цього пристрій вважається сконфігурованим і готовим до роботи. Отримана інформація дозволяє операційній системі ідентифікувати пристрій і завантажити відповідний драйвер. Подальше керування пристроєм передається драйверу.
На шині USB використовується пакетна передача інформації. Для обміну одним пакетом даних хост і пристрій виконують цикл, який уявляє собою послідовність "запит даних - підтвердження". Службова інформація, яка супроводжує корисні дані, однозначно визначає адресата, цілісність даних і готовність пристрою до наступного циклу. Всю інформацію, яка передається по шині USB, можна розділити на наступні типи:
пакети запиту;
пакети даних;
маркери підтвердження;
інші пакети.
Пакет запиту - це пакет службової інформації. Хост посилає запит перед обміном даними чи для перевірки готовності. Пакет запиту (рис.5) складається з ідентифікатора пакету (маркер запиту), адреси пристроїв ADDR, адреси точки ENDP і контрольної суми CRC5.
Рисунок 5 - Пакет запиту
Запити, доступні хосту, мають наступні призначення:
OUT - хост починає передачу даних точці ENDP пристрою ADDR;
IN - хост чекає дані з точки ENDP пристрою ADDR;
SETUP - хост починає контрольну передачу даних точці ENDP пристрою ADDR;
PING - хост перевіряє готовність точки ENDP пристрою ADDR;
Пакет даних завжди передається вслід за запитом. До складу пакету (Рис.6) входять дані і контрольна сума. CRC16. На розмір пакету даних накладають обмеження тип передачі і режим роботи шини USB.
Рисунок 6 - Пакет даних
Існують наступні маркери даних:
DATA0 - парний пакет даних;
DATA1 - непарний пакет даних;
DATA2, МDATA3 - додаткові маркери, які використовуються при ізохронному обміні на високошвидкісній шині.
Маркери даних дозволяють не тільки ідентифікувати пакет, але ще і контролювати цілісність потоку за рахунок їх визначеної послідовності.
Маркери підтвердження (рис.7) призначені для повідомлення про результати обміну даними і стану точки пристрою.
Рисунок 7 - Маркер підтвердження.
Маркери вміщують наступну інформацію:
АСК - дані отримані без помилок і будуть оброблені;
NAK - для точки OUT - дані отримані без помилок, але нема можливості їх обробити, і тому потрібна повторна передача даних. Для точки IN - дані не готові, хост може повторити запит пізніше;
STALL - точка находиться в стані HALT і не може виконувати свої функції без втручання хосту. Хост не повинен повторювати запит;
NYЕT - дані отримати без помилок і будуть оброблені. Наступний пакет точка прийняти не готова. Даний маркер має місце на високошвидкісній шині для передачі BULK і використовується точками OUT.
До інших пакетів відносяться SOF, PRE, ERR, SPLIT, які мають спеціалізоване призначення. Так наприклад пакет SOF використовується для синхронізації і передається хостом з визначеним інтервалом часу.
На шині USB існує чотири типи передачі даних. Вони відрізняються передаваємим об’ємом даних, пріоритетом доставки і системою контролю і усунення помилок.
Найбільш частіше використовується тип - BULK. Для даного типу передачі гарантована доставка даних без помилок, при цьому час доставки не гарантовано і залежить від завантаженості шини. Контроль даних на рівні пакету - сумою CRC16 і на рівні потоку, де парний та непарний пакет мають відповідні маркери - DATA0, DATA1. У випадку помилки приймаюча сторона не вертає маркер підтвердження, тоді на передаючій стороні запускається механізм автоматичного повтору передачі. Розмір пакету даних може бути випадковим, в тому числі рівним нулю, але не повинен перевищувати максимально допустиме значення. Для високошвидкісної шини USB максимальне значення складає 512 байт, для повношвидкісної - 8, 16, 32 або 64 байта. Типова передача даних для повношвидкісної шини для цього режиму ілюструється рис.8.
Рисунок 8 - BULK - передача даних
Хост, при роботі на повношвидкісній шині, на протязі двох циклів передає дані пристрою та отримує підтвердження. В третьому циклі, після отримання даних, пристрій повідомляє про неможливість обробити дані.
Для високошвидкісної шини після прийому другого пакету точка відповість підтвердженням NYET. Це дозволяє хосту призупинити передачу третього пакету даних і контролювати його готовність коротким запитом PING. Продовжити передачу можна буде після отримання підтвердження АСК.
BULK - прийом ілюстрований рис.9.
Рисунок 9 - BULK - прийом даних