SPI CPOL CPHA

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

uwe.haertel
Posts: 12
Joined: Mon Mar 26, 2007 12:25 pm
Location: Berlin

SPI CPOL CPHA

Post by uwe.haertel »

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
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Hallo Uwe,
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
    goto loop:
Bei der Hardware ist es oft am einfachsten zu schauen ob ein anderer Hersteller nicht ein Gerät mit den gleichen Funktionen aber passenden Parametern anbietet.

Und dann würde sich CodeMercs bestimmt auch freuen, wenn Du einfach zwei IOWarrior verwendest um jedes Geräte getrennt anzusteuern :-)

Eberhard
uwe.haertel
Posts: 12
Joined: Mon Mar 26, 2007 12:25 pm
Location: Berlin

Post by uwe.haertel »

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
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

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.
Zwei USB-Geraete an einem USB-Kabel ist schlicht unmoeglich.
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.
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

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.
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

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.
Cool, das gehört sicher bei der nächsten Revision mit ins Datenblatt.
Das Bauteil entsprechend aussuchen, klingt gut, ist aber auch nicht wirklich machbar.
Wenn es nicht anders machbar ist, OK
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
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Muessen es eigentlich 24 Bit sein? Das klingt sehr anspruchsvoll.
uwe.haertel
Posts: 12
Joined: Mon Mar 26, 2007 12:25 pm
Location: Berlin

Post by uwe.haertel »

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
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Für IIC gibt es bei NXP (ehem. Philips Halbleiter) einige interessante Chips, unter anderem auch Treiber um längere Leitungen zu ermöglichen, da sollten auch welche mit galvanischer Trennung dabei sein.
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

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
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

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.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

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 ;-)
Da war Wayoda schneller. 7,7247624233223452164140472658901e-5 sagt der Windows Rechner aka 1296 / FFFFFF, also 0,00007 Kelvin Aufloesung.
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?
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Guido Körber wrote:PT100 sollten das schaffen können.
Ich hatte die Frage als ernsthaft markiert wegen < 200 K =Grad Kelvin !? (Aber war vielleicht ein Tippfehler im Beitrag?)

Ich denke bei -268 Grad Celsius ist der PT100 auch schon lange ein Supraleiter :-)


Eberhard
uwe.haertel
Posts: 12
Joined: Mon Mar 26, 2007 12:25 pm
Location: Berlin

Post by uwe.haertel »

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
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

uwe.haertel wrote: aber das kann man in situ eichen.
"kalibrieren" :-)
uwe.haertel wrote:Vieleicht erstmal soviel dazu, Uwe
Nein, mehr dazu. Wir sind neugierig was das den fuer ein Aufbau ist und worum es genau geht.
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.
Post Reply