Skocz do zawartości

[STM32] Ile wycisnęliście z gpio?


Pomocna odpowiedź

Napisano

W zależności od użytego procesora można uzyskać 50/100MHz na gpio. Udało się komuś tyle wycisnąć z stm32?

Jakie są wasze maksymalne osiągi? Ja próbowałem i maksymalnie idzie do 12mhz...

ale za mało info podałeś, żeby móc to jakoś przyrównać: jaki procek, jaki kod?

ogólnie chodzi mi o stm32. Ja uzywam stm32f10x taktowanym na 72mhz. Zgodnie z dokumentacją maksymalnie można uzyskać do 18mhz na gpio... ciekaw jestem w jaki sposób 🙂

To słabe te STM32 są, jestem zawiedziony, a miały być szybsze od 8-bitowców. Tymczasem nawet najbiedniejszy attiny26 potrafi machać nóżkami z częstotliwością 85Mhz... 😉
Pewnie w teorii. Jakiś dowód na potwierdzdenie tej tezy?

flasher, 12MHz to całkiem niezły wynik. Mam pod ręką tylko nucleo z 64MHz na RC, maksimum ile na tym osiągam to jakieś 16MHz - więc przy 72 powinno być 18.

To słabe te STM32 są, jestem zawiedziony, a miały być szybsze od 8-bitowców. Tymczasem nawet najbiedniejszy attiny26 potrafi machać nóżkami z częstotliwością 85Mhz... 😉
Pewnie w teorii. Jakiś dowód na potwierdzdenie tej tezy?

Z noty katalogowej:

The PLL is locked on the RC oscillator and adjusting the RC oscillator via OSCCAL register will adjust the fast

peripheral clock at the same time. However, even if the RC oscillator is taken to a higher frequency than 8 MHz,
the fast peripheral clock frequency saturates at 85 MHz (worst case) and remains oscillating at the maximum frequency.

Osobiście tego nie testowałem, bo wymaga to zewnętrznego źródła zegara o częstotliwości trochę powyżej 10Mhz (PLL w attiny zwielokratnia 8-krotnie), ale z powodzeniem testowałem na attiny85 to: http://www.technoblogy.com/show?QVN -- co przy 8Mhz wewnętrznym oscylatorze daje 64Mhz, co też jest niezłym wynikiem.

Podejrzewam, że taki NE555 to potrafi nawet jeszcze szybciej!

Dlatego na samym początku pytam o kod. Z drugiej strony - co daje test "wyciskania" jak największej prędkości zmiany GPIO? Do czego potrzebujemy takie coś?

64MHz? W przepadku przetwornic, gdzie modulujemy oprócz wypełnienia częstotliwość te zmiany częstotliwści muszą być dokładne, dla zmiany co cykl przy zegarze 64MHz mamy 32MHz zmiany, gdy zwiększymy do 2 "tyknięć" licznika mamy ~21 za duża zmiana częstotliwości - niezbytdo wykorzystania w przetwornicach. Amatorskie sterowane z procka raczej nie wjadą w megaherce.

Autor podaje "szybkość migania diodą" jako wyznacznik wyższości jednych procków nad innymi a to totalnie nie o to chodzi i oczywiście, że specjalizowane układy sobie z tym lepiej poradzą

64MHz? W przepadku przetwornic, gdzie modulujemy oprócz wypełnienia częstotliwość te zmiany częstotliwści muszą być dokładne, dla zmiany co cykl przy zegarze 64MHz mamy 32MHz zmiany, gdy zwiększymy do 2 "tyknięć" licznika mamy ~21 za duża zmiana częstotliwości - niezbytdo wykorzystania w przetwornicach.

Nikt ci ni każe robić co tyknięcie. Właśnie wysoka częstotliwość zegara daje ci dużą precyzję ustawiania wypełnienia. Oczywiście częstotliwość samego PWM musi być wtedy proporcjonalnie mniejsza.

W tym przykładzie, który podałeś z attiny jest co tyknięcie - stąd ta wysoka częstotliwość - im bardziej dokładnie chcemy regulować wypełnienie tym bardziej spada. Stąd moja odpowiedź była do przydatności tego kodu w przetwornicach - się nie nada do przetwornic, bo generuje zawsze 50% wypełnienie.

Spójrz na ten kod jeszcze raz. Tam są dwa timery -- jeden wolny, akustyczny, co tyknięcie, który steruje wypełnieniem drugiego, szybkiego, który jest co 256 tyknięć. W ten sposób dostajesz (po dodaniu pojemności na wyjściu) sygnał o zadanym kształcie. W przypadku przetwornicy oczywiście nie miałbyś tego pierwszego timera, a wyłącznie ten drugi o wysokiej częstotliwości.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...