Hallo,
bisher habe ich nur mit SPI (erste) Erfahrungen gesammelt.
Jetzt die zwei für mich wichtigen Fragen:
Könnte ich Sensoren die nur eine SPI Schnittstelle haben auch mit einem
µC auslesen, der nur eine SSI-Schnittstelle hat?
Könnte ich hier dann auch die Daten von mehrere Sensoren über eine
SSI-Schnittstelle einlesen?
Und jetzt noch meine dargelegte persönliche Verwirrung:
Ich hab hier ein bisschen rumgeschaut und anders herum scheint es zu
gehen (also Sensor mit SSI über SPI auslesen)
Aber so ganz schlau werd ich ausdem SSI nicht.
Der eine sagt
SSI is ein abgespecktes SP
der andere sagt
SSI is ein abgespecktes I2C
und wieder einer sagt:
man kann mit SSI nur Datenempfangen, aber keine Daten senden (also keine
Geräte konfigurieren)
Letzteres hört sich sehr dubios an :]
Ah ich sehe grad im Datenblatt von dem Stellaris ARM Cortex M3, dass man
die SSI-Schnittstelle für SPI verwenden kann.
Insofern geht es wohl.
Aber klappt das dann auch noch mit mehreren Sensoren (z.B. zwei
Beschleunigungssensoren) über diese "SSI als SPI
eingestellte"-Schnittstelle?
The SSI allows to connect up to 3 slaves to a common clock. Therefore,
it is possible to attain values from multiple sensors.
Timmo H. schrieb:> http://en.wikipedia.org/wiki/Synchronous_Serial_Interface
Da steht nichts über SPI. Es beantwortet meine primären Fragen nicht.
Die dortige Aussage "The SSI allows to connect up to 3 slaves to a
common clock. Therefore, it is possible to attain values from multiple
sensors." hilft mir nicht, da ich ja wenn dann drei SPI-Slaves
anschließen will.
Bei SPI kann man ja normalerweise beliebig viele Slaves an einen Bus
hängen.
Hallo,
es gibt ein paar identische Dinge zwischen SSI und SPI, weshalb
sicherlich auch Verwirrung entsteht. Das ursprüngliche Protokoll ist
eine synchrone unidirektionale Kommunikation. Somit etwas wie ein halbes
SPI.
SPI benötigt jedoch bei mehreren Sensoren (Slaves) ein ein-eindeutiges
Selektierungssignal. Somit muß zu den Sensoren ein Chip-Select geführt
werden, oder vor dem µC ein entsprechender Multiplexer aufgebaut werden.
Welchen µC willst Du einsetzten ? Stellaris ARM Cortex M3 ?
rene p schrieb:> Ich hab hier ein bisschen rumgeschaut und anders herum scheint es zu> gehen (also Sensor mit SSI über SPI auslesen)
Kommt auf die Datenbreite der SSI Schnittstelle an. SPI macht in der
Regel 8, SSI bis zu 24 Bit. Man muss dann halt mehrmals einlesen.
> Aber so ganz schlau werd ich ausdem SSI nicht.
Prinzip ist simpel. Jeder clock toggle schiebt ein Bit aus dem SSI Gerät
raus. Da das bei bei SPI genau so ist kann! man SSI über SPI empfangen.
> Der eine sagt> SSI is ein abgespecktes SP
Nein, es ist eine Schnittstelle die speziell für Drehgeber entwickelt
wurde.
> der andere sagt> SSI is ein abgespecktes I2C
Der "andere" liegt falsch
>> und wieder einer sagt:> man kann mit SSI nur Datenempfangen, aber keine Daten senden (also keine> Geräte konfigurieren)
Richtig, one way
rene p schrieb:> Aber klappt das dann auch noch mit mehreren Sensoren (z.B. zwei> Beschleunigungssensoren) über diese "SSI als SPI> eingestellte"-Schnittstelle?
SSI ist ein simples Schieberegister. Du kannst da nicht zwei Sensoren
auf einen µC Eingang legen.
rene p schrieb:> Die dortige Aussage "The SSI allows to connect up to 3 slaves to a> common clock.
SSI Ausgang ist der slave, du bist immer master. Da steht nur das du 3
slaves mit einem clock versorgen kannst.
> Therefore, it is possible to attain values from multiple> sensors." hilft mir nicht, da ich ja wenn dann drei SPI-Slaves> anschließen will.
Wie jetzt? Da SSI immer slave ist bist du (SPI) immer master.
Sunny schrieb:> Welchen µC willst Du einsetzten ? Stellaris ARM Cortex M3 ?
Jop genau - und wie gesagt: Bei dem Stellaris kann man anscheinend über
ein Register die SSI als SPI Schnittstelle konfigurieren - oder
zumindest als solche verwenden.
Nur wäre es für mich halt echt wichtig, mehr als drei der SPI-Sensoren
an einen der (nur) zwei vorhanden Busse anschließen zu können. Geht das
?
ggggggGast schrieb:> Richtig, one way
Ich denke es is nur nicht full duplex - aber sowie ich das Bild bei
Wikipedia interpretiere, kann man da schon Daten schicken...
ggggggGast schrieb:> Kommt auf die Datenbreite der SSI Schnittstelle an. SPI macht in der> Regel 8, SSI bis zu 24 Bit. Man muss dann halt mehrmals einlesen.
Hm, mein ADU hier hat 32 bit und die Übertragung geht über ein 32-bit
breites SPI-Register mit nem PIC.
Beschleunigungssensoren haben meistens 16-bit. Deshalb gibt es bei dem
PIC den 16-bit Modus. Also ich würde nicht sagen, des SPI in der Regel
8-bit macht :)
ggggggGast schrieb:> Wie jetzt? Da SSI immer slave ist bist du (SPI) immer master.
wie jetzt ? :)
SSI ist nicht immer Slave ? Hä?
Hier liegt wohl ein Missverständnis vor. Nochmal:
Ich hab ein SSI-Interface am µC. Damit möchte ich verschiedene Sensoren
einlesen, die alle SPI haben. Und zwar mehr als drei.
Mein Master sollte ja wohl auch mein µC sein. Sonst wird des glaub ich
weng chaotisch.
Hallo,
die typische Verwirrung über Master und Slave. Definieren wir einfach
mal als Master, welcher den Takt ausgibt. Der Slave empfängt den Takt
und schickt die Daten synchron raus. Aus diesem Bild ergibt sich quasi
automatisch, das der µC der Master ist und die Sensoren die Slaves.
Die Diskussion über 8Bit oder 32Bit SPI ist unnötig, da mehrere 8Bit SPI
Transfers ja wieder ein entsprechendes Vielfaches an Bits ergibt. Viele
SPI Komponenten können darüber hinaus überzählige Takte "übersehen".
Wichtig ist das Chip Select. Nochmal die Frage, wie erzeugst Du Dein
Chip Select ( oder Slave Select ) für die Sensoren ?
rene p schrieb:> SSI ist nicht immer Slave ? Hä?> Hier liegt wohl ein Missverständnis vor. Nochmal:> Ich hab ein SSI-Interface am µC. Damit möchte ich verschiedene Sensoren> einlesen, die alle SPI haben. Und zwar mehr als drei.
Dann ist das ein anders SSI. Das aufgeführte ist eine
Automatisierungsschnittstelle für Drehgeber. Dein SSI wird ein
universelles serielles Interface sein (z.b. USART bei PIC) und hat mit
dem Industrie SSI nichts zu tun.
Sunny schrieb:> Aus diesem Bild ergibt sich quasi> automatisch, das der µC der Master ist und die Sensoren die Slaves
Genau.
Sunny schrieb:> Nochmal die Frage, wie erzeugst Du Dein> Chip Select ( oder Slave Select ) für die Sensoren ?
naja ich hätte halt gedacht, dass ich einfach pro Sensor jeweils einen
der verfübaren GPIOs als Chip Select verwende. Naja und dann eben einen
sternförmigen Aufbau (also alle SDOs von den Sensoren auf den SDI vom
Master). Das sollte ja eigentlich kein Problem sein :]
Was bringt eigentlich dieser kaskadierte Aufbau, bei dem jeweils der SDO
von einem Slave mit dem SDI von einem weiteren Slave verbunden wird?
Somit würden ja Messdaten erstmal in den SDI vom nächsten Sensor
wandern.
Und der würde doch dann die Daten als Konfigurationseinstellungen
ansehen...
..aso, das ist nur für Speicherbausteine sinnvoll, um höhere Wortbreiten
zu erzielen? Hm, auch dann kapier ich nicht, was da los is, aber is ja
auch worscht :]
ggggggGast schrieb:> Dann ist das ein anders SSI. Das aufgeführte ist eine> Automatisierungsschnittstelle für Drehgeber. Dein SSI wird ein> universelles serielles Interface sein (z.b. USART bei PIC) und hat mit> dem Industrie SSI nichts zu tun.
Kann gut sein.
Hubert Reiter schrieb:> Du kannst nur eine Encoder an einer> SPI Schnittstelle anschließen.
Versteh ich nicht - ich will keinen Encoder sondern ICs mit digitalen
Ausgängen anschließen (Druck, Beschleunigung, ADCs).
Über logische Leitungen zu den einzelnen Devices kann man über Chip
Select oder Slave Select (wie auch immer man es nenne mag) bestimmen,
von wo gerade die Daten gelesen werden sollen (bzw. wohin
Konfigurationseinstellungen gesendet werden sollen).
Man benötigt somit für jedes Device noch einen GPIO vom µC. Sollte doch
echt kein Problem sein :]