SlideShare une entreprise Scribd logo
Entrées-sorties et interfaces de communication C.A. ABID 56/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
L’interface SPI
L’interface SPI
å SPI a été conçue par Motorola dans les années 1980
å SPI est une interface de communication en série synchrone et full-duplex
å SPI permet de mettre en communication un composant maître (généralement le micropro-
cesseur) et plusieurs périphériques esclaves
Entrées-sorties et interfaces de communication C.A. ABID 57/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
L’interface SPI
Modes de transmission avec SPI
Entrées-sorties et interfaces de communication C.A. ABID 58/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
L’interface SPI sur la RPi3
Connexions SPI sur la RPi3
Entrées-sorties et interfaces de communication C.A. ABID 59/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
L’interface SPI sur la RPi3
Activer l’interface SPI
Ê Avec raspi-config
Interfacing Options ä P4 SPI
Ë Éditer le fichier /boot/config.txt
sudo nano /boot/config.txt
De-commenter et modifier la ligne dtparam=spi=off par dtparam=spi=on
Redémarrer la RPi3
Vérifier l’activation de SPI avec gpio readall
ou bien lsmod | grep spi
Entrées-sorties et interfaces de communication C.A. ABID 60/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
L’interface SPI sur la RPi3
Communication SPI avec pigpio
å int spiOpen(unsigned spiChan, unsigned baud, unsigned
spiFlags) : initialiser la gestion de l’interface SPI
Z spiChan : 0-1; spécifier le canal. 2 pour un canal auxiliaire
Z baud : 32K-125M (valeur >30M ne fonctionnent pas)
Z spiFlags : les 22 bits du poids le plus faible spécifient les paramètres
Z Returns a handle (>=0) if OK, otherwise PI_BAD_SPI_CHANNEL,
PI_BAD_SPI_SPEED, PI_BAD_FLAGS, PI_NO_AUX_SPI ou
PI_SPI_OPEN_FAILED
å Structure de spiFlags
¶ mm : spécifie le mode de transmission SPI
Entrées-sorties et interfaces de communication C.A. ABID 61/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
L’interface SPI sur la RPi3
Communication SPI avec pigpio
å Structure de spiFlags
· px : est 0 si CEx est actif à l’état bas (par défaut), et 1 pour l’état haut
¸ ux : est 0 si la broche CEx est réservée pour SPI (par défaut), sinon 1
¹ A : est 0 pour le périphérique standard SPI, 1 pour le SPI auxiliaire
º W : is 0 if the device is not 3-wire, 1 if the device is 3-wire. Standard SPI device only.
» nnnn : defines the number of bytes (0-15) to write before switching the MOSI line to
MISO to read data. This field is ignored if W is not set. Standard SPI device only.
¼ T : is 1 if the least significant bit is transmitted on MOSI first, the default (0) shifts the
most significant bit out first. Auxiliary SPI device only.
½ R : is 1 if the least significant bit is received on MISO first, the default (0) receives the
most significant bit first. Auxiliary SPI device only.
¾ bbbbbb : defines the word size in bits (0-32). The default (0) sets 8 bits per word.
Auxiliary SPI device only
Entrées-sorties et interfaces de communication C.A. ABID 62/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
Communication entre RPi3 et Arduino Uno via SPI
Mise en application
å On désire envoyer un message de la carte Raspberry vers la carte Arduino en utilisant
l’interface SPI
Entrées-sorties et interfaces de communication C.A. ABID 63/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
Montage
Branchement : MOSI Ö MOSI, MISO Ö MISO, SCK Ö SCK et GND Ö GND
Entrées-sorties et interfaces de communication C.A. ABID 64/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
Communication entre RPi3 et Arduino Uno via SPI
Programme C sur l’Arduino Uno (Mode esclave)
1 #include <SPI.h>
2 volatile int rSize = 0;
3 volatile bool finish = false;
4 char myArray[100];
5 void setup() {
6 Serial.begin(9600);
7 pinMode(MISO, OUTPUT);pinMode(SCK, INPUT);
8 SPCR |= bit(SPE); // turn on SPI in slave mode
9 SPI.attachInterrupt(); // turn on interrupts
10 Serial.println("Initialization done...");
11 }
12
13 ISR (SPI_STC_vect) // SPI interrupt routine
14 {
15 myArray[rSize] = SPDR;
16 if (myArray[rSize] == ’!’) finish = true;
17 rSize++;
18 } // end of interrupt service routine (ISR) for SPI
19
20 void loop () {
21 if (finish) {
22 Serial.print("Received message : ");
23 for (int i = 0; i < rSize; i++)
24 Serial.print((char)myArray[i]);
25 Serial.println("n=============================================");
26 rSize = 0; finish = false;
27 }
28 }
Entrées-sorties et interfaces de communication C.A. ABID 65/ 82
Communication avec l’interface SPI (Serial Peripheral Interface)
Communication entre RPi3 et Arduino Uno via SPI
Programme C++ sur la RPi3 (Maître)
1 #include <iostream>
2 #include <pigpio.h>
3 #include <cstring>
4 using namespace std;
5
6 int main(int argc, char *argv[]) {
7 if (gpioInitialise() < 0) {
8 cout << "Error initializing pigpio library..." << endl;
9 exit(-1);
10 }
11 uint32_t flags=0x00;
12 int hSpi=spiOpen(0,100000,flags);
13 if (hSpi>0) {
14 cout << "Error SPI initialization..."<<endl;
15 gpioTerminate();
16 exit(-1);
17 }
18 const char *sBuffer="Hello world SPI!";
19 char rBuffer[100];
20 spiXfer(hSpi,(char *)sBuffer,(char *)rBuffer,strlen(sBuffer));
21 cout<<"Received : ";
22 for (size_t j=0;j<strlen(sBuffer);j++) cout<<rBuffer[j];
23 cout<<endl;
24 spiClose(hSpi);
25 gpioTerminate();
26 return 0;
27 }

Contenu connexe

Similaire à Communication SPI avec la Raspberry Pi 3

Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
webmasterref68
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
Abdo Brahmi
 
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdfNotes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
IMADABOUDRAR1
 
121115 Présentation Arduino Cocoaheads
121115 Présentation Arduino Cocoaheads121115 Présentation Arduino Cocoaheads
121115 Présentation Arduino Cocoaheads
cgodefroy
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
Hafid Moujane
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
Mohammed Lamghari
 
embarqués.pdf
embarqués.pdfembarqués.pdf
embarqués.pdf
sofianePicanto
 
Configuration de-base-d
Configuration de-base-dConfiguration de-base-d
Configuration de-base-d
Nabil EL KASSOUMI
 
Microcontroleur Pic16 F84
Microcontroleur Pic16 F84Microcontroleur Pic16 F84
Microcontroleur Pic16 F84guest1e7b02
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
Hajer Dahech
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
MbarkiIsraa
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
ECAM Brussels Engineering School
 
Utilisation et programmation en c
Utilisation et programmation en cUtilisation et programmation en c
Utilisation et programmation en c
Cecilia Bevilaqua
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
Pôle Systematic Paris-Region
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
Karim Touati
 
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
Romaric Saounde Tsopnang
 
Projet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_pptProjet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_ppt
Mouhcine Nid Belkacem
 
EIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relayEIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relay
mdyabi
 
Exam IIA5 INSAT 2018
Exam IIA5 INSAT  2018Exam IIA5 INSAT  2018
Exam IIA5 INSAT 2018
mustapha hamdi
 

Similaire à Communication SPI avec la Raspberry Pi 3 (20)

Mini projet 3t2i se
Mini projet 3t2i seMini projet 3t2i se
Mini projet 3t2i se
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
 
Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655Etude-Du-Microcontrleur-Pic16f84-160919133655
Etude-Du-Microcontrleur-Pic16f84-160919133655
 
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdfNotes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
Notes de cours sur le microcontrôleur PIC16F84 BADR DIDOUH FSTF.pdf
 
121115 Présentation Arduino Cocoaheads
121115 Présentation Arduino Cocoaheads121115 Présentation Arduino Cocoaheads
121115 Présentation Arduino Cocoaheads
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
 
embarqués.pdf
embarqués.pdfembarqués.pdf
embarqués.pdf
 
Configuration de-base-d
Configuration de-base-dConfiguration de-base-d
Configuration de-base-d
 
Microcontroleur Pic16 F84
Microcontroleur Pic16 F84Microcontroleur Pic16 F84
Microcontroleur Pic16 F84
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Utilisation et programmation en c
Utilisation et programmation en cUtilisation et programmation en c
Utilisation et programmation en c
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
 
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
The iTronics - Arduino + Raspberry Pi Workshop 20-04-2017
 
Projet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_pptProjet boot loader avec le pic16f887_ppt
Projet boot loader avec le pic16f887_ppt
 
EIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relayEIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relay
 
Exam IIA5 INSAT 2018
Exam IIA5 INSAT  2018Exam IIA5 INSAT  2018
Exam IIA5 INSAT 2018
 

Plus de Chiheb Ameur ABID

Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
Chiheb Ameur ABID
 
TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5
TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5
TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5
Chiheb Ameur ABID
 
Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++
Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++
Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++
Chiheb Ameur ABID
 
Configuration "from scratch" d'une distribution Linux sur Raspberry Pi
Configuration "from scratch" d'une distribution Linux sur Raspberry PiConfiguration "from scratch" d'une distribution Linux sur Raspberry Pi
Configuration "from scratch" d'une distribution Linux sur Raspberry Pi
Chiheb Ameur ABID
 
Gestion des erreurs et des exceptions avec C++
Gestion des erreurs et des exceptions avec C++Gestion des erreurs et des exceptions avec C++
Gestion des erreurs et des exceptions avec C++
Chiheb Ameur ABID
 
Développement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry PiDéveloppement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry Pi
Chiheb Ameur ABID
 

Plus de Chiheb Ameur ABID (6)

Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3Mesure de température et humidité  avec le capteur DHT11 et la Raspberry Pi 3
Mesure de température et humidité avec le capteur DHT11 et la Raspberry Pi 3
 
TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5
TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5
TDD (Développement dirigé par les tests) en Java avec JUnit 4 et JUnit 5
 
Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++
Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++
Communication sur le bus i2c entre Raspberry PI et le capteur MCP9808 en C++
 
Configuration "from scratch" d'une distribution Linux sur Raspberry Pi
Configuration "from scratch" d'une distribution Linux sur Raspberry PiConfiguration "from scratch" d'une distribution Linux sur Raspberry Pi
Configuration "from scratch" d'une distribution Linux sur Raspberry Pi
 
Gestion des erreurs et des exceptions avec C++
Gestion des erreurs et des exceptions avec C++Gestion des erreurs et des exceptions avec C++
Gestion des erreurs et des exceptions avec C++
 
Développement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry PiDéveloppement d'un client MQTT sur Raspberry Pi
Développement d'un client MQTT sur Raspberry Pi
 

Dernier

Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
OCTO Technology
 
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
AlbertSmithTambwe
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
OCTO Technology
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Laurent Speyser
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
UNITECBordeaux
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
abderrahimbourimi
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO Technology
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
Université de Franche-Comté
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
AlbertSmithTambwe
 

Dernier (9)

Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...
 
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU  SOUS WINDOWSCOURS D'ADMINISTRATION RESEAU  SOUS WINDOWS
COURS D'ADMINISTRATION RESEAU SOUS WINDOWS
 
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
Le Comptoir OCTO - Équipes infra et prod, ne ratez pas l'embarquement pour l'...
 
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)
 
Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024Le support de présentation des Signaux 2024
Le support de présentation des Signaux 2024
 
Les écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptxLes écrans informatiques au fil du temps.pptx
Les écrans informatiques au fil du temps.pptx
 
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdfOCTO TALKS : 4 Tech Trends du Software Engineering.pdf
OCTO TALKS : 4 Tech Trends du Software Engineering.pdf
 
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'universitéDe l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
De l'IA comme plagiat à la rédaction d'une « charte IA » à l'université
 
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptxPRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
PRESENTATION DE L'ACTIVE DIRECTORY SOUS WINDOWS SERVEUR.pptx
 

Communication SPI avec la Raspberry Pi 3

  • 1. Entrées-sorties et interfaces de communication C.A. ABID 56/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) L’interface SPI L’interface SPI å SPI a été conçue par Motorola dans les années 1980 å SPI est une interface de communication en série synchrone et full-duplex å SPI permet de mettre en communication un composant maître (généralement le micropro- cesseur) et plusieurs périphériques esclaves
  • 2. Entrées-sorties et interfaces de communication C.A. ABID 57/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) L’interface SPI Modes de transmission avec SPI
  • 3. Entrées-sorties et interfaces de communication C.A. ABID 58/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) L’interface SPI sur la RPi3 Connexions SPI sur la RPi3
  • 4. Entrées-sorties et interfaces de communication C.A. ABID 59/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) L’interface SPI sur la RPi3 Activer l’interface SPI Ê Avec raspi-config Interfacing Options ä P4 SPI Ë Éditer le fichier /boot/config.txt sudo nano /boot/config.txt De-commenter et modifier la ligne dtparam=spi=off par dtparam=spi=on Redémarrer la RPi3 Vérifier l’activation de SPI avec gpio readall ou bien lsmod | grep spi
  • 5. Entrées-sorties et interfaces de communication C.A. ABID 60/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) L’interface SPI sur la RPi3 Communication SPI avec pigpio å int spiOpen(unsigned spiChan, unsigned baud, unsigned spiFlags) : initialiser la gestion de l’interface SPI Z spiChan : 0-1; spécifier le canal. 2 pour un canal auxiliaire Z baud : 32K-125M (valeur >30M ne fonctionnent pas) Z spiFlags : les 22 bits du poids le plus faible spécifient les paramètres Z Returns a handle (>=0) if OK, otherwise PI_BAD_SPI_CHANNEL, PI_BAD_SPI_SPEED, PI_BAD_FLAGS, PI_NO_AUX_SPI ou PI_SPI_OPEN_FAILED å Structure de spiFlags ¶ mm : spécifie le mode de transmission SPI
  • 6. Entrées-sorties et interfaces de communication C.A. ABID 61/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) L’interface SPI sur la RPi3 Communication SPI avec pigpio å Structure de spiFlags · px : est 0 si CEx est actif à l’état bas (par défaut), et 1 pour l’état haut ¸ ux : est 0 si la broche CEx est réservée pour SPI (par défaut), sinon 1 ¹ A : est 0 pour le périphérique standard SPI, 1 pour le SPI auxiliaire º W : is 0 if the device is not 3-wire, 1 if the device is 3-wire. Standard SPI device only. » nnnn : defines the number of bytes (0-15) to write before switching the MOSI line to MISO to read data. This field is ignored if W is not set. Standard SPI device only. ¼ T : is 1 if the least significant bit is transmitted on MOSI first, the default (0) shifts the most significant bit out first. Auxiliary SPI device only. ½ R : is 1 if the least significant bit is received on MISO first, the default (0) receives the most significant bit first. Auxiliary SPI device only. ¾ bbbbbb : defines the word size in bits (0-32). The default (0) sets 8 bits per word. Auxiliary SPI device only
  • 7. Entrées-sorties et interfaces de communication C.A. ABID 62/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) Communication entre RPi3 et Arduino Uno via SPI Mise en application å On désire envoyer un message de la carte Raspberry vers la carte Arduino en utilisant l’interface SPI
  • 8. Entrées-sorties et interfaces de communication C.A. ABID 63/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) Montage Branchement : MOSI Ö MOSI, MISO Ö MISO, SCK Ö SCK et GND Ö GND
  • 9. Entrées-sorties et interfaces de communication C.A. ABID 64/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) Communication entre RPi3 et Arduino Uno via SPI Programme C sur l’Arduino Uno (Mode esclave) 1 #include <SPI.h> 2 volatile int rSize = 0; 3 volatile bool finish = false; 4 char myArray[100]; 5 void setup() { 6 Serial.begin(9600); 7 pinMode(MISO, OUTPUT);pinMode(SCK, INPUT); 8 SPCR |= bit(SPE); // turn on SPI in slave mode 9 SPI.attachInterrupt(); // turn on interrupts 10 Serial.println("Initialization done..."); 11 } 12 13 ISR (SPI_STC_vect) // SPI interrupt routine 14 { 15 myArray[rSize] = SPDR; 16 if (myArray[rSize] == ’!’) finish = true; 17 rSize++; 18 } // end of interrupt service routine (ISR) for SPI 19 20 void loop () { 21 if (finish) { 22 Serial.print("Received message : "); 23 for (int i = 0; i < rSize; i++) 24 Serial.print((char)myArray[i]); 25 Serial.println("n============================================="); 26 rSize = 0; finish = false; 27 } 28 }
  • 10. Entrées-sorties et interfaces de communication C.A. ABID 65/ 82 Communication avec l’interface SPI (Serial Peripheral Interface) Communication entre RPi3 et Arduino Uno via SPI Programme C++ sur la RPi3 (Maître) 1 #include <iostream> 2 #include <pigpio.h> 3 #include <cstring> 4 using namespace std; 5 6 int main(int argc, char *argv[]) { 7 if (gpioInitialise() < 0) { 8 cout << "Error initializing pigpio library..." << endl; 9 exit(-1); 10 } 11 uint32_t flags=0x00; 12 int hSpi=spiOpen(0,100000,flags); 13 if (hSpi>0) { 14 cout << "Error SPI initialization..."<<endl; 15 gpioTerminate(); 16 exit(-1); 17 } 18 const char *sBuffer="Hello world SPI!"; 19 char rBuffer[100]; 20 spiXfer(hSpi,(char *)sBuffer,(char *)rBuffer,strlen(sBuffer)); 21 cout<<"Received : "; 22 for (size_t j=0;j<strlen(sBuffer);j++) cout<<rBuffer[j]; 23 cout<<endl; 24 spiClose(hSpi); 25 gpioTerminate(); 26 return 0; 27 }