PIDUINO
Loading...
Searching...
No Matches
SPI Bus

Detailed Description

Ce module permet l'utilisation des bus SPI en mode maître à l'aide du driver spidev.

Warning
Dans le modèle Arduino, qui est monotâche, c'est l'utilisateur qui gère le signal de sélection d'esclave (SS,CS ou CE en fonction des circuits) à l'aide de la fonction digitalWrite(). Dans les nouvelles version d'Arduino, il est apparu les fonctions beginTransaction() et endTransaction() qui préfigure une évolution de l'utilisation du bus SPI qui se rapproche de ce qu'on trouve sur un système comme GNU Linux (structure spi_ioc_transfer).

Dans un système multitâche, l'accès au bus SPI (et plus généralement à toutes les ressources non partageables) est géré par le système d'exploitation par le driver. C'est le driver spidev qui gère tous les signaux du bus : MOSI, MISO, SCK et CS.

La gestion du CS de l'espace utilisateur a été envisagée car on constate la présence d'un flag SPI_NO_CS dans les sources du noyau https://github.com/torvalds/linux/blob/master/drivers/spi, néanmoins, on constate que seuls des drivers spi-bcm2835.c (Raspberry Pi !), spi-davinci.c et spi-imx.c gère cette possibilité.

Le choix qui a été fait, pour l'instant dans le noyau Arduino de PiDuino (src/arduino/Core.cpp) est de laisser le driver spi gérer le signal CS sur les autres cartes que les RaspberryPi. Dans ce cas, Les appels à pinMode() et donc à digitalWrite() n'ont aucun effet lorsqu'il s'agit de la broche correspondant au CS du bus SPI utilisé. Cela permet d'assurer une compatibilité avec le code Arduino, tout en restant compatible avec toutes les cartes Pi.Néanmoins,cela n'autorise pas l'utilisation d'une autre broche GPIO que celle du CS SPI sur les autres cartes que Raspberry Pi (pour l'instant...).

Collaboration diagram for SPI Bus:

Namespaces

namespace  Piduino
 Global namespace for Piduino.