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
Servus, mir würde auch schon ein Beispiel-Code für SPI langen... Gruß
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.
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
Servus, kennt sich denn keiner in Sachen SPI oder gar mit dem Sensor aus?! gruß
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
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.
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ß
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ß
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.