Forum: Mikrocontroller und Digitale Elektronik MS5534 via SPI an PIC16F877A


von Enrock J. (Firma: studi) (enrock)


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

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

Servus,

mir würde auch schon ein Beispiel-Code für SPI langen...

Gruß

von Severino R. (severino)


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.

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

Servus,

also der Takt MCLK wird nur für den ADC benötigt...
An sich müsste ich trotzdem die Calib. Words lesen können... Tut aber 
nicht

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

Servus,

kennt sich denn keiner in Sachen SPI oder gar mit dem Sensor aus?!

gruß

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

Argh das gibts doch gar nicht.

von Enrock (Gast)


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

von Severino R. (severino)


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.

von Enrock J. (Firma: studi) (enrock)


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ß

von Enrock J. (Firma: studi) (enrock)


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ß

von Enrock J. (Firma: studi) (enrock)


Lesenswert?

Muha ich habs endlich...
Da ist wohl ein Fehler in der AN510...

von Severino R. (severino)


Lesenswert?

Daniel Nachname wrote:
> Muha ich habs endlich...
> Da ist wohl ein Fehler in der AN510...

Und lässt Du uns auch an Deiner Einsicht teilhaben, oder müssen wir 
weiterhin zu den Unwissenden gehören?

von Berti (Gast)


Lesenswert?

Achtung, bei receive und transmit mit dem MS5534 wird auf 
unterschiedliche Flanken getriggert!

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
Noch kein Account? Hier anmelden.