Arduino, poorten samenvoegen

Hiho,

Ik heb een arduino met een nokia 6100 lcd shield om e.e.a. af te kunnen lezen.

Daarnaast heb ik ook een sdcard logger shield om e.e.a. op te kunnen nemen.

Op de lcd shield zijn poorten 8:lcd_RESET, 9:lcd_CS, 11:lcd_SPI_DIO & 13:lcd_SPI_SCK hardware matig gekoppeld.

Op het sdcard shield zijn poorten 10:Sd_CS(outp), 11:SdSPI_MOSI, 12:SdSPI_MISO & 13SdSPI_SCK hardware matig gekoppeld.

Helaas ben ik op processor gebied en de bijbehorende technische termen, meestal afkortingen, een beginner cq leek.

Tot dan toe kon ik beide shields tesamen gebruiken zonder problemen (clashes tussen beide shields) te ontdekken.

Kennelijk kan men dus poorten samenvoegen, of is het gewoon puur geluk dat er geen clashes ontstaan?

Ik stel deze vraag omdat ik naast deze 2 hardgecodeerde shields nu
ook nog een 2.4gHz transceiver wil gaan toevoegen welke volgens opgave de poorten 7:Rf_CSN*, 8:Rf_CE*, 11:Rf_MOSI, 12:Rf_MISO & 13:Rf_SCK nodig zullen hebben.
(poort *7 & *8 kunnen verplaatst worden, de 11, 12 & 13 moeten daar staan)

Aangezien het gaat om shields gaat is het een beetje moeilijk om het gewoon eerst op een breadboard te testen, vandaar dat ik graag wat advies wil inwinnen over de mogelijkheid om meerdere shields/ functies op dezelfde poorten te gebruiken.

Bv zoals de CS, Clock Select:
Kan ik de 7:Rf_CSN* van de 2.4gHz gewoon op pin 9:lcd_CS van de lcd, of op pin 10:Sd_CS van de sd card logger solderen?

En die spi pins, mag ik van de 2.4ghz transceiver de Rf_MOSI, Rf_MISO & Rf_SCK nog toevoegen op pins 11,12& 13, waar ook de andere shields al gebruik van maken?

En als laatste, weet iemand een leuke link waar men (beginners) uitleg geeft over wat CS'n, SPI'tjes en dergelijke inhouden?

Alvast bedankt;

NokDoc

DEADBEEF

Je kunt die shields gewoon samen gebruiken omdat de gebruikte poorten op een slimme manier doorgekoppeld worden.

Daar wordt de CS (afkorting komt uit de 70's en betekend Chip-Select) gebruikt. Nu dus als 'Shield Select'. Alleen als dat signaal actief is gaat het betreffende shield iets doen met de poorten.
Zo wordt dus voorkomen dat er clashes ontstaan.

SPI is een serieel, doorlusbaar, communicatie methode. Zie http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus voor goede uitleg.
De shields communiceren dan via de SPI bus en zijn doorgelust (zoals in het plaatje op wikipedia).

Hi Mr. Sdk,

De wiki link over spi is best verhelderend, bedankt, het is dus mogelijk om CLK/MOSI/MISO te combineren.

De ChipSelect (CS/SS) pin blijft een beetje raadselachtig voor mij, er zijn 2 mogelijkheden, de 'daisy-chain' of de 'typical' spi mode.

>> Kan ik de 7:Rf_CSN* van de 2.4gHz gewoon op pin 9:lcd_CS van de lcd, of op pin 10:Sd_CS van de sd card logger solderen?

De sdlogger en de lcd gebruiken beide een unieke arduino pin voor de CS.

Mag ik daarom aannemen dat we over 'independant slaves' mode praten en ik voor de 2.4gHz transceiver dus een unieke pin zal moeten gebruiken, dus niet pin 9 of 10?

TnX;

NokDoc

DEADBEEF

Als je de "CS" lijn van de meeste SPI apparaten actief maakt, dan gaan ze luisteren. Vrijwel alle SPI chips denken dat zij dan de enige zijn.

In theorie zou je een aantal SPI apparaten kunnen maken die alle data doorclocken op hun "SDO" pin, maar dat is niet gebruikelijk.

Kortom, normaliter kan je MOSI MISO en SCLK naar alle verschillende shields sturen, terwijl je voor iedere shield een aparte "CS" nodig hebt.

Ik heb net een "uitbreidingssysteem voor arduino op basis van SPI" gemaakt. Hier heb ik alle uitbreidingsbordjes zelf onder controle omdat ze op basis van een Attiny44 zijn. Dus tussen MIJN spi bordjes is afgesproken dat de eerste byte het "adres" is. Heeft ie adres 0x82, en komt er 0x86 als eerste byte, luistert ie verder niet meer.

MIJN SPI bordjes kan je dus direct doorlussen zonder steeds een nieuwe "CS" lijn te moeten verzinnen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Hi Mr. Rew,

Als ik het goed begrijp, heb jij dus jouw shields ge-'daisy-chained'.

Met dat principe kun je inderdaad pins uitsparen welke je voor andere toepassingen kunt gebruiken.

Helaas ben ik afhankelijk van 2 voorgedrukte shields en zal ik dus zonder hardware aanpassingen dit niet kunnen realiseren.

>> terwijl je voor iedere shield een aparte "CS" nodig hebt..

Kan ik voorlopig wel mee uit de voeten.

Bedankt;

NokDoc

DEADBEEF