UART vs I2C vs SPI pour la communication entre microcontrôleurs

j'examine un moyen de connecter deux microcontrôleurs. Au niveau de la sérialisation, je pense utiliser des protobuffers Nano (http://code.google.com/p/nanopb/). De cette façon, je peux encoder/décoder des messages et les envoyer entre deux processeurs.

fondamentalement, un petit processeur serait le serveur RPC, capable de faire plusieurs fonctions. Le plus gros processeur y appellera RPCs via les messages envoyés, et puis quand les données seront prêtes, il les lira à partir de plus petites processeur.

quels seraient les avantages et les inconvénients d'utiliser UART, I2C ou SPI?

les Messages seront placés dans la mailbox que avant l'envoi.

cordialement, Drasko

21
demandé sur Drasko DRASKOVIC 2014-01-31 03:27:53

1 réponses

cela dépend de vos besoins totaux et du prix des broches.

I2C n'a besoin que de deux broches, mais il est lent et le gérer avec ou sans interruptions est une douleur, même avec la construction dans les modules périphériques. C'est un système maître/esclave, c'est bon pour contrôler beaucoup de dispositifs lents comme les capteurs de température.

Seulement deux lignes pour tous les périphériques bus, la sélection se fait via une adresse I2C dans le protocole.

Uart a besoin de deux broches, c'est normalement plus rapide, plus facile pour manipuler, mais nécessite (presque) les mêmes horloges aux deux côtés. Un à un système asynchrone, peut être bon si les deux systèmes doivent être envoyés parfois des données sans attendre une demande de scrutin maître.

Peut également être utilisé comme un système de bus, mais alors vous avez besoin d'une structure maître/esclave ou des protocoles plus complexes.

SPI a besoin de 3 (ou 4 avec CS) pins, c'est le plus rapide, simple à mettre en œuvre, même avec DMA, temps cpu faible, souvent tamponné. Quand vous avez assez de broches libres préférerait.

25
répondu jeb 2017-09-08 10:04:08