Подтвердить что ты не робот

UART vs I2C против SPI для межпроцессорной связи между микроконтроллерами

Я изучаю способ подключения двух микроконтроллеров. На уровне сериализации я думаю об использовании протобонеров Nano (http://code.google.com/p/nanopb/). Таким образом, я могу кодировать/декодировать сообщения и отправлять их между двумя процессорами.

В принципе, одним маленьким процессором будет RPC-сервер, способный выполнять несколько функций. Большой процессор будет вызывать там RPC через отправленные сообщения, а затем, когда данные будут готовы, он будет читать его с меньшего процессора.

Какими будут плюсы и минусы использования UART, I2C или SPI?

Сообщения отправляются в очередь почтового ящика до отправки.

С уважением, Drasko

4b9b3361

Ответ 1

Это зависит от ваших общих требований и от того, насколько дорогими являются контакты.

I2C нужны только два булавки, но он медленный и обрабатывать его с прерываниями или без них - это боль, даже при построении периферийных модулей. Это основная/подчиненная система, она хороша для управления многими медленными устройствами, такими как датчики температуры.
Только две линии для всех устройств шины, выбор осуществляется через I2C-адрес в протоколе.

Uart нуждается в двух контактах, он обычно быстрее, проще в обращении, но требует (почти) тех же часов с обеих сторон. Асинхронная система от одного до одного может быть хорошей, если обе системы должны иногда отправлять данные, не дожидаясь запроса основного опроса.
Может также использоваться как система шины, но тогда вам нужна структура ведущего/подчиненного устройства или более сложные протоколы.

SPI требует 3 (или 4 с CS) штырьков, это самый быстрый, простой в реализации даже с DMA, с низким временем работы процессора, часто буферизуемым. Когда у вас будет достаточно свободных контактов, я бы предпочел.