Серийный - это общее слово для всего, что называется «мультиплексирование с временным разделением», чтобы использовать дорогой термин. Это означает, что данные отправляются с течением времени, чаще всего один бит за другим. Все протоколы, которые вы называете, являются последовательными протоколами.
УАППдля универсального асинхронного приемника-передатчика является одним из наиболее часто используемых последовательных протоколов. Это почти так же старо, как и я, и очень просто. Большинство контроллеров имеют аппаратный 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 в квадрате C») также является синхронным протоколом, и мы впервые видим, что в нем есть некоторый «интеллект»; другие тупо сдвинули биты внутрь и наружу, вот и все. I2C использует только 2 провода, один для часов (SCL) и один для данных (SDA). Это означает, что ведущий и ведомый отправляют данные по одному и тому же проводу, снова контролируемому ведущим, который создает тактовый сигнал. I2C не использует отдельные ведомые устройства для выбора конкретного устройства, но имеет адресацию. Первый байт, отправленный мастером, содержит 7-битный адрес (так что вы можете использовать 127 устройств на шине) и бит чтения / записи, указывающий, будут ли следующие байты также поступать от мастера или должны поступить от раб. После каждого байта получатель должен отправить «0» для подтверждения приема байта, который мастер фиксирует с 9-м тактовым импульсом. Если мастер хочет записать байт, тот же процесс повторяется: мастер помещает бит за битом в шину и каждый раз выдает тактовый импульс, сигнализирующий, что данные готовы для чтения. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI.
Два или более сигналов на одном и том же проводе могут вызвать конфликты, и у вас возникнет проблема, если одно устройство отправит «1», а другое - «0». Поэтому шина подключена ИЛИ: два резистора поднимают шину на высокий уровень, а устройства посылают только низкие уровни. Если они хотят послать высокий уровень, они просто выпускают автобус.
TTL (Transistor Transistor Logic) не является протоколом. Это более старая технология для цифровой логики, но название часто используется для обозначения напряжения питания 5 В, часто неправильно ссылаясь на то, что следует называть UART.
О каждом из них можно написать книгу, и, похоже, я уже в пути. Это просто очень краткий обзор, дайте нам знать, если некоторые вещи требуют уточнения.