web-dev-qa-db-fra.com

UART vs I2C vs SPI pour la communication entre processeurs entre les microcontrôleurs)

J'examine un moyen de connecter deux microcontrôleurs. Au niveau de la sérialisation, je pense utiliser des Nano protobuffers ( 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 remplir plusieurs fonctions. Un processeur plus gros y appellera des RPC via des messages envoyés, puis lorsque les données seront prêtes, il les lira à partir d'un processeur plus petit.

Quels seraient les avantages/inconvénients d'utiliser UART, I2C ou SPI?

Les messages seront placés dans la boîte aux lettres avant l'envoi.

Cordialement, Drasko

25
Drasko DRASKOVIC

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

I2C n'a besoin que de deux broches, mais c'est lent et le gérer avec ou sans interruptions est pénible, même avec la construction de modules périphériques. C'est un système maître/esclave, il est bon pour contrôler de nombreux appareils lents comme les capteurs de température.
Seulement deux lignes pour tous les appareils de bus, la sélection se fait via une adresse I2C dans le protocole.

Uart a besoin de deux broches, il est normalement plus rapide, plus facile à manipuler, mais nécessite (presque) les mêmes horloges des deux côtés. Un système asynchrone un à un peut être utile si les deux systèmes doivent parfois envoyer des données sans attendre une demande d'interrogation principale.
Peut également être utilisé comme système de bus, mais vous avez alors besoin d'une structure maître/esclave ou de protocoles plus complexes.

SPI a besoin de 3 broches (ou 4 avec CS), c'est la plus rapide, simple à implémenter même avec DMA, faible temps processeur, souvent tamponné. Lorsque vous avez suffisamment d'épingles gratuites, je le préférerais.

28
jeb