Serial - це парасольове слово для всього, що є "Мультиплексичним часовим підрозділом", щоб використовувати дорогий термін. Це означає, що дані надсилаються поширюються з часом, найчастіше - один окремий біт. Усі протоколи, які ви іменуєте, - це послідовні протоколи.
УАРТ, для Універсального асинхронного передавача приймачів, є одним із найбільш часто використовуваних послідовних протоколів. Вона майже така ж стара, як і я, і дуже проста. Більшість контролерів мають апаратну UART на борту. Він використовує єдиний рядок даних для передачі і один для прийому даних. Найчастіше 8-бітні дані передаються наступним чином: 1 початковий біт (низький рівень), 8 бітів даних та 1 стоп-біт (високий рівень). Бітовий початковий біт і стоп-біт високого рівня означають, що для початку зв'язку завжди існує високий перехід на низький. Ось що описує UART. Немає рівня напруги, тому його можна мати на 3,3 В або 5 В, залежно від того, який мікроконтролер використовує. Зауважте, що мікроконтролери, які хочуть спілкуватися через UART, повинні узгодити швидкість передачі, швидкість передачі бітів, оскільки вони мають лише початкові біти, що падають на край синхронізації. Це називається асинхронним зв'язком.
Для міжміського зв'язку (це не повинно бути сотням метрів) 5 В UART не дуже надійний, тому він перетворюється на більш високу напругу, як правило, +12 В для "0" і -12 В для " 1 ". Формат даних залишається колишнім. Тоді у вас є RS-232 (який ви насправді повинні називати EIA-232, але ніхто цього не робить.)
Залежність від часу є одним з найбільших недоліків UART, а рішення - USART , для Універсального синхронного / асинхронного передавача. Це може зробити UART, але і синхронний протокол. У синхронному є не тільки дані, а й передані годинники. З кожним бітом тактовий імпульс повідомляє приймачу, що він повинен фіксувати цей біт. Синхронним протоколам або потрібна більша пропускна здатність, як у випадку з кодуванням Манчестера, або додатковий провід для годинника, як SPI та I2C.
SPI (Serial Peripheral Interface) - ще один дуже простий послідовний протокол. Ведучий посилає тактовий сигнал, і при кожному тактовому імпульсі він зміщується один біт на підлеглий, і один біт, що йде від підлеглого. Отже, імена сигналів - це SCK для годинника, MOSI для Master Out Slave In і MISO для Master In Slave Out. Використовуючи сигнали SS (Slave Select), майстер може керувати більш ніж одним веденим на шині. Є два способи підключення декількох рабовласницьких пристроїв до одного ведучого, один згаданий вище, тобто використання підлеглого вибору, а інший - це ланцюжок ромашок, він використовує менше апаратних штифтів (виберіть рядки), але програмне забезпечення ускладнюється.
I2C(Inter-Integrated Circuit, вимовляється "I квадрат S") також є синхронним протоколом, і це перше, що ми бачимо, який має деякий "інтелект" у ньому; інші тупо пересували біти туди-сюди, і це було те. I2C використовує лише 2 дроти, один для тактових (SCL) і один для даних (SDA). Це означає, що ведучий і підлеглий надсилають дані через один і той же провід, який знову контролюється ведучим, який створює тактовий сигнал. I2C не використовує окремий підлеглий вибір для вибору конкретного пристрою, але має адресацію. Перший байт, надісланий майстром, містить 7-бітну адресу (так що ви можете використовувати 127 пристроїв на шині) та біт для читання / запису, що вказує, чи будуть наступні байти (і) також надходити від головного чи повинні надходити від майстра раб. Після кожного байту одержувач повинен надіслати "0", щоб підтвердити отримання байту, яку майстер зав'язує 9-м тактовим імпульсом. Якщо майстер хоче записати байт, повториться той самий процес: майстер кладе біт за бітом на шину і кожен раз подає тактовий імпульс, щоб сигналізувати, що дані готові до читання. Якщо майстер хоче отримати дані, він генерує лише тактові імпульси. Раб повинен подбати про те, щоб наступний біт був готовий, коли подається імпульс годинника. Цей протокол запатентований NXP (раніше Phillips), щоб заощадити вартість ліцензування, Atmel використовує слово TWI (2-провідний інтерфейс), який точно такий же, як I2C, тому будь-який пристрій AVR не матиме I2C, але у нього буде TWI. Якщо майстер хоче отримати дані, він генерує лише тактові імпульси. Раб повинен подбати про те, щоб наступний біт був готовий, коли подається імпульс годинника. Цей протокол запатентований NXP (раніше Phillips), щоб заощадити вартість ліцензування, Atmel використовує слово TWI (2-провідний інтерфейс), який точно такий же, як I2C, тому будь-який пристрій AVR не матиме I2C, але у нього буде TWI. Якщо майстер хоче отримати дані, він генерує лише тактові імпульси. Раб повинен подбати про те, щоб наступний біт був готовий, коли подається імпульс годинника. Цей протокол запатентований NXP (раніше Phillips), щоб заощадити вартість ліцензування, Atmel використовує слово TWI (2-провідний інтерфейс), який точно такий же, як I2C, тому будь-який пристрій AVR не матиме I2C, але у нього буде TWI.
Два або більше сигналів на одному проводі можуть спричинити конфлікти, і у вас виникнуть проблеми, якщо один пристрій надсилає "1", а інший надсилає "0". Тому шина підключена АБО: два резистори витягують шину на високий рівень, а пристрої передають лише низький рівень. Якщо вони хочуть надіслати високий рівень, вони просто відпустять автобус.
TTL (Transistor Transistor Logic) не є протоколом. Це більш стара технологія цифрової логіки, але назва часто використовується для позначення напруги живлення 5 В, часто неправильно посилаючись на те, що слід називати UART.
Про кожне з них можна написати книгу, і, схоже, я добре на своєму шляху. Це лише дуже короткий огляд, повідомте нам, чи потребують уточнення деякі речі.