- Видове комуникационни протоколи
- Режими на предаване в серийната комуникация
- Синхронизация на часовника
- Други термини, свързани със серийната комуникация
- Синхронни серийни протоколи
- Асинхронни серийни протоколи
- Заключение
Преди да започнем със серийни комуникационни протоколи, нека разделим терминологията на три части. В съобщението е много добре известно терминология, която включва обмен на информация между две или повече среди. Във вградени системи комуникацията означава обмен на данни между два микроконтролера под формата на битове. Този обмен на битове за данни в микроконтролера се извършва от някакъв набор от дефинирани правила, известни като комуникационни протоколи. Сега, ако данните се изпращат последователно, т.е. една след друга, тогава комуникационният протокол е известен като протокол за последователна комуникация. По-конкретно, битовете за данни се предават един по един последователно по шината за данни или комуникационния канал в последователната комуникация.
Видове комуникационни протоколи
Налични са различни видове трансфер на данни в цифровата електроника, като например последователна комуникация и паралелна комуникация. По същия начин протоколите са разделени на два типа, като протокол за последователна комуникация и протоколи за паралелна комуникация. Примери за протоколи за паралелна комуникация са ISA, ATA, SCSI, PCI и IEEE-488. По същия начин има няколко примера за серийни комуникационни протоколи като CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire и SATA и т.н.
В тази статия ще бъдат обсъдени различните видове протоколи за последователна комуникация. Последователната комуникация е най-широко използваният подход за трансфер на информация между периферните устройства за обработка на данни. Всяко електронно устройство, независимо дали е персонален компютър (компютър) или мобилен, работи на серийна комуникация. Протоколът е сигурна и надеждна форма на комуникация, съдържаща набор от правила, адресирани от източника хост (изпращач) и хост дестинация (приемник), подобен на паралелната комуникация.
Режими на предаване в серийната комуникация
Както вече беше казано по-горе, че при последователна комуникация данните се изпращат под формата на битове, т.е. двоични импулси и е добре известно, че двоичен един представлява логиката HIGH и нула представлява логиката LOW. Има няколко вида серийна комуникация в зависимост от вида на режима на предаване и прехвърлянето на данни. Режимите на предаване са класифицирани като симплекс, полудуплекс и пълен дуплекс.
Симплекс метод:
При симплексния метод едновременно може да бъде активен някой от носителя, т.е. подателят или получателят. Така че, ако изпращачът предава данните, получателят може да приема само и обратно. Така че симплексният метод е техника за еднопосочна комуникация. Известните примери за симплекс метод са Телевизия и Радио.
Метод на полудуплекс:
При полудуплексния метод както подателят, така и получателят могат да бъдат активни, но не едновременно. Така че, ако изпращачът предава, получателят може да приеме, но не може да изпрати и по същия начин обратното. Добре известните примери за полудуплекс е интернет, където потребителят изпраща заявка за данни и ги получава от сървъра.
Пълнодуплексен метод:
При пълен дуплекс метод, приемникът и предавателят могат да изпращат данни един към друг едновременно. Добре известният пример е мобилният телефон.
Отделно от това, за подходящо предаване на данни, часовникът играе важна роля и е един от първоизточника. Неизправността на часовника води до неочаквано предаване на данни, дори понякога до загуба на данни. Така че синхронизирането на часовника става много важно при използване на серийна комуникация.
Синхронизация на часовника
Часовникът е различен за серийните устройства и е класифициран в два типа, а именно. Синхронен сериен интерфейс и асинхронен сериен интерфейс.
Синхронен сериен интерфейс:
Това е връзка от точка до точка от главен към подчинен. При този тип интерфейс всички устройства използват единична CPU шина за споделяне на данни и часовник. Предаването на данни става по-бързо с една и съща шина за споделяне на часовник и данни. Също така няма несъответствие в скоростта на предаване в този интерфейс. От страна на предавателя има преместване на данните върху серийна линия, осигуряваща часовника като отделен сигнал, тъй като към данните не се добавят битове за стартиране, спиране и паритет. От страна на приемника данните се извличат с помощта на часовника, предоставен от предавателя, и преобразува серийните данни обратно в паралелната форма. Добре известните примери са I2C и SPI.
Асинхронен сериен интерфейс:
В асинхронния сериен интерфейс външният тактов сигнал липсва. Асинхронните серийни интерфейси могат да се видят най-вече в приложения на дълги разстояния и са идеални за стабилна комуникация. В асинхронния сериен интерфейс отсъствието на външен източник на часовник го кара да разчита на няколко параметъра като контрол на потока от данни, контрол на грешките, контрол на скоростта на предаване, контрол на предаването и контрол на приема. От страна на предавателя има изместване на паралелни данни върху серийната линия, използвайки собствен часовник. Също така добавя битове за стартиране, спиране и проверка на четността. От страна на приемника, приемникът извлича данните, използвайки собствения си часовник и преобразува серийните данни обратно в паралелната форма след отстраняване на битовете за старт, стоп и паритет. Добре известните примери са RS-232, RS-422 и RS-485.
Други термини, свързани със серийната комуникация
Освен синхронизация на часовника, има някои неща, които трябва да запомните при серийно прехвърляне на данни, като скорост на предаване, избор на битове за данни (рамкиране), синхронизация и проверка на грешки. Нека обсъдим тези термини накратко.
Скорост на предаване : Скоростта на предаване е скорост, при която данните се прехвърлят между предавателя и приемника под формата на битове в секунда (bps). Най-често използваната скорост на предаване е 9600. Но има и друг избор на скорост на предаване като 1200, 2400, 4800, 57600, 115200. Колкото повече скоростта на предаване ще бъде мазнини, данните ще се прехвърлят наведнъж. Също така за предаването на данни скоростта на предаване трябва да бъде еднаква както за предавателя, така и за приемника.
Кадриране: Кадрирането се отнася до броя на битовете за данни, които трябва да бъдат изпратени от предавателя към приемника. Броят на битовете за данни се различава в случай на приложение. Повечето от приложението използват 8 бита като стандартни битове за данни, но могат да бъдат избрани и като 5, 6 или 7 бита.
Синхронизация: Битовете за синхронизация са важни за избора на част от данните. Той казва началото и края на битовете за данни. Предавателят ще зададе битове за стартиране и спиране на рамката за данни и приемникът ще го идентифицира по съответния начин и ще извърши по-нататъшната обработка.
Контрол на грешките: Контролът на грешките играе важна роля по време на серийната комуникация, тъй като има много фактори, които влияят и добавят шума в серийната комуникация. За да се отървете от тази грешка, се използват битовете за четност, където четността ще проверява за четен и нечетен паритет. Така че, ако рамката за данни съдържа четното число на 1, тогава тя е известна като четен паритет и битът за четност в регистъра е зададен на 1. По същия начин, ако рамката за данни съдържа нечетен брой 1, тогава е известна като нечетен паритет и изчиства нечетен бит за паритет в регистъра.
Протоколът е точно като общ език, който системата използва за разбиране на данните. Както е описано по-горе, протоколът за последователна комуникация е разделен на типове, т.е. синхронни и асинхронни. Сега и двете ще бъдат обсъдени в детайли.
Синхронни серийни протоколи
В синхронен тип серийни протоколи като SPI, I2C, CAN и LIN се използват в различни проекти, защото това е един от най-добрите ресурси за борда периферни устройства. Също така това са широко използваните протоколи в основните приложения.
SPI протокол
Серийният периферен интерфейс (SPI) е синхронен интерфейс, който позволява няколко SPI микроконтролера да бъдат свързани помежду си. В SPI са необходими отделни проводници за данни и тактова линия. Също така часовникът не е включен в потока от данни и трябва да бъде представен като отделен сигнал. SPI може да бъде конфигуриран или като главен, или като подчинен. Четирите основни SPI сигнала (MISO, MOSI, SCK и SS), Vcc и Ground са част от комуникацията на данни. Така че се нуждае от 6 проводника за изпращане и получаване на данни от подчинен или главен. Теоретично SPI може да има неограничен брой роби. Комуникацията на данни е конфигурирана в SPI регистри. SPI може да достави до 10Mbps скорост и е идеален за високоскоростна комуникация на данни.
Повечето от микроконтролерите имат вградена поддръжка за SPI и могат да бъдат директно свързани с SPI поддържано устройство:
- SPI комуникация с PIC микроконтролер PIC16F877A
- Как да използвам SPI комуникация в STM32 микроконтролер
- Как да използвам SPI в Arduino: Комуникация между две Arduino платки
I2C серийна комуникация
Двуредова комуникация между интегрални схеми (I2C) между различни интегрални схеми или модули, където две линии са SDA (серийна линия за данни) и SCL (серийна линия на часовника). И двете линии трябва да бъдат свързани към положително захранване с помощта на издърпващ резистор. I2C може да осигури скорост до 400Kbps и използва 10 битова или 7 битова адресираща система за насочване към конкретно устройство на i2c шината, за да може да свърже до 1024 устройства. Той има ограничена комуникация и е идеален за бордова комуникация. I2C мрежите са лесни за настройка, тъй като използват само два проводника и новите устройства могат просто да бъдат свързани към двете общи линии на I2C шината. Подобно на SPI, микроконтролерът обикновено има I2C щифтове за свързване на всяко I2C устройство:
- Как да използвам I2C комуникацията в STM32 микроконтролер
- I2C комуникация с PIC микроконтролер PIC16F877
- Как да използвам I2C в Arduino: Комуникация между две платки Arduino
USB
USB (Universal Serial Bus) е широко протокол с различни версии и скорости. Към един USB хостов контролер могат да бъдат свързани максимум 127 периферни устройства. USB действа като устройство "включи и пусни". USB се използват в почти устройства като клавиатури, принтери, мултимедийни устройства, камери, скенери и мишка. Проектиран е за лесна инсталация, по-бърза оценка на данните, по-малко окабеляване и горещо заместване. Той замени по-обемните и по-бавни серийни и паралелни портове. USB използва диференциална сигнализация, за да намали смущенията и да позволи високоскоростно предаване на голямо разстояние.
Диференциалната шина е изградена с два проводника, единият от които представлява предадените данни, а другият - нейното допълнение. Идеята е, че „средното“ напрежение на проводниците не носи никаква информация, което води до по-малко смущения. В USB устройствата имат право да черпят определено количество енергия, без да питат хоста. USB използва само два проводника за пренос на данни и са по-бързи от серийния и паралелния интерфейс. USB версиите поддържат различни скорости като 1,5Mbps (USB v1.0), 480 Mbps (USB2.0), 5Gbps (USB v3.0). Дължината на отделния USB кабел може да достигне до 5 метра без концентратор и 40 метра с концентратор.
МОГА
Мрежата на контролера (CAN) се използва, например, в автомобилната индустрия, за да позволи комуникация между ECU (модули за управление на двигателя) и сензори. Протоколът CAN е здрав, евтин и базиран на съобщения и обхваща много приложения - например автомобили, камиони, трактори, индустриални роботи. Системата CAN шина позволява централно диагностициране и конфигуриране на грешки във всички ECU. CAN съобщенията се приоритизират чрез идентификатори, така че идентификаторите с най-висок приоритет да не се прекъсват. Всяко ECU съдържа чип за получаване на всички предадени съобщения, решаване на релевантността и действие по съответния начин - това позволява лесно модифициране и включване на допълнителни възли (напр. Регистратори на данни с шина CAN). Приложенията включват старт / стоп на превозни средства, системи за предотвратяване на сблъсък. Системите CAN шина могат да осигурят скорост до 1Mbps.
Microwire
MICROWIRE е 3Mbps сериен 3-жичен интерфейс, по същество подмножество на SPI интерфейса. Microwire е сериен вход / изход за микроконтролери, така че шината Microwire ще бъде намерена и на EEPROM и други периферни чипове. Трите реда са SI (сериен вход), SO (сериен изход) и SK (сериен часовник). Линията за сериен вход (SI) към микроконтролера, SO е серийната изходна линия, а SK е серийната тактова линия. Данните се изместват по падащия ръб на SK и се оценяват по нарастващия ръб. SI се премества във възходящия ръб на SK. Допълнително подобрение на шината към MICROWIRE се нарича MICROWIRE / Plus. Основната разлика между двете шини изглежда е, че архитектурата MICROWIRE / Plus в микроконтролера е по-сложна. Той поддържа скорост до 3Mbps.
Асинхронни серийни протоколи
Асинхронният тип серийни протоколи са много важни, когато става въпрос за надежден трансфер на данни на по-голямо разстояние. Асинхронната комуникация не изисква синхронизиране на времето, което е общо за двете устройства. Всяко устройство независимо слуша и изпраща цифрови импулси, които представляват битове данни с договорена скорост. Асинхронната серийна комуникация понякога се нарича транзисторно-транзисторна логика (TTL), където нивото на високо напрежение е логика 1, а ниското напрежение се равнява на логика 0. Почти всеки микроконтролер на пазара днес има поне един универсален асинхронен приемник - Предавател (UART) за серийна комуникация. Примерите са RS232, RS422, RS485 и т.н.
RS232
RS232 (препоръчителният стандарт 232) е много често срещан протокол, използван за свързване на различни периферни устройства като монитори, CNC и др. RS232 се предлага в мъжки и женски конектори. RS232 е топология от точка до точка с свързано максимум едно устройство и покрива разстояние до 15 метра при 9600 bps. Информацията за интерфейса RS-232 се предава цифрово чрез логически 0 и 1. Логическата „1“ (MARK) съответства на напрежение в диапазона от -3 до -15 V. напрежение в диапазона от +3 до +15 V. Той се предлага в конектор DB9, който има 9 извода като TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.
RS422
RS422 е подобен на RS232, който позволява едновременно изпращане и получаване на съобщения на отделни линии, но използва диференциален сигнал за това. В мрежата RS-422 може да има само едно предавателно устройство и до 10 приемащи устройства. Скоростта на трансфер на данни в RS-422 зависи от разстоянието и може да варира от 10 kbps (1200 метра) до 10 Mbps (10 метра). Линията RS-422 е 4 проводника за предаване на данни (2 усукани проводника за предаване и 2 усукани проводника за приемане) и един общ заземен проводник GND. Напрежението на линиите за данни може да бъде в диапазона от -6 V до +6 V. Логическата разлика между A и B е по-голяма от +0,2 V. Логическа 1 съответства на разликата между A и B по-малка от -0,2 V. Стандартът RS-422 не дефинира специфичен тип конектор, обикновено това може да бъде терминален блок или DB9 конектор.
RS485
Тъй като RS485 използва многоточкова топология, той се използва най-много в индустриите и са предпочитан от индустрията протокол. RS422 може да свърже 32 линейни драйвера и 32 приемника в диференциални конфигурации, но с помощта на допълнителни повторители и усилватели на сигнала до 256 устройства. RS-485 не дефинира конкретен тип конектор, но често е терминален блок или DB9 конектор. Скоростта на работа също зависи от дължината на линията и може да достигне 10 Mbit / s на 10 метра. Напрежението на линиите е в диапазона от -7 V до +12 V. Съществуват два типа RS-485 като полудуплексен режим RS-485 с 2 контакта и пълен дуплекс режим RS-485 с 4 контакта. За да научите повече за използването на RS485 с други микроконтролери, проверете връзките:
- RS-485 MODBUS серийна комуникация с използване на Arduino UNO като slave
- RS-485 последователна комуникация между Raspberry Pi и Arduino Uno
- RS485 последователна комуникация между Arduino Uno и Arduino Nano
- Последователна комуникация между STM32F103C8 и Arduino UNO чрез RS-485
Заключение
Последователната комуникация е една от широко използваните системи за комуникационен интерфейс в електрониката и вградените системи. Скоростите на данни могат да бъдат различни за различните приложения. Протоколите за последователна комуникация могат да играят решаваща роля при работа с този вид приложения. Така че изборът на правилния сериен протокол става много важен.