Skocz do zawartości
flasher

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

Pomocna odpowiedź

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...

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
Share on other sites
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 🙂

Udostępnij ten post


Link to post
Share on other sites

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... 😉

Udostępnij ten post


Link to post
Share on other sites
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?

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites
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!

Udostępnij ten post


Link to post
Share on other sites

na tej attince jest użyty PWM, kolega który założył temat używa PWM, czy zwykłego GPIO, bo to trochę co innego

Udostępnij ten post


Link to post
Share on other sites

Jeśli kolega chce jak największą prędkość, a nie używa PWM albo DMA, to po prostu robi to źle i nie wykorzystuje sprzętu, który ma. Niestety nie napisał, więc nie wiemy.

Udostępnij ten post


Link to post
Share on other sites

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ś?

Udostępnij ten post


Link to post
Share on other sites

No ja dałem przykład kodu i praktycznego wykorzystania do generowania sygnału audio. Taki tani DAC. Przydaje się też do rzeczy typu przetwornice.

Udostępnij ten post


Link to post
Share on other sites

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ą

Udostępnij ten post


Link to post
Share on other sites
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.

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

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.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...