STM32F103 - I2C über DMA Gyro Sensor

Gast #4762249
Lesenswert?

Hallo,

hat jemand vielleicht ein Beispeil für eine I2C Auslesung, die per DMA 
zyklisch rotierend passiert? Basierend auf den StdPeriph Libs!

Ich würde gern einen Gyrosensor (kenne bisher nur den ADXL345) auslesen, 
der rund 20 Register hat. Denke mal die liest man einfach in einem 
Rutsch ein, ohne jedes neu zu adressieren und legt sie einem Array ab. 
Ich weiss nur noch nicht wie ich das triggern soll? Per Timer? Ideal 
wäre ein ununterbrochenes Auslesen des Chips.

Falls jemand eine bessere Empfehlung für einen Gyro Chip hat, gern auch 
mit Kompass wäre das natürlich auch gut.


Gruss,
Christian
#4764274
Lesenswert?

Du hast Dich ja noch nichtmal für einen konkreten Chip entschieden, und 
wir kennen Deine Anforderungen nicht.

Außerdem haben die Dinger normalerweise einen konfigurierbaren "habe 
fertich" Pin. Dass Du das nicht aus dem Datenblatt auslesen konntest 
lässt dann doch tief blicken.

Es gibt bei den Distributoren eine parametrische Suchfunktion, 
vielleicht haste die auch noch nicht gefunden...
Gast #4764277
Lesenswert?

Jim M. schrieb:
> Du hast Dich ja noch nichtmal für einen konkreten Chip entschieden, und
> wir kennen Deine Anforderungen nicht.

Da du nicht der Sprechers des µCNets bist, solltest du ich schreiben 
statt wir. Der Rest deines Beitrags taugt auch nichts und ist ziemlich 
pöbelhaft.
Gast #4764294
Lesenswert?

Christian J. schrieb:
> Denke mal die liest man einfach in einem
> Rutsch ein, ohne jedes neu zu adressieren und legt sie einem Array ab.
Warum? Brauchst Du ständig alle 20 Werte neu?

> Ich weiss nur noch nicht wie ich das triggern soll?
Normal macht das der Sensor. Wenn die Werte bereit stehen bekommst Du 
einen Interupt und liest die Werte die Du brauchst.
Warum willst Du ständig Werte einlesen, die sich nicht geändert haben?

Christian J. schrieb:
> Ideal wäre ein ununterbrochenes Auslesen des Chips.
Nein, ideal ist ein Auslesen wenn der Chip neu gemessen hat. Wenn es 
dumm läuft sind die Werte zwischen den Messungen nicht gültig und Du 
bekommst nur Unsinn.
Gast #4764300
Lesenswert?

Horst schrieb:

> Christian J. schrieb:
>> Denke mal die liest man einfach in einem
>> Rutsch ein, ohne jedes neu zu adressieren und legt sie einem Array ab.
> Warum? Brauchst Du ständig alle 20 Werte neu?

Hallo,

ich möchte eine kleine Kopterplattform bauen, quasi nur EuroPlatine und 
4 Motoren mit ESC dran. Für die PID Regler brauche ich alle Werte immer 
so schnell wie möglich, also maximale Rate so dass sie zur Berechnung 
zur Verfügung stehen. Den ADXL345 kenne ich sehr gut, den Mp6050 bisher 
nicht, der deutlich komplexer ist.


>> Ich weiss nur noch nicht wie ich das triggern soll?
> Normal macht das der Sensor. Wenn die Werte bereit stehen bekommst Du
> einen Interupt und liest die Werte die Du brauchst.
> Warum willst Du ständig Werte einlesen, die sich nicht geändert haben?

Ok, also per FIFO Interrupt.

> Christian J. schrieb:
>> Ideal wäre ein ununterbrochenes Auslesen des Chips.
> Nein, ideal ist ein Auslesen wenn der Chip neu gemessen hat. Wenn es
> dumm läuft sind die Werte zwischen den Messungen nicht gültig und Du
> bekommst nur Unsinn.
Gast #4766791
Lesenswert?

Hallo,

ist es überhaupt möglich einen DMA Trigger per Pin-Change zu erzeugen? 
Ich finde da leider nicht drüber im Manual des F103. Würde jetzt erstmal 
den Umweg gegen den INT Pins des Sensors (Fifo full) auf einen 
Pin_Change INT der CPU zu verzweigen und in deren ISR den DMA Trigger 
manuell anstossen.
Denn CPU Zeit will ich mit dem Auslesen was mit 400Hz passiert nicht 
verbraten.

Hat da schonmal jemand was in der Richtugn gemacht?

Christian

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