Pages: [1]   Go Down
Author Topic: bus SPI 1 maître et 2 esclaves, comment fait on ?  (Read 1399 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,

Est il possible de connecter 2 périphériques sur le bus SPI de l'Arduino ? :
Un capteur Pression/température (SCP1000)
+
1 mémoire EEPROM (ou 1 mémoire flash) ?

En théorie, je suppose que oui….
     - Activer le capteur, lire ses données, désactiver le capteur.
     - Activer l'EEPROM, y écrire des données, désactiver l'EEPROM
Etc…

Mais je suis bloqué à la première étape :

Comment sélectionne t'on l'esclave à qui l'on s'adresse ?  :-?

J'ai bien compris qu'il fallait mettre SS à '0'
digitalWrite(SLAVESELECT,LOW);

Mais comment différencie t'on un esclave d'un autre ...matériellement je veux dire... :-?

...si quelqu'un peut m'aider..... :smiley
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hum hum ... :smiley
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hum, hum....help  :-[

Je suppose qu'il faut un autre connecteur pour brancher le 2° esclave...

Quelqu'un l'a t'il fait ?
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suppose que tu peux envoyé des chaines de caractères (string) dans lesquels certains caractères serviront à identifier les différents "esclaves".

Par exemple tu pourrais envoyer :

At3BsCm4x15.....

A, B, C seraient les identités et "t"voudrais dire à "A" lit la température sur le capteur numéro 3, "B" doit envoyer (s pour send) ses infos au "maitre" et "C" doit bouger le motor stepper 4 de  15 pas dans la direction "x".

Tu peux faire ça avec les pins Rx/Tx, avec l'ISP je suppose que c'est possible.
« Last Edit: February 01, 2009, 01:28:23 pm by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hum, hum... :-/

Déjà merçi pour cette réponse, mais je ne comprends toujours pas,

J'ai cru comprendre que la sélection de l'esclave se fait par le pin SS, mais autant d'esclaves, autant de pins différents??? c'est çà que je ne comprends pas bien,
DOnc on pourrait définir SS comme étant sur les pins 10 et 5 par exemple ???
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Un lien vers les spécifications des périphériques que tu veux utiliser serait pas mal.
« Last Edit: February 03, 2009, 10:58:16 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

le capteur serait par exemple le SCP1000
http://www.sparkfun.com/commerce/product_info.php?products_id=8161

et une carte SD comme par exemple
http://www.sparkfun.com/commerce/product_info.php?products_id=544
 :smiley
Logged

Switzerland
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salu 'harima2',

est-ce que tu as trouvé une solution pour cette probleme (2 slave devices on one ARDUINO)?.

J'ai exactement le même probleme et j'aimerai the connaitre la solution.

Merice, Hans.
Logged

Dig-IT-all

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si tu a deux esclaves, il te faut deux Chip Select (CS ou SS), un pour chaque circuit.
Logged

Switzerland
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, compris. Mais comment puis-je separer les deux esclaves si'ils sont sur le même ARDUINO PIN 10 (SS)? La separation doit être fait dans le code, correct? Et comment? Esc-que il y a une example quelques parts?
Merci pour l'aide,
Hans.
Logged

Dig-IT-all

0
Offline Offline
Full Member
***
Karma: 0
Posts: 198
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

À mon avis tu ne peux pas, il faut une sortie Arduino par esclaves, que tu va mettre à 0 ou à 1 pour choisir tel ou tel composant. Je vois pas trop comment ça peut marcher sinon  :-?

Si tu veux, il y a un schéma sur Wikipedia qui explique la topologie du bus et le SPI en général : http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus
« Last Edit: June 01, 2009, 11:57:38 am by Vincent » Logged

France
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3531
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut un chip select pour chacun des périphériques. Tous les autres signaux sont partagés.
Pour dialoguer avec un périphériques, tu mets à zéro son chip select, tu fais les transferts lecture/écriture, tu remontes le chip select. Si tu as plusieurs périphériques il ne doit y avoir qu'un seul chip select à zéro à la fois sinon tu auras des conflits sur la ligne MISO.
Le chip select peut être n'importe laquelle des sorties logiques de l'Arduino. La ligne SS n'a une fonction dédiée que si tu utilises le port SPI du processeur dans le mode esclave.
Logged

Switzerland
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour vos reponses.

J'ai compris en theorie, mais comment fair en pratique?

J'ai commençé un 'thread' du même topic en anglais:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1244417398.

A bientôt, Hans.
Logged

Dig-IT-all

France
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3531
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je te l'ai dit au dessus :
Tu connectes le chip select d'un esclave (disons SLAVESELECT1) sur une sortie logique (disons la sortie 2).
Tu connectes le chip select du 2eme esclave (disons SLAVESELECT2) sur une autre sortie logique (disons la sortie 3)
Ensuite dans ton code :

digitalWrite(SLAVESELECT1,LOW);
 ton code pour transférer les données
digitalWrite(SLAVESELECT1,HIGH);
digitalWrite(SLAVESELECT2,LOW);
 ton code pour transférer les données
digitalWrite(SLAVESELECT2,HIGH);
Logged

Pages: [1]   Go Up
Jump to: