MS5534 via SPI an PIC16F877A

OP (Firma: studi) #809477
Lesenswert?

Servus und Hallo,

ich habe mal wieder ein Problem, mit dem ich allein nicht mehr zu Rande 
komme...
Ich versuche einen Drucksensor MS5534 mit dem PIC16F877A via SPI zu 
verbinden. Das Ganze habe ich auf dem PICDEM2 PLUS Board aufgebaut

Hier das Datenblatt des MS5534B
http://www.amsys.de/sheets/amsys.de.ms5534b(e).pdf

Nun ja der Sensor macht das "Verbinden" nicht gerade einfach. Der MS5534 
verträgt maximal 3,6 Volt als VDD, sowie an den Pins. Also bin ich her 
gegangen und habe mir die 5 Volt die ich vom Board bekomme via 
Widerstand und Z-Diode auf 3,3 Volt runtergeregelt. Bei den Pins, die 
als Eingänge für den Drucksensor dienen habe ich Spannungsteiler 
eingesetzt, um von 5 Volt auf 3,3 zu kommen und bei dem Ausgang des 
Sensors habe ich keine Beschaltung gewählt, da der PIC die 3,3 Volt als 
HIGH interpretieren sollte.


Was soll ich sagen, die Kommunikation funktioniert nicht und ich weiß 
nicht woran es liegt.

Hier noch mein Code: Ich versuche mittlerweile lediglich ein Calibration 
Word zu empfangen....

Und noch zur Beschaltung:
Ich verbinde
PIC_PIN_RC3_SCL mit SENSOR_PIN_SCLK
PIC_PIN_RC4_SDI mit SENSOR_PIN_DOUT
PIC_PIN_RC5_SDO mit SENSOR_PIN_DIN

So und jetzt kommt’s. Der Drucksensor braucht noch eine zusätzliche 
Clock von 30 bis 35 kHz (MCLK). Ich habe einen Uhrenquarz auf dem Board 
der mit RC0 und RC1 verbunden ist. Ich greife mir wahlweise an RCO bzw. 
RC1 die Clock ab, da ich mir nicht sicher bin an welchen Pin diese muss 
und ob das überhaupt funktioniert.
VDD_BOARD über "Widerstands-Z-Dioden-Teiler" an VDD_Sensor.
GND_BOARD an GND_SENSOR

Ich beschäftige mich das erste Mal mit dem SPI Modus... I2C habe ich 
schneller zum laufen gebracht.

Ich habe die Signal mit dem Oszi überprüft... Das Senden scheint zu 
funktionieren... allerdingt ist der Ausgang von Sensor immer auf Null. 
Brauche ich vielleicht noch Pull Up Widerstände?

Vielen Dank für die Hilfe

Gruß Daniel
#809898
Lesenswert?

Daniel Nachname wrote:
> Ich greife mir wahlweise an RCO bzw. RC1 die Clock ab,
> da ich mir nicht sicher bin an welchen Pin diese muss
> und ob das überhaupt funktioniert.

Ich mir auch nicht. Kann es sein, dass der Oszillator zu stark gedämpft 
wird?
Hast Du ein Oszilloskop um den Takt anzuschauen?

Alternativ könntest Du vielleicht den Takt für den Sensor mit einem 
Timer im PIC erzeugen.
Gast #811483
Lesenswert?

Wahnsinn,

es wird doch irgend einen PIC-Menschen geben, der sich bereits mit SPI 
auseinander gesetzt hat oder etwa nicht?

Ich bin mittlerweile so weit, dass der MS5534 zumindest ab und an mal 
ein HIGH auf den Ausgang legt
#811499
Lesenswert?

Nicht verzweifeln.

Wie singt Jimmy Cliff so schön:
You can get it if you really want
But you must try, try and try
Try and try, you'll succeed at last

Du musst das Problem schrittweise eingrenzen:
Versuch doch mal, irgend ein einfaches 5V SPI-Device anzusprechen, z.B. 
ein Flash oder so.
Wenn das gelingt, ist Dein Code wohl ok.
Dann kannst Du ein 3.3V Device versuchen. Wenn das auch gelingt, ist 
Dein Levelshifter wohl ok.
Dann könnte ja der MS5534 kaputt sein, oder er erfordert eine spezielle 
Initialisierung oder so.

Hast Du ein Oszilloskop? Dann könntest Du sehen, was der PIC sendet und 
was der MS5534 zurückmeldet.

Sonst gibt es von Microchip den PICkit Serial Analyzer (oder so 
ähnlich). Mit dem kannst Du vom PC aus via USB mit einem SPI (oder I2C, 
oder UART) Device kommunizieren.
OP (Firma: studi) #816475
Lesenswert?

Schon mal Danke...

Ich bin jetzt dazu Umgeschwungen, eine neue Platine aufzubauen... Alles 
mit 3,6 Volt.
Gesendet wird auch wunderbar, das hab ich mit dem Oszi überprüft...
Aber Antwort bekomme ich von dem Sensor immer noch nicht. Immerhin setzt 
er mittlerweile ab und an den Ausfang auf High.

Für SPI brauche ich keine Pullup Widerstände oder?
Kann jemand bestätigen, dass ich keine MCLK brauche um die Calib Words 
zu lesen?

Gruß
OP (Firma: studi) #831659
Lesenswert?

Servus,

also ich hänge nach wie vor an meinem Drucksensorproblem.

Ich kann mittlerweile die Calib-Words lesen und die Ergebnisse passen 
auch zur Applikation Note. Einzig C3 ist etwas für den max Wert mit 865.

Wenn ich nun aber die Temperatur berechne bekomme ich einen wilden Wert 
raus, der nicht stimmt bzw. nicht stimmen kann. Also ich rechne zu Fuß 
mit dem Taschenrechner nach.

Ich brauchte da mal Hilfe. Mir erscheint der gemessene Wert für die 
Temperatur also das WORD D2 mit rund 13000 und der Druck mit einem Wert 
von rund 9000 zu gering. Im Datenblatt kann ich lesen, dass ein 
Typischer Wert für die Termperatur von 22500 und für den Druck von rund 
17000 gemessen werden soll. Hmpf und jetzt?

Ich habe langsam keinen Plan mehr!

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren