SPI : comment faire cohabiter 2 modules ?

Bonjour à tous,

Je tente de faire fonctionner 2 "modules" communiquant en SPI sur mon NANO ...

indépendamment, les 2 fonctionnent très bien ! mais une fois ensemble "ca veut plus" 8)

J'ai lu ici ou la qu'il fallait utiliser le mode slave/master ... mais je n'y ai rien compris ! :sob:

mes modules sont ILI9340 et un MS5541

Merci pour vos aides !

Bonjour,
As-tu bien un chip select différent pour chaque module ?
@+

icare:
Bonjour,
As-tu bien un chip select différent pour chaque module ?
@+

...je vais passer pour un super débutant (pas completement faux d'ailleur :frowning: ) :
sur le ILI9340 : oui
sur le MS5541 : pas besoin (d'apres les docs ...)

mais je sais pas comment faire pour les "adresser" ou pour "activer" le chip select ... :confused:

hatoupix:
...je vais passer pour un super débutant (pas completement faux d'ailleur :frowning: ) :
sur le ILI9340 : oui
sur le MS5541 : pas besoin (d'apres les docs ...)

mais je sais pas comment faire pour les "adresser" ou pour "activer" le chip select ... :confused:

bonjour
ça aurait été trop simple :grin:
mets tes 2 codes

#include <MS5541.h>
MS5541 PressSensor;
float airPressure;
float waterPressure;

...

PressSensor.update();
Serial.println(PressSensor.get2ndTemperatureC());
...


et pour l'écran
#include <ILI9341_due_gText.h>
#include <ILI9341_due.h>

#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8

ILI9341_due tft(TFT_CS, TFT_DC, TFT_RST);
ILI9341_due_gText txt(&tft);

...
  tft.begin();
  tft.fillScreen(COULEUR_FOND); 
txt.drawString("test", 20, 10);
...

hatoupix:

#include <MS5541.h>

MS5541 PressSensor;
float airPressure;
float waterPressure;

...

PressSensor.update();
Serial.println(PressSensor.get2ndTemperatureC());
...

et pour l'écran
#include <ILI9341_due_gText.h>
#include <ILI9341_due.h>

#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8

ILI9341_due tft(TFT_CS, TFT_DC, TFT_RST);
ILI9341_due_gText txt(&tft);

...
 tft.begin();
 tft.fillScreen(COULEUR_FOND);
txt.drawString("test", 20, 10);
...

Sans garantie
mais a essayer
normalement CS est actif à LOW
lorsque tu accede à ton 5541 , essaye prealablement de mettre TFT_CS à HIGH
et remet le à LOW en sortie d'appel au5541

Artouste:
Sans garantie
mais a essayer
normalement CS est actif à LOW
lorsque tu accede à ton 5541 , essaye prealablement de mettre TFT_CS à HIGH
et remet le à LOW en sortie d'appel au5541

Ca ne donne rien ...

hatoupix:
Ca ne donne rien ...

Par acquis de conscience tu a tenté l'inverse : active HIGH au lieu de LOW ?
si ça ne fonctionne toujours pas
voir pour passer le compo le plus lent sur su SPI soft
ou utiliser des mux/demux analogiques sur les lignes SPI.

Artouste:
Par acquis de conscience tu a tenté l'inverse : active HIGH au lieu de LOW ?
si ça ne fonctionne toujours pas
voir pour passer le compo le plus lent sur su SPI soft
ou utiliser des mux/demux analogiques sur les lignes SPI.

J'avais bien essayé l'inversion .... mais rien de plus !

je ne comprends pas : "voir pour passer le compo le plus lent sur su SPI soft" :o

et si je peux éviter les multiplexeurs ca m'arrangerais car la où est prévu mon montage j'ai extrement peu de place ...

Merci !

hatoupix:
J'avais bien essayé l'inversion .... mais rien de plus !

je ne comprends pas : "voir pour passer le compo le plus lent sur su SPI soft" :o

et si je peux éviter les multiplexeurs ca m'arrangerais car la où est prévu mon montage j'ai extrement peu de place ...

Merci !

Quand tu expose ça ne "marche" pas qu'est ce qui ne fonctionne pas/plus ?
ça se traduit comment pour toi ?

ton affichage est rafraichi mais tu n'obtient pas de valeur du 5541 ?
ou tu bloque directement ton programme ?

utiliser une lib SPI soft pour le MS5541 ça implique de la consommation de pin
ou (idée rapide un peu brutale 8) ) gerer l'alim du 5541

Un transistor entre le VCC et ton module SPI pour commander sa tension :wink:

derder9161:
Un transistor entre le VCC et ton module SPI pour commander sa tension :wink:

tu aurais un montage ? :blush:

pour info j'utilise déja un 4060 pour alimenter mes SPI

merci !

Artouste:
Quand tu expose ça ne "marche" pas qu'est ce qui ne fonctionne pas/plus ?
ça se traduit comment pour toi ?

--> il n'y a plus rien à l'écran, comme si il y avait des "perturbations" dessus ...

ton affichage est rafraichi mais tu n'obtient pas de valeur du 5541 ?
ou tu bloque directement ton programme ?

rien de débloque au niveau du programme mais rien ne fonctionne non plus (pas de données de mon capteur)

utiliser une lib SPI soft pour le MS5541 ça implique de la consommation de pin
ou (idée rapide un peu brutale 8) ) gerer l'alim du 5541

... avec le trastistor indiqué dans le post précédent ?

hatoupix:
--> il n'y a plus rien à l'écran, comme si il y avait des "perturbations" dessus ...
rien de débloque au niveau du programme mais rien ne fonctionne non plus (pas de données de mon capteur)

... avec le trastistor indiqué dans le post précédent ?

Tu a un oscilloscope ?

Artouste:
Tu a un oscilloscope ?

non ...

hatoupix:
non ...

bon
alors il va falloir y aller à tatons :grin:
si tu deconnecte ton ecran , tu obtient des valurs OK en serial du 5541 ?
si tu deconnecte ton 5541 , ton ecran est OK ?

Artouste:
bon
alors il va falloir y aller à tatons :grin:
si tu deconnecte ton ecran , tu obtient des valurs OK en serial du 5541 ?
si tu deconnecte ton 5541 , ton ecran est OK ?

Oui et oui

idem si ils restent tous les 2 connectés MAIS si je n'en déclare qu'un dans le code

hatoupix:
Oui et oui

idem si ils restent tous les 2 connectés MAIS si je n'en déclare qu'un dans le code

alors 2eme phase 8)
tu declare les 2
tu alimente les 2
et tu regarde a partir de quelle connection de ligne SPI ajoutée/retranchée ça coince/repart

il faut considerer les 2 dispositifs , donc papier crayon pour faire un "joli tableau" :grin:

Artouste:
alors 2eme phase 8)
tu declare les 2
tu alimente les 2
et tu regarde a partir de quelle connection de ligne SPI ajoutée/retranchée ça coince/repart

il faut considerer les 2 dispositifs , donc papier crayon pour faire un "joli tableau" :grin:

bon pô facile ... mais rien de tip top : si les 2 sont déclarés et si je débranche l'un (j'ai déjà essayé un par un ) ... eh bien ca ne fonctionne toujours pas ...

c'est donc très certainement un problème soft ...

hatoupix:
bon pô facile ... mais rien de tip top : si les 2 sont déclarés et si je débranche l'un (j'ai déjà essayé un par un ) ... eh bien ca ne fonctionne toujours pas ...

c'est donc très certainement un problème soft ...

la probalité non nulle est grande :grin:
ton code et les libs utilisées