Сравнение последовательных протоколов связи
Последовательная связь является наиболее широко используемой коммуникационной методологией в отношении встраиваемых систем. Прежде чем говорить о типах последовательных протоколов, используемых во встраиваемых системах, и их сравнении, давайте сначала рассмотрим, что такое последовательная связь.
Разница между последовательной и параллельной связью
Как следует из названия, в таком виде данные связи передаются последовательно (один за другим), а не параллельно (все вместе). Таким образом, как и ожидалось, последовательная связь может быть реализована с использованием меньшего количества проводов по сравнению с параллельным методом коммуникации, при этом также требуется какой-то механизм синхронизации (тактирования) для успешной связи. Следует отметить, что в случае последовательных протоколов связи только сама передача данных выполняется последовательно, все остальное, обработка данных и т. п., выполняется параллельно, то есть в виде регистров.
Виды последовательной связи
Последовательная связь может быть классифицирована на синхронный и асинхронный тип связи. При синхронном типе передатчик и приемник имеют общую систему тактирования, чтобы синхронизироваться друг с другом. Асинхронный тип последовательной связи не требует какого-либо общего источника синхронизации между передатчиком и приемником, обе стороны работают в соответствии с их независимыми системами тактирования.
SPI (Serial Peripheral Interface)
Это протокол последовательной связи синхронного типа, который состоит из двух линий данных (MOSI и MISO), одной тактовой линии (SCK) и линии выбора подчиненных (SS).
Перед тем, как двигаться дальше, нужно прояснить значения несколько терминов, которые вы должны знать:
Master (ведущий) - устройство, которое обеспечивает синхронизацию
Slave (ведомый) - устройство, отличное от мастера, использующее тактирование ведущего для связи
MOSI - Master Out Slave In (линия, по которой мастер отправляет данные своим подчиненным)
MISO - Master In Slave Out (линия, по которой ведомые передают ведомому данные в ответ)
SCK – линия тактирования (предоставляется ведущим устройством)
SS - Slave Select (линия, используемая для выбора ведомого устройства, к которому ведущий хочет установить связь)
В случае с SPI в любой момент времени может быть только одно ведущее устройство и несколько других ведомых, которые отвечают только на вызов ведущего. Вся связь обрабатывается самим ведущим; ни один подчиненный не может отправлять данные по своей воле. Ведущий отправляет данные через MOSI, а ведомые отвечают через линию MISO. Во всем процессе SCK (последовательное тактирование) играет очень важную роль, каждое подчиненное устройство зависит от этих часов, чтобы читать данные из MOSI и отвечать через MISO. SS (выбор ведомого) используется для того, чтобы конкретное подчиненное устройство проснулось, с кем мастер хочет общаться. Ниже представлена иллюстрация принципа подключения посредством интерфейса SPI:
Существует несколько регистров, которые используются для реализации связи SPI. Все нижеперечисленные регистры имеют длину 8 бит.
SPDR (регистр данных SPI) используется для хранения одного байта данных, который должен быть передан или получен.
SPSR (регистр состояния SPI) содержит биты состояния, участвующие в передаче SPI.
SPCR (регистр управления SPI) содержит контрольные биты, участвующие в передаче SPI.
Преимущества интерфейса SPI следующие. Во-первых он обеспечивает синхронную последовательную связь, которая намного надежнее асинхронной. Во-вторых, несколько устройств (ведомые устройства) могут быть подключены к одному ведущему устройству. В-третьих, это быстрая форма последовательной связи.
Недостатки SPI следующие. Во-перых, требуется несколько линий выбора ведомых для подключения нескольких подчиненных устройств. Во-вторых, только ведущий контролирует весь процесс коммуникации; никакие подчиненные не могут напрямую связываться друг с другом.
I2C (Inter-Integrated Circuit) или двухпроводный интерфейс
Другим очень полезным синхронным протоколом последовательной связи является протокол I2C или Inter-Integrated Circuit. В отличие от SPI, I2C использует только два провода для всего процесса, возможно, поэтому он также известен как протокол двухпроводного интерфейса (TWI). Эти два провода представляют собой SDA (последовательные данные) и SCL (последовательное тактирование). Протокол I2C может поддерживать несколько подчиненных устройств, но в отличие от SPI, который поддерживает только одно ведущее устройство, I2C может также поддерживать несколько мастер-устройств. Каждое устройство отправляет / принимает данные, используя только один провод, который является SDA. SCL поддерживает синхронизацию между устройствами через общую систему тактирования, которая реализуется активным ведущим устройством.
Каждое подчиненное устройство имеет свой собственный уникальный адрес (от 7 до 10 бит), который ведущий использует для их идентификации. Всякий раз, когда ведущий хочет отправить данные, он сначала генерирует запрос, который имеет конкретный адрес этого подчиненного устройства. Каждое подчиненное устройство сопоставляет этот адрес со своим и тот, чей адрес соответствует, отвечает ведущему. Каждое сообщение начинается с условия запуска и заканчивается условием остановки. Одно сообщение может содержать несколько байтов данных, каждый из которых имеет бит подтверждения (ACK) или отрицательный бит подтверждения (NACK) между ними.
Преимущества I2C следующие. Во-первых, несколько ведущих и несколько ведомых могут соединяться друг с другом. Во-вторых, для этого протокола требуется только два провода. К недостаткам протокола I2C можно отнести то, что он медленнее по сравнению с SPI, потому что в рамках этого протокола выполняется много операций с кадрами данных.
UART / USART
UART означает универсальный асинхронный приемник и передатчик, а USART – универсальный синхронный и асинхронный приемник и передатчик. Разница между ними заключается в том, что UART выполняет только асинхронную последовательную связь, в то время как USART может выполнять как синхронный, так и асинхронный последовательный коммуникационный процесс.
Для асинхронного режима этот протокол использует только два провода, а именно Rx и Tx. Поскольку здесь не нужна синхронизация, оба устройства должны использовать свои независимые внутренние системы тактирования для функционирования. Тем не менее, существует термин «скорость передачи», который помогает этим устройствам оставаться в режиме синхронизации, фиксируя скорость обмена данными. Скорость передачи данных в бодах равно число бит данных, передаваемое в секунду, поэтому оба устройства должны работать с одинаковой скоростью передачи в бодах, чтобы поддерживать его надлежащее функционирование.
Интерфейс UART/USART имеет большое ограничение, связанное с тем, что только два устройства могут обмениваться данными с помощью этого протокола одновременно. Линия Tx одного устройства передает данные на лннию Rx другого устройства и аналогично Tx последнего передает данные в Rx первого устройства. Так происходит обмен данными.
Для синхронного режима используется дополнительный вывод XCK. Импульсы тактирования генерируются устройством, отправляющим данные в это время.
Преимущества UART/USART следующие. Во-первых, этот протокол обеспечивает как синхронную, так и асинхронную последовательную связь. Во-вторых, обеспечивается наличие различных скоростей передачи, что делает его пригодным для широкого применения и устройств. В-третьих, это одна из самых простых форм последовательной связи. Недостатком здесь является то, что одновременно могут быть подключены только два устройства.
Выводы сравнения интерфейсов
Используйте SPI, если у вас есть только один ведущий и несколько ведомых устройств. SPI для этого является более быстрым протоколом. Когда у вас также есть несколько ведущих устройств, помимо нескольких ведомых устройств, следует предпочесть использовать I2C или TWI вместо SPI. Это также уменьшит количество используемых проводов. А если вы ищете протокол для последовательной связи только двух устройств между собой, то USART / UART оказывается лучшим решением, поскольку его легко применять и с ним просто работать во многих периферийных устройствах.
© digitrode.ru