Ответ 1
Это зависит от ваших общих требований и от того, насколько дорогими являются контакты.
I2C нужны только два булавки, но он медленный и обрабатывать его с прерываниями или без них - это боль, даже при построении периферийных модулей.
Это основная/подчиненная система, она хороша для управления многими медленными устройствами, такими как датчики температуры.
Только две линии для всех устройств шины, выбор осуществляется через I2C-адрес в протоколе.
Uart нуждается в двух контактах, он обычно быстрее, проще в обращении, но требует (почти) тех же часов с обеих сторон.
Асинхронная система от одного до одного может быть хорошей, если обе системы должны иногда отправлять данные, не дожидаясь запроса основного опроса.
Может также использоваться как система шины, но тогда вам нужна структура ведущего/подчиненного устройства или более сложные протоколы.
SPI требует 3 (или 4 с CS) штырьков, это самый быстрый, простой в реализации даже с DMA, с низким временем работы процессора, часто буферизуемым. Когда у вас будет достаточно свободных контактов, я бы предпочел.