SPI CPOL CPHA
Moderator: Guido Körber
-
- Posts: 12
- Joined: Mon Mar 26, 2007 12:25 pm
- Location: Berlin
SPI CPOL CPHA
Liebe Gemeinde,
ich habe zwei SPI Slaves, die ich gern mit einem IOWarrior als SPI Master ansteuern will. Leider verlangt - bei sonst identischen Parametern- der eine CPHA=0, der andere CPHA=1 (beim Iow24, beim Iow56 ist es umgekehrt).
Hat jemand ne Idee, wie ich mit 'nem Hard- oder Softwaretrick beide gleichzeitig zum laufen bekomme?
Vielen Dank, Uwe
ich habe zwei SPI Slaves, die ich gern mit einem IOWarrior als SPI Master ansteuern will. Leider verlangt - bei sonst identischen Parametern- der eine CPHA=0, der andere CPHA=1 (beim Iow24, beim Iow56 ist es umgekehrt).
Hat jemand ne Idee, wie ich mit 'nem Hard- oder Softwaretrick beide gleichzeitig zum laufen bekomme?
Vielen Dank, Uwe
Hallo Uwe,
ich befürchte, da gibt es keinen tollen Trick. Wenn es das timing erlaubt macht man wohl:
Und dann würde sich CodeMercs bestimmt auch freuen, wenn Du einfach zwei IOWarrior verwendest um jedes Geräte getrennt anzusteuern :-)
Eberhard
ich befürchte, da gibt es keinen tollen Trick. Wenn es das timing erlaubt macht man wohl:
- loop :
- SPI für Gerät A initialisieren
Gerät A ansteuern
SPI aus
SPI für Gerät B initialisieren
Gerät B ansteuern
SPI aus
- SPI für Gerät A initialisieren
Und dann würde sich CodeMercs bestimmt auch freuen, wenn Du einfach zwei IOWarrior verwendest um jedes Geräte getrennt anzusteuern :-)
Eberhard
-
- Posts: 12
- Joined: Mon Mar 26, 2007 12:25 pm
- Location: Berlin
Hallo Eberhardt,
danke für die schnelle Meldung.
Die von Dir vorgeschlagenen Lösungen sind mir auch schon eingefallen:
- Modus umschalten geht nicht, weils sonst zu langsam wird.
- zwei Iow's ist im Prinzip kein Problem, da ich aber mit den Entwicklerkits arbeite, brauchte ich dann zwei USB Kabel zum PC und das wäre dann wirklich nicht cool. Wenns nicht anders geht, löt ich halt noch einen zweiten Iow mit auf die Platine.
- Das Bauteil entsprechend aussuchen, klingt gut, ist aber auch nicht wirklich machbar. Erstens sind ja doch meist andere Parameter entscheidend und dann hab ich festgestellt, dass die Angaben zu CPHA in den Datenblättern entweder ganz fehlen oder zumindest unklar sind. Bei den beiden Käfern, die ich gerade benutzen will (AD7731 und DAC8532), ist jeweils ein Bsp. für die Kommunikation mit einem 68HC11 angegeben und in beiden Datenblättern steht:"The 68HC11 is configured in the master mode with its CPOL bit set to a logic zero and its CPHA bit set to a logic one" :-( Doof ist nur, Analog Device haben die Notation des Iow24, Burr Brown die des Iow56 - da sitzte da und guckst!
Da sich die beiden Modi durch das Timing beim Lesen/Schreiben unterscheiden, hatte ich gehofft, man könnte die Sache vielleicht mit einem Registerchip ein bisschen hinschieben.
Gruß, Uwe
danke für die schnelle Meldung.
Die von Dir vorgeschlagenen Lösungen sind mir auch schon eingefallen:
- Modus umschalten geht nicht, weils sonst zu langsam wird.
- zwei Iow's ist im Prinzip kein Problem, da ich aber mit den Entwicklerkits arbeite, brauchte ich dann zwei USB Kabel zum PC und das wäre dann wirklich nicht cool. Wenns nicht anders geht, löt ich halt noch einen zweiten Iow mit auf die Platine.
- Das Bauteil entsprechend aussuchen, klingt gut, ist aber auch nicht wirklich machbar. Erstens sind ja doch meist andere Parameter entscheidend und dann hab ich festgestellt, dass die Angaben zu CPHA in den Datenblättern entweder ganz fehlen oder zumindest unklar sind. Bei den beiden Käfern, die ich gerade benutzen will (AD7731 und DAC8532), ist jeweils ein Bsp. für die Kommunikation mit einem 68HC11 angegeben und in beiden Datenblättern steht:"The 68HC11 is configured in the master mode with its CPOL bit set to a logic zero and its CPHA bit set to a logic one" :-( Doof ist nur, Analog Device haben die Notation des Iow24, Burr Brown die des Iow56 - da sitzte da und guckst!
Da sich die beiden Modi durch das Timing beim Lesen/Schreiben unterscheiden, hatte ich gehofft, man könnte die Sache vielleicht mit einem Registerchip ein bisschen hinschieben.
Gruß, Uwe
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Zwei USB-Geraete an einem USB-Kabel ist schlicht unmoeglich.uwe.haertel wrote: - zwei Iow's ist im Prinzip kein Problem, da ich aber mit den Entwicklerkits arbeite, brauchte ich dann zwei USB Kabel zum PC und das wäre dann wirklich nicht cool. Wenns nicht anders geht, löt ich halt noch einen zweiten Iow mit auf die Platine.
Da bleibt wirklich nur passende Chips zu suchen. SPI-Chips gibt es doch oft auch fuer IIC. Das waere vielleicht eine andere Moeglichkeit zwei Peripherie-Chips am IOWarrior zum Laufen zu bringen.
AD7731 CMOS, Low Noise 24-Bit Sigma-Delta ADC with Fast Channel-Channel Settling Time
DAC8532: Dual-Channel, Low-Power, 16-Bit, Serial-Input D/A Converter
Ich versteh ja nicht viel davon, aber das klingt verdaechtig. Guido soll mal was dazu sagen.
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Also extern hinter dem IO-Warrior kann man da nichts mehr machen. Wenn es CPOL wäre, könnte man ja einfach einen Inverter reinschalten, aber bei CPHA geht garnichts.
Allerdings geht das Umkonfigurieren etwas schneller als hier angesprochen: Man muss die SPI Funktion nicht abschalten, einfach ein neues Kommando zum Einschalten der Funktion mit der anderen CPHA Einstellung reicht. Das kostet dann nur einen Zugriff und da dabei ja nicht mal etwas vom IO-Warrior zurückgelesen werden muss ist das bei UHCI Hosts in 3ms durch und bei OHCI sogar in 0,3ms.
Allerdings geht das Umkonfigurieren etwas schneller als hier angesprochen: Man muss die SPI Funktion nicht abschalten, einfach ein neues Kommando zum Einschalten der Funktion mit der anderen CPHA Einstellung reicht. Das kostet dann nur einen Zugriff und da dabei ja nicht mal etwas vom IO-Warrior zurückgelesen werden muss ist das bei UHCI Hosts in 3ms durch und bei OHCI sogar in 0,3ms.
Cool, das gehört sicher bei der nächsten Revision mit ins Datenblatt.Guido Körber wrote: Allerdings geht das Umkonfigurieren etwas schneller als hier angesprochen: Man muss die SPI Funktion nicht abschalten, einfach ein neues Kommando zum Einschalten der Funktion mit der anderen CPHA Einstellung reicht.
Wenn es nicht anders machbar ist, OKDas Bauteil entsprechend aussuchen, klingt gut, ist aber auch nicht wirklich machbar.
Aber wenn man auf der Seite http://www.mct.de/faq/spi.html ganz nach unten scrollt, findet man oft doch einige Alternativen zu dem was man sich ausgedacht hatte. (Soll nur mal ein allgemeiner Tipp zu SPI-devices sein.)
Eberhard
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
-
- Posts: 12
- Joined: Mon Mar 26, 2007 12:25 pm
- Location: Berlin
Danke allerseits!
Also für zukünftige Projekte werde ich mich wohl auch mal nach Bausteinen mit IIC Inteface umschauen. Beim DAC sollte das gehen (Problem ist, die Bausteine sollen galvanisch vom Master getrennt sein. Das wirft bestimmt beim IIC Probleme auf, wenn bidirektional gearbeitet werden soll)
Zunächst werde ich aber den Tip von Guido umzusetzen. Dazu muss ich allerdings ein meine Software ein bisschen umfriemeln. Wird ein wenig dauern.
@ Robert: Muss 24 Bit sein - Temperaturmessung von 4 - 1300 K in einem Rutsch. Aber der AD7731 ist ein Lieber, mit dem arbeite ich seit Jahren gern zusammen (Was man nicht über jeden Kollegen sagen kann ;-)
Gruß, Uwe
Also für zukünftige Projekte werde ich mich wohl auch mal nach Bausteinen mit IIC Inteface umschauen. Beim DAC sollte das gehen (Problem ist, die Bausteine sollen galvanisch vom Master getrennt sein. Das wirft bestimmt beim IIC Probleme auf, wenn bidirektional gearbeitet werden soll)
Zunächst werde ich aber den Tip von Guido umzusetzen. Dazu muss ich allerdings ein meine Software ein bisschen umfriemeln. Wird ein wenig dauern.
@ Robert: Muss 24 Bit sein - Temperaturmessung von 4 - 1300 K in einem Rutsch. Aber der AD7731 ist ein Lieber, mit dem arbeite ich seit Jahren gern zusammen (Was man nicht über jeden Kollegen sagen kann ;-)
Gruß, Uwe
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Entschuldigung 2 mal ganz Off-Topic aber wüsste ich gerne mal...
A: ernsthaft : mit was für Sensoren misst man Temperaturen < 200 K
B: nicht so ernsthaft :Wofür braucht man dabei eine Auflösung von 0.0007 Grad (wenn ich richtig gerechnet habe). Hört sich ein wenig nach Welt der Wunder" an ;-)
Reicht bei dem Messbereich nicht doch auch 12 Bit Auflösung entsprechend 0,318 Grad/bit
Eberhard
A: ernsthaft : mit was für Sensoren misst man Temperaturen < 200 K
B: nicht so ernsthaft :Wofür braucht man dabei eine Auflösung von 0.0007 Grad (wenn ich richtig gerechnet habe). Hört sich ein wenig nach Welt der Wunder" an ;-)
Reicht bei dem Messbereich nicht doch auch 12 Bit Auflösung entsprechend 0,318 Grad/bit
Eberhard
-
- Site Admin
- Posts: 2879
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
PT100 sollten das schaffen können.
Der A/D Bereich wird wohl nicht gleich dem Dynamikbereich des Sensors sein. Da gibt es dann natürlich verschiedene Ansätze, entweder man nimmt eine deutlich höhere Auflösung des Wandlers oder baut einen entsprechenden Verstärker davor.
Bei dem was hochauflösende Wandler heutzutage kosten kann es günstiger sein eine höhere Auflösung zu wählen statt einen mit Tolaranzen behafteten Verstärker zu bauen.
Der A/D Bereich wird wohl nicht gleich dem Dynamikbereich des Sensors sein. Da gibt es dann natürlich verschiedene Ansätze, entweder man nimmt eine deutlich höhere Auflösung des Wandlers oder baut einen entsprechenden Verstärker davor.
Bei dem was hochauflösende Wandler heutzutage kosten kann es günstiger sein eine höhere Auflösung zu wählen statt einen mit Tolaranzen behafteten Verstärker zu bauen.
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Da war Wayoda schneller. 7,7247624233223452164140472658901e-5 sagt der Windows Rechner aka 1296 / FFFFFF, also 0,00007 Kelvin Aufloesung.uwe.haertel wrote: @ Robert: Muss 24 Bit sein - Temperaturmessung von 4 - 1300 K in einem Rutsch. Aber der AD7731 ist ein Lieber, mit dem arbeite ich seit Jahren gern zusammen (Was man nicht über jeden Kollegen sagen kann ;-)
Gibt es ueberhaupt Temperatursensoren die das ueber den Temperaturbereich bringen?
Das Messen von Temperaturen ist eigentlich auch nicht zeitkritisch. Wie oft soll denn gemessen werden?
-
- Posts: 12
- Joined: Mon Mar 26, 2007 12:25 pm
- Location: Berlin
Hallo Eberhard,
darüber könnte ich Dir jetzt ne ganze Vorlesung halten, oder auch zwei. Nur soviel:
Wir messen hier aus verschiedenen Gründen mit Thermoelementen, was für tiefe Temperaturen eigentlich schlecht ist, da die Thermospannung dann sehr stark nachlässt (Typ K ~40 µV/K bei 300K, ~1µV/K bei 10K).
Der AD7731 hat einen eingebauten Vorverstärker, dadurch kann man den Sensor direkt anschließen (natürlich mit cold junction compensation). Außerdem ist ein Chopper integriert, der den Drift klein hält. Schließlich sind 24 Bit Auflösung nicht zu verwechseln mit 24 Bit Genauigkeit. Ich gehe bei meiner Schaltung und in dem Modus (80 mV Range, 17ms samplerate) von max 18 sinnvollen Bit aus. Das Thermoelement selber hat natürlich noch einen viel größeren Fehler im Bezug auf die Normalwerte, aber das kann man in situ eichen.
Vieleicht erstmal soviel dazu, Uwe
darüber könnte ich Dir jetzt ne ganze Vorlesung halten, oder auch zwei. Nur soviel:
Wir messen hier aus verschiedenen Gründen mit Thermoelementen, was für tiefe Temperaturen eigentlich schlecht ist, da die Thermospannung dann sehr stark nachlässt (Typ K ~40 µV/K bei 300K, ~1µV/K bei 10K).
Der AD7731 hat einen eingebauten Vorverstärker, dadurch kann man den Sensor direkt anschließen (natürlich mit cold junction compensation). Außerdem ist ein Chopper integriert, der den Drift klein hält. Schließlich sind 24 Bit Auflösung nicht zu verwechseln mit 24 Bit Genauigkeit. Ich gehe bei meiner Schaltung und in dem Modus (80 mV Range, 17ms samplerate) von max 18 sinnvollen Bit aus. Das Thermoelement selber hat natürlich noch einen viel größeren Fehler im Bezug auf die Normalwerte, aber das kann man in situ eichen.
Vieleicht erstmal soviel dazu, Uwe
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
"kalibrieren" :-)uwe.haertel wrote: aber das kann man in situ eichen.
Nein, mehr dazu. Wir sind neugierig was das den fuer ein Aufbau ist und worum es genau geht.uwe.haertel wrote:Vieleicht erstmal soviel dazu, Uwe
Fuer den IOWarrior gibt es ja schon die eine oder andere Anwendung in der Wissenschaft wie dies hier http://www.awi-bremerhaven.de/TT/LRM/index-d.html
Diese Anwendung klingt mindestens ebenso interessant.