Auteur Sujet: Interface SPI  (Lu 311 fois)

Marc-Henri

  • Jr. Member
  • **
  • Messages: 95
    • Voir le profil
    • Modélisme ferroviaire & électronique
Interface SPI
« le: novembre 02, 2017, 01:00:56 pm »
Bonjour à tous,

L'architecture du système de contrôle de mon nouveau projet de réseau N n'est pas encore complètement fixée. Bien que s'agissant d'un petit réseau, il y a déjà pas mal d'entrées-sorties à prévoir. J'ai évalué plusieurs solutions:

Centralisation et extension d'entrées-sorties
  • Un Arduino équipé d'un Atmeda2650 pour avoir beaucoup d'E/S.
  • Un Atmega32 doté de 32 E/S en boîtier PDIP.
  • Extension d'E/S à l'aide de circuits MCP23008 offrant 8 ports E/S, accessibles en I2C.

Répartition des fonctions en plusieurs microcontrôleurs
  • Un Atmega328 comme gestionnaire principal et un Attiny2313 en périphérie pour gérer les aiguillages. Nécessite une communication entre les 2.
  • Deux cartes identiques avec chacune un Atmega (modèle à préciser) pour gérer la gare cachée d'une part, la gare visible d'autre part. Les 2 cartes peuvent être identiques, mais tous les composants ne seront pas montés sur chaque carte. Communication à prévoir entre les 2 cartes.

La dernière solution me paraît intéressante car une seule carte est à concevoir, de plus elle reviendra moins chère à faire fabriquer à l'unité puisqu'il y en aura 2.

Pour la communication, l'interface SPI me semble plus facile à mettre en oeuvre que l'I2C et bien adaptée pour une distance entre les cartes de 20-30 cm. Je pense mettre un connecteur ICSP qui permettra la programmation du microcontrôleur ou la connexion avec l'autre carte. Je serai ainsi certain de ne rien perturber en programmant le microcontrôleur.

La carte gérant la gare visible aura un rôle de maître au sens SPI tandis que la carte de la gare cachée sera esclave.

Avez-vous de l'expérience avec l'interface SPI et qu'en pensez-vous ?

Meilleures salutations.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1250
  • 100% Arduino et N
    • Voir le profil
Re : Interface SPI
« Réponse #1 le: novembre 13, 2017, 09:59:58 am »
Bonjour Marc-Henri,

Le sujet est très intéressant car il nous concerne tous.

Personnellement je n’ai d’expérience du SPI que pour la communication avec des périphériques SPI (cartes SD, CAN, écrans LCD,..).
Mais si tu veux utiliser le SPI pour des échanges entre deux cartes Arduino, tu devras développer tout le protocole en logiciel dans l’Arduino.

Pourquoi ne pas utiliser le bus CAN justement qui ne nécessite que 2 composants (MCP2515/2551 par exemple) car le protocole est embarqué dans ces circuits et est particulièrement éprouvé et simple vu de l’Arduino ?

Bien amicalement
Dominique

Marc-Henri

  • Jr. Member
  • **
  • Messages: 95
    • Voir le profil
    • Modélisme ferroviaire & électronique
Re : Interface SPI
« Réponse #2 le: novembre 13, 2017, 02:41:28 pm »
Bonjour Dominique,

Pour mon application qui ne comporte que 2 cartes à Atmega distantes que d'au maximum 30 cm, le SPI devrait suffire.

En ce qui concerne le protocole, le besoin est d'envoyer 5-6 ordres distincts ainsi que récupérer l'état de la carte esclave qui tient aisément sur un byte. Le protocole devrait être assez simple, tout en gardant à l'esprit que, en SPI, l'envoi et la réception sont simultanés. L'esclave devra cependant travailler par interruptions, pas forcément nécessaire pour le maître.

Toutefois je vais aussi me documenter davantage sur la mise en oeuvre du CAN bus dont vous parlez tous avec conviction, en commençant par les pages Locoduino. Je ne suis pas sous Arduino, mais directement en avr-gcc / avr-lib. Je dois certainement trouver des librairies CAN pour cet environnement.

Bon début de semaine et meilleures salutations.
Marc-Henri