Hallo zusammen, ich habe eine vielleicht dumme Frage bzgl. der Baudrate für eine SPI Schnittstelle: Mein uC (Master) wird mit einer 24MHz Frequenz getaktet. Im Bus hängen ein paar Sensoren. Die maximale SPI-Frequenz Anforderung des "schwächsten" Sensors sind laut Datenblatt 840kHz. Wie entscheide ich jetzt welche Baudrate ich wähle? Gibt es irgendwas, was ich beachten muss? Danke!
Hannes schrieb: > Wie entscheide ich jetzt welche Baudrate ich wähle? Über das Datenblatt des verwendeten MC natürlich. Nur dieses kann dir sagen, wie man das SPI bedient und konfiguriert. Da wir hier am anderen Ende des Internet nicht wissen, was du da verbaut hast, gehts nicht detaillierter. Es ist nur klar, das die Geschwindigkeit des SPI sich nach der langsamen Peripherie richten muss, sonst kriegt die nicht alles mit. Ist diese nicht selektiert, kanns auch schneller sein, das entscheiden die anderen Chips am SPI.
:
Bearbeitet durch User
Matthias S. schrieb: > [...] Es ist nur klar, das die > Geschwindigkeit des SPI sich nach der langsamen Peripherie richten muss [...] ...wenn sie zur Laufzeit nicht umgeschaltet werden soll. Bei allen MCU, die ich kenne, stellt man den SPI-Takt mit irgendeinem Teiler ein.
Walter T. schrieb: > ...wenn sie zur Laufzeit nicht umgeschaltet werden soll. Deswegen schrieb ich: Matthias S. schrieb: > Ist diese nicht selektiert, kanns auch > schneller sein, das entscheiden die anderen Chips am SPI. Hannes schrieb: > Einen SAMD21J18A Schön. Dann schau dir nun sein Datenblatt an und suche die SPI Peripherie.
:
Bearbeitet durch User
Matthias S. schrieb: > Schön. Dann schau dir nun sein Datenblatt an und suche die SPI > Peripherie Ich habe folgende Formel im Datenblatt gefunden: BAUD = fref/2*fBaud-1 Wenn ich das jetzt richtig verstehe ist - BAUD das was ich ins Baudraten-Register schreiben muss und - fref die o.g. 24MHz Meine Frage ist jetzt wie ich fBaud festlege... Dazu habe ich im Datenblatt nichts gefunden.
Hannes schrieb: > Dazu habe ich im > Datenblatt nichts gefunden. Abgesehen von fBaud <= fref/2. Aber diese Bedingung ist ja ohnehin erfüllt, wenn meine max. mögliche Baudrate bedingt durch die anderen Sensoren 840kHz ist.
Hannes schrieb: > Meine Frage ist jetzt wie ich fBaud festlege... Dazu habe ich im > Datenblatt nichts gefunden. Das ist deine gewünschte Taktfrequenz!! OMG!
Hannes schrieb: > Wie entscheide ich jetzt welche Baudrate ich wähle? > Gibt es irgendwas, was ich beachten muss? Kurze Antwort: So schnell wie nötig, so langsam wie möglich. Lange Antwort: Einen Temperatursensor mit 24 MHz SPI-Takt auslesen zu wollen (gesetzt dem Falle, er unterstützt diese Geschwindigkeit) wird wohl kaum einen Vorteil bringen - dafür aber höhere Anforderungen an das Layout. Andererseits ein 12-Bit ADC, der mit einer Samplerate von 1MSPS arbeiten soll, wird wohl mit einer SPI-Taktrate von 1kHz etwas unterversorgt sein. Du musst doch wissen: - was an Sensoren ausgelesen werden soll - wie schnell das ganze geschehen soll (oder ggf. muss) - wie hoch die Datenrate dazu sein muss, damit die Verarbeitung der Daten im gewünschten Zeitrahmen stattfinden kann
Hannes schrieb: > Die maximale SPI-Frequenz Anforderung des > "schwächsten" Sensors sind laut Datenblatt 840kHz. Wenn es unkritisch ist, stellt man einmal diese recht langsame Baudrate ein und gut. Wenn man die anderen Sensoren schneller ansprechen will, muss man vor jedem Zugriff die Baudrate umstellen.
Stefan S. schrieb: > Kurze Antwort: So schnell wie nötig, so langsam wie möglich. > > Lange Antwort: > Einen Temperatursensor mit 24 MHz SPI-Takt auslesen zu wollen (gesetzt > dem Falle, er unterstützt diese Geschwindigkeit) wird wohl kaum einen > Vorteil bringen - dafür aber höhere Anforderungen an das Layout. > Andererseits ein 12-Bit ADC, der mit einer Samplerate von 1MSPS arbeiten > soll, wird wohl mit einer SPI-Taktrate von 1kHz etwas unterversorgt > sein. > > Du musst doch wissen: > - was an Sensoren ausgelesen werden soll > - wie schnell das ganze geschehen soll (oder ggf. muss) > - wie hoch die Datenrate dazu sein muss, damit die Verarbeitung der > Daten im gewünschten Zeitrahmen stattfinden kann ok, vielen Dank!
Hannes schrieb: > Wie entscheide ich jetzt welche Baudrate ich wähle? So hoch wie nötig, so niedrig wie möglich. Hannes schrieb: > wenn meine max. mögliche Baudrate bedingt durch die anderen Sensoren > 840kHz ist. Du musst den Bus nicht nach "dem schwächsten" oder besser "dem langsamsten" Teilnehmer auslegen. Du kannst den Bus "zwischendurch" auch mit 12MHz fahren, nur darfst du dabei nicht den langsamen 840kHz-SPI-Slave per SS# aktivieren. EDIT: Hoppla, Tab vergessen, zu spät gesendet... ;-)
Ich wechsel auch im Betrieb die Clock-Frequenz. Das sollte natürlich vorher passieren, bevor der Chip-Select der entsprechenden Chips herunter gezogen wird und die Kommunikation beginnt.
PittyJ schrieb: > Ich wechsel auch im Betrieb die Clock-Frequenz. Soso, "Clock-Frequenz". https://www.stupidedia.org/stupi/Denglisch
Aus https://de.wikipedia.org/wiki/Serial_Peripheral_Interface Die drei gemeinsamen Leitungen, an denen jeder Teilnehmer angeschlossen ist, sind: SCLK (englisch Serial Clock) auch SCK, wird vom Master zur Synchronisation ausgegeben MOSI oder SIMO (englisch Master Output, Slave Input) MISO oder SOMI (englisch Master Input, Slave Output) Deshalb Clock Frequenz.
Falk B. schrieb: > PittyJ schrieb: >> Deshalb Clock Frequenz. > > Quark! Wenn schon, dann Taktfrequenz! Falk B. schrieb: > PittyJ schrieb: >> Ich wechsel auch im Betrieb die Clock-Frequenz. > > Soso, "Clock-Frequenz". Wie sagte Dieter Nuhr so schön? ... Clock ist die Kurzform von Clock Signal, auf gut deutsch Taktsignal. Und natürlich muss das Ding auch eine Frequenz haben.
Hannes schrieb: > ich habe eine vielleicht dumme Frage bzgl. der Baudrate für eine SPI > Schnittstelle In der Tat sehr dumm. SPI hat nämlich gar keine Baudrate. Aber das SCK Signal hat eine Taktfrequenz. > Mein uC (Master) wird mit einer 24MHz Frequenz getaktet. Im Bus hängen > ein paar Sensoren. Die maximale SPI-Frequenz Anforderung des > "schwächsten" Sensors sind laut Datenblatt 840kHz. > > Wie entscheide ich jetzt welche Baudrate ich wähle? Na offensichtlich darf die Taktfrequenz an SCK nicht höher sein als die besagten 840kHz. Die meisten µC stellen die Taktfrequenz für SPI als einen gewissen Bruchteil einer Referenzfrequenz ein [1]. Da hast du nur eine gewisse Anzahl diskreter Frequenzen zur Auswahl. Alles oberhalb 840kHz scheidet aus. Alles unterhalb 840kHz geht im Prinzip. Aber irgendwann wird es dann halt auch zu langsam für deine Anwendung. Du willst deine Sensoren ja wohl innerhalb eines gewissen Zeitintervalls immmer einmal alle auslesen. Das setzt dir eine untere Grenze. Im Prinzip kannst du natürlich auch für jeden Sensor den SPI-Takt umschalten. Aber das fügt dem Ganzen zusätzliche Komplexität hinzu, die man vielleicht vermeiden wollen würde. Und 840kHz ist ja nun auch nicht direkt langsam. Das liegt im Mittelwellen-Bereich. Wenn du das nicht kennst, frag deine Eltern. Die haben da noch Radio drüber gehört. [1] Ohne jetzt dem SAMD genau zu kennen: das Taktmanagement der Cortex-M sieht meist so aus, daß man einen Master-Takt (HSE, HSI) von typisch 8MHz hat. Den kann man teilen und/oder vervielfachen (per PLL) zu einem IO-Takt. Und von jenem IO-Takt kann man ganzzahlige Teile dann als Takt für IO-Einheiten (Timer, UART und eben SPI) verwenden.
Axel S. schrieb: > In der Tat sehr dumm. SPI hat nämlich gar keine Baudrate. Diese Aussage ist in der Tat sehr dumm. Auch wenn es bei SPI nicht üblich ist hat auch SPI eine Baudrate wie sie jede digitale Signalübertragung hat. Und wie bei z.B. dem UART oder RS232 entspricht die Baudrate der Taktfrequenz, das ist aber nicht zwingend, es gibt auch Übertragungsarten, da wird pro Taktfrequenz mehr als ein Zeichen übertragen ;)
Also zum SAMD21: - Der hat etliche Taktgeneratoren, bei denen man die Oszillatorfrequenz schon herunter teilen kann. Oder man nimmt den ClockGen, der schon auf eine bestimmte Frequenz eingestellt ist. - Die SPI (u.a.) bekommt ihren Takt von einem dieser ClockGen. Das geschieht über die Einstellung des Peripheral Mux - Die ClockGen-Frequenz muss mindestens das doppelte des gewünschten SPI-Taktes sein...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.