Gast
#4867495
Hallo, ich bin zur Zeit damit beschäftigt eine Platine zu entwickeln. Dabei kommt ein STM32F4xx zum Einsatz. An Diesen werden über TIM2 bzw. TIM5 je ein Weggeber mit Quadratureencoder angeschlossen. Wenn ich in die eine Richtung drehe wird der Zähler grösser in die andere Richtung kleiner. Das QEI funktioniert anscheinend und ist wohl soweit richtig konfiguriert. Ich versuche gerade herauszufinden, wie schnell ich mich maximal bewegen darf, damit das QEI keine Impulse verpasst und ich immmernoch richtig rechnen kann. Die maximale Frequenz hängt im Wesentlichen von zwei Faktoren ab: 1) Wie schnell kann der Encoder noch saubere Rechtecke ausgeben? 2) Bis zu welcher Geschwindigkeit kann der STM32F4xx diese Rechtecke noch ohne Probleme interpretieren? Zu 1) gibt das Datenblatt des Encoders Auskunft. Bei 2) bin ich mir im Moment überhaupt nicht sicher und eventuell suche ich an der falschen Stelle oder es erschliesst sich mir gerade nicht. Meine 'Idee': Die maximale Frequenz hängt von der Einstellung des Registers TIMx_CCMR1->IC1F bzw. TIMx_CCMR1->IC2F ab. Prizipiell ergeben sich dann 3 Möglichkeiten: 1) keine Filterung (0) 2) abhängig von fck_int (1-3) 3) abhängig von fdts (4-16) Da fdts, abgesehen von einem Vorteiler (s. TIMx_CR1->CKD), gleich fck_int ist, kann 2) und 3) gleich betrachtet werden: Hier muss für mindestens N Pulse der entsprechenden Clocksource das Signal anliegen, bevor eine Änderung erkannt wird. Im schlimmsten Fall verpasst man gerade so den ersten Impuls. Aus diesem Grund sollte der Encoder mit maximal (f_clk/(N+1))Hz den Zustand wechseln. Für den 1) Fall, ohne Filterung, gilt prinzipiell das Gleiche. Für N muss man den Wert 1 annehmen (die Zustandsänderung muss ja wenigstens 1-mal gesehen werden). Laut Datenblatt gehören beide Timer zu APB1 (ich hab mir das durch das RCC_APB1ENR Register erschlossen. Würde mich freuen, wenn jemand einen Tipp hat wie man das einfacher erschliessen kann). STM32CubeMX sagt mir, dass die Timer in APB1 bei meiner Konfiguration mit 84MHz laufen. Wenn ich also keine Filterung vorsehe, wäre die Grenze bei (84MHz/(1+1))Hz = 42MHz zu sehen. Sollte man die Filter immer so stark wie möglich einstellen oder gibt es einen Grund warum eventuell gar ganz auf die Filterung verzichtet wird? Wenn ich weiss, dass der angeschlossene Weggeber mit maximal 300kHz arbeitet, gibt es dann einen Grund die Filterung nur auf 1MHz statt 300kHz einzuschränken? Vielen Dank im Vorraus. CU, Jay