Hi, ich brauche dringend Hilfe! Ich muss zwei VL6180X Sensoren mit einem STM32F100RB verbinden. Die Kommunikation soll über den I2C Bus laufen. Die notwendigen Datenblätter-Seiten der I2C Kommunikation vom Microcontroller und Sensor sind angefügt. Für die Sensoren nochmal zusätzlich das ganze Datenblatt. Beide Sensoren sollen Gesten wahrnehmen und später eine Rechts- und eine Linksbewegung unterscheiden können. Dieses wird auf einem Display ausgegeben. Die Unterscheidung und die Displayausgabe traue ich mir später schon noch selber zu. Mit einem Display habe ich bereits gearbeitet. Jedoch scheitert es an der I2C Konfiguration. Ich habe leider noch nie vorher mit einem I2C Bus gearbeitet und bin ein bisschen überfordert. Könnt ihr mir da weiterhelfen? Auch würde ich gerne wissen, wie ihr die Sensoren abfragen würdet. a) Polling Mode b) Interrupt Mode Arbeitet der Microcontroller im Master oder im Slave Modus? Bei Polling ist das eindeutig, Master. Aber lässt sich mit Polling diese zwei Sensoren überhaupt auswerten? Schließlich frägt er beide hintereinander zyklisch ab und was ist, wenn in dem Moment meine Bewegung schon abgeschlossen ist oder der falsche Sensor zuerst "true" zurückliefert? Daher würde ich mit Interrupts arbeiten. Sobald einer von beiden Sensoren eine Bewegung wahrnimmt, wird einer von zwei möglichen Interrupts ausgelöst. Dieser wird mit einem Timer wieder verlassen. Falls vor Ablauf des Timers der zweite Sensor einen Signalwert bekommt, löst das dann eine Display-Ausgabe aus. So irgendwie von der Idee her. Oder würdet ihr anders vorgehen? Dennoch: die Konfiguration ist für mich erst einmal das Wichtigere. Was brauche ich alles? Und wie muss ich später mit den verschiedenen Registern arbeiten? Config? Control? Data-Register? Welche brauche ich einmalig, welche permanent, welche gar nicht. Ich blicke irgendwie nicht ganz so durch. Danke schon mal im Voraus!
Da empfehle ich zuerst mal beim "Erfinder" des I2C-Busses nachzulesen: http://www.nxp.com/documents/user_manual/UM10204.pdf
Hi, STM32F100RB kann 2xI2C ->doppelter Durchsatz "Range Interrupt mode" hört sich für Gestensteuerung gut an. Für die STMs gibt es doch die Peripherie-Lib und Examples. Such doch mal "P-NUCLEO-6180X1" oder "Proximity Sensors Software" bei st.com Da gibt es die SW zum Download für STM32F401RE, also fast das selbe :-) Ansonsten freut sich deren Support über Anfragen (auch für das Evalkit zum Spielen). VG gleiser
Michael schrieb: > Arbeitet der Microcontroller im Master oder im Slave Modus? Wie (fast?) alle anderen Sensoren auch, ist der ein I²C Slave, d.h. der Mikrocontroller muss Master sein. Michael schrieb: > Daher würde ich mit Interrupts arbeiten. Davon würde ich abraten... Bei den alten STM32 Mikrocontrollern (STM32F1, F2, F4) ist die asynchrone Nutzung der I²C Peripherie mit Interrupts extrem kompliziert. Bei den neuen (F3, F7, L0, L1) geht das viel einfacher, da wäre das für einen I²C-Anfänger machbar. Daher würde ich dir raten das synchron mit den diversen Busy-Waiting-Funktionen der HAL/SPL zu machen. Das Auslösen der Übertragung kannst du natürlich trotzdem noch mit dem Interrupt Modus des Sensors machen. Ich sehe jetzt erst: Es gibt sogar direkt von ST eine Library für den Sensor (na sowas). Benutz die doch einfach: http://www.st.com/resource/en/product_presentation/vl6180x_api_integrationguide.pdf
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.